#! /bin/sh # $Id: testCustomMDCPatterns 550 2007-05-22 16:45:22Z sfsetse $ MY_NAME=`basename $0` MY_PATH=`dirname $0` debug() { echo "${MY_NAME}:DEBUG $@" >&2; } DEBUG=${DEBUG:+'debug '} [ -z "${DEBUG}" ] && DEBUG=':' ${DEBUG} 'debugging enabled' APP_NAME='stdout' #------------------------------------------------------------------------------ # suite tests # testCustomDateMDC() { mdcDateFmt='+%Y.%m.%d' pattern='%X{mdcDate}' regex='^[0-9]\{4\}\.[0-9]\{2\}\.[0-9]\{2\}' # define custom logger_info function my_logger_info() { mdcDate=`date ${mdcDateFmt}` log INFO "$@" } # set the custom pattern appender_setPattern ${APP_NAME} ${pattern} appender_activateOptions ${APP_NAME} ${DEBUG} 'sending message using custom MDC pattern' result=`my_logger_info 'dummy'` matched=`echo ${result} |sed "s/${regex}//"` ${DEBUG} "dateFormat='${mdcDateFmt}' pattern='${pattern}' result='${result}' matched='${matched}'" assertNotNull \ "custom pattern '${pattern}' failed with empty result" \ "${result}" || return assertNull \ "custom pattern '${pattern}' output of '${matched}' did not match the regex '${regex}'" \ "${matched}" || return } testCustomTimeMDC() { mdcTimeFmt='+%H:%M:%S' pattern='%X{mdcTime}' regex='^[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}' # define custom logger_info function my_logger_info() { mdcTime=`date ${mdcTimeFmt}` log INFO "$@" } # set the custom pattern appender_setPattern ${APP_NAME} ${pattern} appender_activateOptions ${APP_NAME} ${DEBUG} 'sending message using custom MDC pattern' result=`my_logger_info 'dummy'` matched=`echo ${result} |sed "s/${regex}//"` ${DEBUG} "timeFormat='${mdcTimeFmt}' pattern='${pattern}' result='${result}' matched='${matched}'" assertNotNull \ "custom pattern '${pattern}' failed with empty result" \ "${result}" || return assertNull \ "custom pattern '${pattern}' output of '${matched}' did not match the regex '${regex}'" \ "${matched}" || return } testCustomUserHostMDC() { pattern='%X{USER}@%X{HOSTNAME}' regex='[A-Za-z0-9]*@[-.A-Za-z0-9]*' # set variables (if needed) if [ -z "${HOSTNAME:-}" ]; then HOSTNAME=`hostname` export HOSTNAME fi # set the custom pattern appender_setPattern ${APP_NAME} ${pattern} appender_activateOptions ${APP_NAME} ${DEBUG} 'sending message using custom MDC pattern' result=`logger_info 'dummy'` matched=`echo ${result} |sed "s/${regex}//"` ${DEBUG} "pattern='${pattern}' result='${result}' matched='${matched}'" assertNotNull \ "custom pattern '${pattern}' failed with empty result" \ "${result}" || return assertNull \ "custom pattern '${pattern}' output of '${matched}' did not match the regex '${regex}'" \ "${matched}" || return } #------------------------------------------------------------------------------ # suite functions # oneTimeSetUp() { resultFile="${__shunit_tmpDir}/result.dat" # load log4sh ${DEBUG} 'loading log4sh' LOG4SH_CONFIGURATION='none' . ./log4sh } setUp() { # reset log4sh log4sh_resetConfiguration # configure log4sh logger_setLevel INFO logger_addAppender ${APP_NAME} appender_setLayout ${APP_NAME} PatternLayout } tearDown() { rm -f "${resultFile}" } #------------------------------------------------------------------------------ # main # suite() { suite_addTest testCustomDateMDC suite_addTest testCustomTimeMDC suite_addTest testCustomUserHostMDC } # load and run shUnit ${DEBUG} 'loading shUnit' . ./shunit2