1f08c3bdfSopenharmony_ci#!/bin/bash 2f08c3bdfSopenharmony_ci# 3f08c3bdfSopenharmony_ci# Simple test driver: run test cases one by one, assuming test case 4f08c3bdfSopenharmony_ci# will not trigger panic or reboot. 5f08c3bdfSopenharmony_ci# 6f08c3bdfSopenharmony_ci# Copyright (C) 2008, Intel Corp. 7f08c3bdfSopenharmony_ci# Author: Huang Ying <ying.huang@intel.com> 8f08c3bdfSopenharmony_ci# 9f08c3bdfSopenharmony_ci# This file is released under the GPLv2. 10f08c3bdfSopenharmony_ci# 11f08c3bdfSopenharmony_ci 12f08c3bdfSopenharmony_cisd=$(dirname "$0") 13f08c3bdfSopenharmony_ciexport ROOT=`(cd $sd/../..; pwd)` 14f08c3bdfSopenharmony_ci 15f08c3bdfSopenharmony_ciexport driver=simple 16f08c3bdfSopenharmony_ci 17f08c3bdfSopenharmony_ci. $ROOT/lib/functions.sh 18f08c3bdfSopenharmony_cisetup_path 19f08c3bdfSopenharmony_ci. $ROOT/lib/dirs.sh 20f08c3bdfSopenharmony_ci. $ROOT/lib/mce.sh 21f08c3bdfSopenharmony_ci 22f08c3bdfSopenharmony_citmp_klog=$WDIR/simple_klog_tmp 23f08c3bdfSopenharmony_ci 24f08c3bdfSopenharmony_cichk_err() 25f08c3bdfSopenharmony_ci{ 26f08c3bdfSopenharmony_ci if [ \( -n "$DEBUG_MCE_TEST" \) -a \( -s $err_log \) ]; then 27f08c3bdfSopenharmony_ci cat $err_log 28f08c3bdfSopenharmony_ci fi 29f08c3bdfSopenharmony_ci} 30f08c3bdfSopenharmony_ci 31f08c3bdfSopenharmony_ciklog_begin() 32f08c3bdfSopenharmony_ci{ 33f08c3bdfSopenharmony_ci dmesg > $tmp_klog.1 34f08c3bdfSopenharmony_ci} 35f08c3bdfSopenharmony_ci 36f08c3bdfSopenharmony_ciklog_end() 37f08c3bdfSopenharmony_ci{ 38f08c3bdfSopenharmony_ci dmesg | sed -e '1d' > $tmp_klog.2 39f08c3bdfSopenharmony_ci diff $tmp_klog.1 $tmp_klog.2 | grep '^> ' | sed 's/> \(.*\)/\1/' > $klog 40f08c3bdfSopenharmony_ci} 41f08c3bdfSopenharmony_ci 42f08c3bdfSopenharmony_citrigger() 43f08c3bdfSopenharmony_ci{ 44f08c3bdfSopenharmony_ci reset_gcov 45f08c3bdfSopenharmony_ci 46f08c3bdfSopenharmony_ci $CDIR/$case_sh trigger 47f08c3bdfSopenharmony_ci} 48f08c3bdfSopenharmony_ci 49f08c3bdfSopenharmony_ciget_result() 50f08c3bdfSopenharmony_ci{ 51f08c3bdfSopenharmony_ci $CDIR/$case_sh get_result 52f08c3bdfSopenharmony_ci} 53f08c3bdfSopenharmony_ci 54f08c3bdfSopenharmony_citest_all() 55f08c3bdfSopenharmony_ci{ 56f08c3bdfSopenharmony_ci if [ -n "$GCOV" ]; then 57f08c3bdfSopenharmony_ci if chk_gcov; then 58f08c3bdfSopenharmony_ci export GCOV=copy 59f08c3bdfSopenharmony_ci export KSRC_DIR 60f08c3bdfSopenharmony_ci else 61f08c3bdfSopenharmony_ci echo "gcov is not supported by kernel or there is no " \ 62f08c3bdfSopenharmony_ci "gcov utility installed" 63f08c3bdfSopenharmony_ci echo "disabling gcov support." 64f08c3bdfSopenharmony_ci unset GCOV 65f08c3bdfSopenharmony_ci fi 66f08c3bdfSopenharmony_ci fi 67f08c3bdfSopenharmony_ci 68f08c3bdfSopenharmony_ci #if mce_inject is a module, it is ensured to have been loaded 69f08c3bdfSopenharmony_ci modinfo mce_inject > /dev/null 2>&1 70f08c3bdfSopenharmony_ci if [ $? -eq 0 ]; then 71f08c3bdfSopenharmony_ci lsmod | grep mce_inject > /dev/null 2>&1 72f08c3bdfSopenharmony_ci [ $? -eq 0 ] || modprobe mce_inject 73f08c3bdfSopenharmony_ci [ $? -eq 0 ] || die "module mce_inject isn't supported ?" 74f08c3bdfSopenharmony_ci fi 75f08c3bdfSopenharmony_ci 76f08c3bdfSopenharmony_ci for case_sh in $CASES; do 77f08c3bdfSopenharmony_ci for this_case in $($CDIR/$case_sh enumerate); do 78f08c3bdfSopenharmony_ci set_fake_panic 1 79f08c3bdfSopenharmony_ci 80f08c3bdfSopenharmony_ci export this_case 81f08c3bdfSopenharmony_ci mkdir -p $RDIR/$this_case 82f08c3bdfSopenharmony_ci rm -rf $RDIR/$this_case/* 83f08c3bdfSopenharmony_ci echo -e "\n$this_case:" | tee -a $RDIR/result 84f08c3bdfSopenharmony_ci klog=$RDIR/$this_case/klog 85f08c3bdfSopenharmony_ci 86f08c3bdfSopenharmony_ci mkdir -p $WDIR/$this_case 87f08c3bdfSopenharmony_ci rm -rf $WDIR/$this_case/* 88f08c3bdfSopenharmony_ci local err_log=$WDIR/$this_case/err_log 89f08c3bdfSopenharmony_ci 90f08c3bdfSopenharmony_ci klog_begin 91f08c3bdfSopenharmony_ci trigger 2>$err_log | tee -a $RDIR/result 92f08c3bdfSopenharmony_ci chk_err 93f08c3bdfSopenharmony_ci random_sleep 94f08c3bdfSopenharmony_ci klog_end 95f08c3bdfSopenharmony_ci get_result 2>$err_log | tee -a $RDIR/result 96f08c3bdfSopenharmony_ci chk_err 97f08c3bdfSopenharmony_ci $CDIR/$case_sh verify 2>$err_log | tee -a $RDIR/result 98f08c3bdfSopenharmony_ci chk_err 99f08c3bdfSopenharmony_ci 100f08c3bdfSopenharmony_ci set_fake_panic 0 101f08c3bdfSopenharmony_ci done 102f08c3bdfSopenharmony_ci done 103f08c3bdfSopenharmony_ci} 104f08c3bdfSopenharmony_ci 105f08c3bdfSopenharmony_ciif [ $# -lt 1 ]; then 106f08c3bdfSopenharmony_ci die "Usage: $0 <config>" 107f08c3bdfSopenharmony_cifi 108f08c3bdfSopenharmony_ci 109f08c3bdfSopenharmony_ciconf=$(basename "$1") 110f08c3bdfSopenharmony_ci 111f08c3bdfSopenharmony_ci. $CONF_DIR/$conf 112f08c3bdfSopenharmony_ci 113f08c3bdfSopenharmony_cidriver_prepare 114f08c3bdfSopenharmony_ciset_panic_on_oops 0 115f08c3bdfSopenharmony_ci 116f08c3bdfSopenharmony_ciif [ -n "$START_BACKGROUND" ]; then 117f08c3bdfSopenharmony_ci eval $START_BACKGROUND 118f08c3bdfSopenharmony_cielse 119f08c3bdfSopenharmony_ci start_background 120f08c3bdfSopenharmony_cifi 121f08c3bdfSopenharmony_ci 122f08c3bdfSopenharmony_ci[ -d $RDIR ] && mv $RDIR --backup=numbered -T $RDIR.old 123f08c3bdfSopenharmony_ci[ -d $WDIR ] && mv $WDIR --backup=numbered -T $WDIR.old 124f08c3bdfSopenharmony_ci 125f08c3bdfSopenharmony_citest_all 126f08c3bdfSopenharmony_ci 127f08c3bdfSopenharmony_ciif [ -n "$STOP_BACKGROUND" ]; then 128f08c3bdfSopenharmony_ci eval $STOP_BACKGROUND 129f08c3bdfSopenharmony_cielse 130f08c3bdfSopenharmony_ci stop_background 131f08c3bdfSopenharmony_cifi 132f08c3bdfSopenharmony_ci 133