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