Home | History | Annotate | Line # | Download | only in sysmon
t_swsensor.sh revision 1.7
      1  1.7    martin # $NetBSD: t_swsensor.sh,v 1.7 2013/04/14 16:07:46 martin Exp $
      2  1.1  pgoyette 
      3  1.1  pgoyette get_sensor_info() {
      4  1.1  pgoyette 	rump.envstat -x | \
      5  1.1  pgoyette 	sed -e "\;swsensor;,\;/array;p" -e "d"
      6  1.1  pgoyette }
      7  1.1  pgoyette 
      8  1.1  pgoyette get_sensor_key() {
      9  1.1  pgoyette 	get_sensor_info | grep -A1 $1 | grep integer | sed -e 's;<[/a-z]*>;;g'
     10  1.1  pgoyette }
     11  1.1  pgoyette 
     12  1.1  pgoyette get_powerd_event_count() {
     13  1.1  pgoyette 	grep "not running" powerd.log | wc -l
     14  1.1  pgoyette }
     15  1.1  pgoyette 
     16  1.5  pgoyette get_rnd_bits_count() {
     17  1.5  pgoyette 	env RUMPHIJACK=blanket=/dev/random:/dev/urandom	\
     18  1.5  pgoyette 	    RUMP_SERVER=unix://t_swsensor_socket	\
     19  1.5  pgoyette 	    LD_PRELOAD=/usr/lib/librumphijack.so	  rndctl -l | \
     20  1.5  pgoyette 	grep "swsensor-sensor" | \
     21  1.5  pgoyette 	awk '{print $2}'
     22  1.5  pgoyette }
     23  1.5  pgoyette 
     24  1.1  pgoyette check_powerd_event() {
     25  1.1  pgoyette 	event=$(grep "not running" powerd.log | \
     26  1.1  pgoyette 		sed -e "$1p" -e "d" )
     27  1.1  pgoyette 	event=${event##*//}
     28  1.1  pgoyette 	script=${event%% *}
     29  1.1  pgoyette 	event=${event#* }
     30  1.1  pgoyette 	device=${event%% *}
     31  1.1  pgoyette 	event=${event#* }
     32  1.1  pgoyette 	state=${event%% *}
     33  1.1  pgoyette 	sensor=${event#* }
     34  1.1  pgoyette 	sensor=${sensor% *}
     35  1.1  pgoyette 
     36  1.1  pgoyette 	if [ "${script}" != "sensor_indicator" ] ; then
     37  1.1  pgoyette 		echo "Event uses wrong script: ${script}"
     38  1.1  pgoyette 	elif [ "${device}" != "swsensor" ] ; then
     39  1.1  pgoyette 		echo "Event uses wrong device: ${device}"
     40  1.1  pgoyette 	elif [ "${sensor}" != "sensor" ] ; then
     41  1.1  pgoyette 		echo "Event uses wrong sensor: ${sensor}"
     42  1.1  pgoyette 	elif [ "${state}" != "$2" ] ; then
     43  1.1  pgoyette 		echo "Event uses wrong state: ${state}"
     44  1.1  pgoyette 	fi
     45  1.1  pgoyette }
     46  1.1  pgoyette 
     47  1.1  pgoyette # Start the rump server, then load the swsensor module with the
     48  1.1  pgoyette # requested properties
     49  1.1  pgoyette 
     50  1.1  pgoyette start_rump() {
     51  1.5  pgoyette 	rump_allserver -l rumpvfs -l rumpdev -l rumpdev_sysmon ${RUMP_SERVER}
     52  1.1  pgoyette 	if [ $( get_sensor_info | wc -l ) -ne 0 ] ; then
     53  1.1  pgoyette 		rump.modunload swsensor
     54  1.1  pgoyette 		rump.modload -f $1 swsensor
     55  1.1  pgoyette 	else
     56  1.1  pgoyette 		rump.modload $1 swsensor
     57  1.1  pgoyette 	fi
     58  1.1  pgoyette 	return $?
     59  1.1  pgoyette }
     60  1.1  pgoyette 
     61  1.1  pgoyette common_head() {
     62  1.1  pgoyette 	atf_set	descr		"$1"
     63  1.1  pgoyette 	atf_set	timeout		60
     64  1.4  pgoyette 	atf_set	require.progs	rump.powerd rump.envstat rump.modload	\
     65  1.4  pgoyette 				rump.halt   rump.sysctl  rump_server	\
     66  1.5  pgoyette 				sed         grep         awk		\
     67  1.5  pgoyette 				rndctl      expr
     68  1.1  pgoyette }
     69  1.1  pgoyette 
     70  1.1  pgoyette common_cleanup() {
     71  1.1  pgoyette 	rump.modunload swsensor
     72  1.1  pgoyette 	rump.halt
     73  1.1  pgoyette }
     74  1.1  pgoyette 
     75  1.1  pgoyette create_envsys_conf_files() {
     76  1.1  pgoyette 	cat << ENV0 > env0.conf
     77  1.1  pgoyette 	swsensor {
     78  1.1  pgoyette 		refresh-timeout = 2s;
     79  1.1  pgoyette 	}
     80  1.1  pgoyette ENV0
     81  1.1  pgoyette 	cat << ENV1 > env1.conf
     82  1.1  pgoyette 	swsensor {
     83  1.1  pgoyette 		sensor0 { critical-min = $(( $1 - $2 )); }
     84  1.1  pgoyette 	}
     85  1.1  pgoyette ENV1
     86  1.1  pgoyette 	cat << ENV2 > env2.conf
     87  1.1  pgoyette 	swsensor {
     88  1.1  pgoyette 		sensor0 { critical-min = $1; }
     89  1.1  pgoyette 	}
     90  1.1  pgoyette ENV2
     91  1.1  pgoyette }
     92  1.1  pgoyette 
     93  1.1  pgoyette # Test body common to all sensors
     94  1.1  pgoyette #	$1	sensor mode
     95  1.1  pgoyette #	$2	initial sensor value
     96  1.1  pgoyette #	$3	initial limit
     97  1.1  pgoyette #	$4	amount to lower limit
     98  1.1  pgoyette #	$5	difference from limit to trigger event
     99  1.5  pgoyette #	$6	sensor flags, for FHAS_ENTROPY and FMONNOTSUPP
    100  1.1  pgoyette 
    101  1.1  pgoyette common_body() {
    102  1.1  pgoyette 	# Start the rump-server process and load the module
    103  1.5  pgoyette 	modload_args="-i mode=$1 -i value=$2 -i limit=$3 ${6:+-i flags=$6}"
    104  1.5  pgoyette 	start_rump "$modload_args"
    105  1.1  pgoyette 
    106  1.1  pgoyette 	# create configuration files for updates
    107  1.1  pgoyette 	create_envsys_conf_files $3 $4
    108  1.1  pgoyette 
    109  1.1  pgoyette 	if [ $? -ne 0 ] ; then
    110  1.1  pgoyette 		atf_skip "Cannot set-up rump environment"
    111  1.1  pgoyette 	fi
    112  1.1  pgoyette 
    113  1.1  pgoyette 	# start powerd so we can detect sensor events
    114  1.1  pgoyette 	rump.powerd -n -d > powerd.log 2>&1 &
    115  1.1  pgoyette 	if [ -z "$(jobs)" ] ; then
    116  1.1  pgoyette 		skip_events=1
    117  1.1  pgoyette 		echo "Skipping event sub-tests - powerd did not start"
    118  1.1  pgoyette 	else
    119  1.1  pgoyette 		skip_events=0
    120  1.1  pgoyette 		expected_event=1
    121  1.1  pgoyette 	fi
    122  1.1  pgoyette 
    123  1.1  pgoyette 	# Step 0 - verify that sensor is registered
    124  1.1  pgoyette 	get_sensor_info | grep -q swsensor ||
    125  1.1  pgoyette 		atf_fail "0: Device swsensor not registered"
    126  1.1  pgoyette 
    127  1.1  pgoyette 	# Step 1 - update the refresh-timeout and verify
    128  1.1  pgoyette 	# (use $(( ... )) since the timeout is displayed in hex!)
    129  1.1  pgoyette 	rump.envstat -c env0.conf
    130  1.1  pgoyette 	if [ $(( $( get_sensor_key refresh-timeout ) )) -ne 2 ] ; then
    131  1.1  pgoyette 		atf_fail "1: Could not set refresh-timout to 2s"
    132  1.1  pgoyette 	fi
    133  1.1  pgoyette 
    134  1.1  pgoyette 	# Step 2 - verify that we can read sensor's value
    135  1.1  pgoyette 	if [ $1 -ne 0 -a $( get_sensor_key cur-value ) -ne $2 ] ; then
    136  1.1  pgoyette 		atf_fail "2: Value not available"
    137  1.1  pgoyette 	fi
    138  1.1  pgoyette 
    139  1.1  pgoyette 	# Step 3 - verify that changes in sensor value are seen
    140  1.1  pgoyette 	rump.sysctl -w hw.swsensor.cur_value=$(( $2 + 1 ))
    141  1.1  pgoyette 	if [ $( get_sensor_key cur-value ) -ne $(( $2 + 1 )) ] ; then
    142  1.1  pgoyette 		atf_fail "3: Value not updated"
    143  1.1  pgoyette 	fi
    144  1.1  pgoyette 
    145  1.1  pgoyette 	# Step 4 - if sensor provides hw limit, make sure we can read it
    146  1.1  pgoyette 	if [ $1 -ne 0 ] ; then
    147  1.1  pgoyette 		if [ $( get_sensor_key critical-min ) -ne $3 ] ; then
    148  1.1  pgoyette 			atf_fail "4: Limit not set by device"
    149  1.1  pgoyette 		fi
    150  1.1  pgoyette 	fi
    151  1.1  pgoyette 
    152  1.1  pgoyette 	# Step 5 - if sensor provides hw limit, make sure it works
    153  1.1  pgoyette 	if [ $1 -ne 0 -a ${skip_events} -eq 0 ] ; then
    154  1.1  pgoyette 		rump.sysctl -w hw.swsensor.cur_value=$(( $3 - $5 ))
    155  1.3  pgoyette 		sleep 5
    156  1.1  pgoyette 		cnt=$(get_powerd_event_count)
    157  1.1  pgoyette 		if [ ${cnt} -lt ${expected_event} ] ; then
    158  1.1  pgoyette 			atf_fail "5: No event triggered"
    159  1.1  pgoyette 		elif [ ${cnt} -gt ${expected_event} ] ; then
    160  1.1  pgoyette 			atf_fail "5: Multiple events triggered"
    161  1.1  pgoyette 		fi
    162  1.1  pgoyette 		evt=$( check_powerd_event ${cnt} "critical-under")
    163  1.1  pgoyette 		if [ -n "${evt}" ] ; then
    164  1.1  pgoyette 			atf_fail "5: ${evt}"
    165  1.1  pgoyette 		fi
    166  1.1  pgoyette 		expected_event=$(( 1 + ${expected_event} ))
    167  1.1  pgoyette 	fi
    168  1.1  pgoyette 
    169  1.1  pgoyette 	# Step 6 - verify that we return to normal state
    170  1.1  pgoyette 	if [ $1 -ne 0 -a ${skip_events} -eq 0 ] ; then
    171  1.1  pgoyette 		rump.sysctl -w hw.swsensor.cur_value=$(( $3 + $5 ))
    172  1.1  pgoyette 		sleep 5
    173  1.1  pgoyette 		cnt=$(get_powerd_event_count)
    174  1.1  pgoyette 		if [ ${cnt} -lt ${expected_event} ] ; then
    175  1.1  pgoyette 			atf_fail "6: No event triggered"
    176  1.1  pgoyette 		elif [ ${cnt} -gt ${expected_event} ] ; then
    177  1.1  pgoyette 			atf_fail "6: Multiple events triggered"
    178  1.1  pgoyette 		fi
    179  1.1  pgoyette 		evt=$( check_powerd_event ${cnt} "normal")
    180  1.1  pgoyette 		if [ -n "${evt}" ] ; then
    181  1.1  pgoyette 			atf_fail "6: ${evt}"
    182  1.1  pgoyette 		fi
    183  1.1  pgoyette 		expected_event=$(( 1 + ${expected_event} ))
    184  1.1  pgoyette 	fi
    185  1.1  pgoyette 
    186  1.1  pgoyette 	# Step 7 - verify that we can set our own limit
    187  1.5  pgoyette 
    188  1.5  pgoyette 	# Steps 7 thru 12 are skipped if the sensor cannot be monitored
    189  1.5  pgoyette 	if [ $( expr \( 0$6 / 2048 \) % 2 ) -ne 1 ] ; then
    190  1.5  pgoyette 		rump.envstat -c env1.conf
    191  1.5  pgoyette 		if [ $( get_sensor_key critical-min ) -ne $(( $3 - $4 )) ] ; then
    192  1.5  pgoyette 			atf_fail "7: Limit not set by envstat -c"
    193  1.5  pgoyette 		fi
    194  1.1  pgoyette 
    195  1.1  pgoyette 	# Step 8 - make sure user-set limit works
    196  1.5  pgoyette 		if [ ${skip_events} -eq 0 ] ; then
    197  1.5  pgoyette 			rump.sysctl -w hw.swsensor.cur_value=$(( $3 - $4 - $5 ))
    198  1.5  pgoyette 			sleep 5
    199  1.5  pgoyette 			cnt=$(get_powerd_event_count)
    200  1.5  pgoyette 			if [ ${cnt} -lt ${expected_event} ] ; then
    201  1.5  pgoyette 				atf_fail "8: No event triggered"
    202  1.5  pgoyette 			elif [ ${cnt} -gt ${expected_event} ] ; then
    203  1.5  pgoyette 				atf_fail "8: Multiple events triggered"
    204  1.5  pgoyette 			fi
    205  1.5  pgoyette 			evt=$( check_powerd_event ${cnt} "critical-under")
    206  1.5  pgoyette 			if [ -n "${evt}" ] ; then
    207  1.5  pgoyette 				atf_fail "8: ${evt}"
    208  1.5  pgoyette 			fi
    209  1.5  pgoyette 			expected_event=$(( 1 + ${expected_event} ))
    210  1.5  pgoyette 		fi
    211  1.5  pgoyette 
    212  1.5  pgoyette 	# Step 9 - verify that we return to normal state
    213  1.5  pgoyette 		if [ ${skip_events} -eq 0 ] ; then
    214  1.5  pgoyette 			rump.sysctl -w hw.swsensor.cur_value=$(( $3 - $4 + $5 ))
    215  1.5  pgoyette 			sleep 5
    216  1.5  pgoyette 			cnt=$(get_powerd_event_count)
    217  1.5  pgoyette 			if [ ${cnt} -lt ${expected_event} ] ; then
    218  1.5  pgoyette 				atf_fail "9: No event triggered"
    219  1.5  pgoyette 			elif [ ${cnt} -gt ${expected_event} ] ; then
    220  1.5  pgoyette 				atf_fail "9: Multiple events triggered"
    221  1.5  pgoyette 			fi
    222  1.5  pgoyette 			evt=$( check_powerd_event ${cnt} "normal")
    223  1.5  pgoyette 			if [ -n "${evt}" ] ; then
    224  1.5  pgoyette 				atf_fail "9: ${evt}"
    225  1.5  pgoyette 			fi
    226  1.5  pgoyette 			expected_event=$(( 1 + ${expected_event} ))
    227  1.5  pgoyette 		fi
    228  1.5  pgoyette 
    229  1.5  pgoyette 	# Step 10 - reset to defaults
    230  1.5  pgoyette 		rump.envstat -S
    231  1.5  pgoyette 		if [ $1 -eq 0 ] ; then
    232  1.5  pgoyette 			get_sensor_info | grep -q critical-min &&
    233  1.5  pgoyette 				atf_fail "10: Failed to clear a limit with envstat -S"
    234  1.5  pgoyette 		else
    235  1.5  pgoyette 			if [ $( get_sensor_key critical-min ) -ne $3 ] ; then
    236  1.5  pgoyette 				atf_fail "10: Limit not reset to initial value"
    237  1.5  pgoyette 			fi
    238  1.1  pgoyette 		fi
    239  1.5  pgoyette 
    240  1.5  pgoyette 	# Step 11 - see if more events occur
    241  1.5  pgoyette 		if [ ${skip_events} -eq 0 ] ; then
    242  1.5  pgoyette 			rump.envstat -c env0.conf
    243  1.5  pgoyette 			rump.sysctl -w hw.swsensor.cur_value=$(( $3 - $4 - $5 ))
    244  1.5  pgoyette 			sleep 5
    245  1.5  pgoyette 			cnt=$(get_powerd_event_count)
    246  1.5  pgoyette 			if [ ${cnt} -ge ${expected_event} ] ; then
    247  1.5  pgoyette 				if [ $1 -ne 2 ] ; then
    248  1.5  pgoyette 					atf_fail "11b Event triggered after reset"
    249  1.5  pgoyette 				fi
    250  1.5  pgoyette 				evt=$( check_powerd_event ${cnt} "critical-under")
    251  1.5  pgoyette 				if [ -n "${evt}" ] ; then
    252  1.5  pgoyette 					atf_fail "11a: ${evt}"
    253  1.5  pgoyette 				fi
    254  1.5  pgoyette 			fi
    255  1.1  pgoyette 		fi
    256  1.1  pgoyette 
    257  1.5  pgoyette 	# Step 12 - make sure we can set new limits once more
    258  1.5  pgoyette 		rump.envstat -c env2.conf
    259  1.5  pgoyette 		if [ $( get_sensor_key critical-min ) -ne $3 ] ; then
    260  1.5  pgoyette 			atf_fail "12a: Limit not reset to same value"
    261  1.1  pgoyette 		fi
    262  1.5  pgoyette 		rump.envstat -c env1.conf
    263  1.5  pgoyette 		if [ $( get_sensor_key critical-min ) -ne $(( $3 - $4 )) ] ; then
    264  1.5  pgoyette 			atf_fail "12b: Limit not reset to new value"
    265  1.1  pgoyette 		fi
    266  1.1  pgoyette 	fi
    267  1.1  pgoyette 
    268  1.5  pgoyette 	# Step 13 - confirm registration (or lack thereof) with rndctl
    269  1.5  pgoyette 	rnd_bits=$( get_rnd_bits_count )
    270  1.5  pgoyette 	if [ $( expr \( 0$6 / 8192 \) % 2 ) -eq 1 ] ; then
    271  1.5  pgoyette 		if [ -z "$rnd_bits" ] ; then
    272  1.5  pgoyette 			atf_fail "13a: Not registered with rndctl"
    273  1.5  pgoyette 		fi
    274  1.1  pgoyette 	else
    275  1.5  pgoyette 		if [ -n "$rnd_bits" ] ; then
    276  1.5  pgoyette 			atf_fail "13b: Wrongly registered with rndctl"
    277  1.1  pgoyette 		fi
    278  1.1  pgoyette 	fi
    279  1.1  pgoyette 
    280  1.5  pgoyette 	# Steps 14 and 15 are only if sensor is providing entropy
    281  1.5  pgoyette 	if [ $( expr \( 0$6 / 8192 \) % 2 ) -ne 1 ] ; then
    282  1.5  pgoyette 		return
    283  1.5  pgoyette 	fi
    284  1.5  pgoyette 
    285  1.5  pgoyette 	# Step 14 - make sure entropy collected when device is being polled
    286  1.5  pgoyette 	rump.envstat -c env0.conf
    287  1.5  pgoyette 	rump.sysctl -w hw.swsensor.cur_value=$3
    288  1.5  pgoyette 	sleep 5
    289  1.5  pgoyette 	rump.sysctl -w hw.swsensor.cur_value=$(( $3 + $4 ))
    290  1.5  pgoyette 	sleep 5
    291  1.5  pgoyette 	new_rnd_bits=$( get_rnd_bits_count )
    292  1.5  pgoyette 	if [ $new_rnd_bits -le $rnd_bits ] ; then
    293  1.7    martin 		atf_expect_fail "PR kern/47661"
    294  1.5  pgoyette 		atf_fail "14a: entropy bits did not increase after polling"
    295  1.5  pgoyette 	fi
    296  1.5  pgoyette 	rnd_bits=$new_rnd_bits
    297  1.5  pgoyette 	sleep 5
    298  1.5  pgoyette 	new_rnd_bits=$( get_rnd_bits_count )
    299  1.5  pgoyette 	if [ $new_rnd_bits -gt $rnd_bits ] ; then
    300  1.7    martin 		atf_expect_fail "PR kern/47661"
    301  1.5  pgoyette 		atf_fail "14b: entropy bits increased after poll with no value change"
    302  1.1  pgoyette 	fi
    303  1.1  pgoyette 
    304  1.5  pgoyette 	# Step 15 - make sure entropy collected when device is interrogated
    305  1.5  pgoyette 	# 
    306  1.5  pgoyette 	rump.envstat -c env0.conf
    307  1.5  pgoyette 	rump.sysctl -w hw.swsensor.cur_value=$3
    308  1.5  pgoyette 	get_sensor_key cur-value
    309  1.5  pgoyette 	rnd_bits=$( get_rnd_bits_count )
    310  1.5  pgoyette 	rump.sysctl -w hw.swsensor.cur_value=$(( $3 + $4 ))
    311  1.5  pgoyette 	get_sensor_key cur-value
    312  1.5  pgoyette 	new_rnd_bits=$( get_rnd_bits_count )
    313  1.5  pgoyette 	if [ $new_rnd_bits -le $rnd_bits ] ; then
    314  1.7    martin 		atf_expect_fail "PR kern/47661"
    315  1.5  pgoyette 		atf_fail "15a: entropy bits did not increase after interrogation"
    316  1.5  pgoyette 	fi
    317  1.5  pgoyette 	rnd_bits=$new_rnd_bits
    318  1.5  pgoyette 	get_sensor_key cur-value
    319  1.5  pgoyette 	new_rnd_bits=$( get_rnd_bits_count )
    320  1.5  pgoyette 	if [ $new_rnd_bits -gt $rnd_bits ] ; then
    321  1.7    martin 		atf_expect_fail "PR kern/47661"
    322  1.5  pgoyette 		atf_fail "15b: entropy bits increased after interrogation with no value change"
    323  1.1  pgoyette 	fi
    324  1.1  pgoyette }
    325  1.1  pgoyette 
    326  1.1  pgoyette atf_test_case simple_sensor cleanup
    327  1.1  pgoyette simple_sensor_head() {
    328  1.1  pgoyette 	common_head "Test a simple sensor"
    329  1.1  pgoyette }
    330  1.1  pgoyette 
    331  1.1  pgoyette simple_sensor_body() {
    332  1.1  pgoyette 	common_body 0 50 30 10 1
    333  1.1  pgoyette }
    334  1.1  pgoyette 
    335  1.1  pgoyette simple_sensor_cleanup() {
    336  1.1  pgoyette 	common_cleanup
    337  1.1  pgoyette }
    338  1.1  pgoyette 
    339  1.1  pgoyette atf_test_case limit_sensor cleanup
    340  1.1  pgoyette limit_sensor_head() {
    341  1.1  pgoyette 	common_head "Test a sensor with internal limit"
    342  1.1  pgoyette }
    343  1.1  pgoyette 
    344  1.1  pgoyette limit_sensor_body() {
    345  1.1  pgoyette 	common_body 1 45 25 8 2
    346  1.1  pgoyette }
    347  1.1  pgoyette 
    348  1.1  pgoyette limit_sensor_cleanup() {
    349  1.1  pgoyette 	common_cleanup
    350  1.1  pgoyette }
    351  1.1  pgoyette 
    352  1.1  pgoyette atf_test_case alarm_sensor cleanup
    353  1.1  pgoyette alarm_sensor_head() {
    354  1.1  pgoyette 	common_head "Test a sensor with internal checking"
    355  1.1  pgoyette }
    356  1.1  pgoyette 
    357  1.1  pgoyette alarm_sensor_body() {
    358  1.1  pgoyette 	common_body 2 40 20 6 3
    359  1.1  pgoyette }
    360  1.1  pgoyette 
    361  1.1  pgoyette alarm_sensor_cleanup() {
    362  1.1  pgoyette 	common_cleanup
    363  1.1  pgoyette }
    364  1.1  pgoyette 
    365  1.5  pgoyette atf_test_case entropy_polled_sensor cleanup
    366  1.5  pgoyette entropy_polled_sensor_head() {
    367  1.5  pgoyette 	common_head "Test a simple sensor that provides entropy"
    368  1.5  pgoyette }
    369  1.5  pgoyette 
    370  1.5  pgoyette entropy_polled_sensor_body() {
    371  1.5  pgoyette 	common_body 0 50 30 10 1 8192
    372  1.5  pgoyette }
    373  1.5  pgoyette 
    374  1.5  pgoyette entropy_polled_sensor_cleanup() {
    375  1.5  pgoyette 	common_cleanup
    376  1.5  pgoyette }
    377  1.5  pgoyette 
    378  1.5  pgoyette atf_test_case entropy_interrupt_sensor cleanup
    379  1.5  pgoyette entropy_interrupt_sensor_head() {
    380  1.5  pgoyette 	common_head "Test a sensor that provides entropy without polling"
    381  1.5  pgoyette }
    382  1.5  pgoyette 
    383  1.5  pgoyette entropy_interrupt_sensor_body() {
    384  1.5  pgoyette 	common_body 0 50 30 10 1 10240
    385  1.5  pgoyette }
    386  1.5  pgoyette 
    387  1.5  pgoyette entropy_interrupt_sensor_cleanup() {
    388  1.5  pgoyette 	common_cleanup
    389  1.5  pgoyette }
    390  1.5  pgoyette 
    391  1.1  pgoyette atf_init_test_cases() {
    392  1.2  pgoyette 	RUMP_SERVER="unix://t_swsensor_socket" ; export RUMP_SERVER
    393  1.1  pgoyette 	atf_add_test_case simple_sensor
    394  1.1  pgoyette 	atf_add_test_case limit_sensor
    395  1.1  pgoyette 	atf_add_test_case alarm_sensor
    396  1.5  pgoyette 	atf_add_test_case entropy_polled_sensor
    397  1.5  pgoyette 	atf_add_test_case entropy_interrupt_sensor
    398  1.1  pgoyette }
    399