[BACK]Return to t_swsensor.sh CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / tests / dev / sysmon

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/tests/dev/sysmon/t_swsensor.sh between version 1.4 and 1.5

version 1.4, 2010/12/31 00:35:42 version 1.5, 2012/07/19 13:36:18
Line 13  get_powerd_event_count() {
Line 13  get_powerd_event_count() {
         grep "not running" powerd.log | wc -l          grep "not running" powerd.log | wc -l
 }  }
   
   get_rnd_bits_count() {
           env RUMPHIJACK=blanket=/dev/random:/dev/urandom \
               RUMP_SERVER=unix://t_swsensor_socket        \
               LD_PRELOAD=/usr/lib/librumphijack.so          rndctl -l | \
           grep "swsensor-sensor" | \
           awk '{print $2}'
   }
   
 check_powerd_event() {  check_powerd_event() {
         event=$(grep "not running" powerd.log | \          event=$(grep "not running" powerd.log | \
                 sed -e "$1p" -e "d" )                  sed -e "$1p" -e "d" )
Line 40  check_powerd_event() {
Line 48  check_powerd_event() {
 # requested properties  # requested properties
   
 start_rump() {  start_rump() {
         rump_server -l rumpvfs -l rumpdev -l rumpdev_sysmon ${RUMP_SERVER}          rump_allserver -l rumpvfs -l rumpdev -l rumpdev_sysmon ${RUMP_SERVER}
         if [ $( get_sensor_info | wc -l ) -ne 0 ] ; then          if [ $( get_sensor_info | wc -l ) -ne 0 ] ; then
                 rump.modunload swsensor                  rump.modunload swsensor
                 rump.modload -f $1 swsensor                  rump.modload -f $1 swsensor
Line 55  common_head() {
Line 63  common_head() {
         atf_set timeout         60          atf_set timeout         60
         atf_set require.progs   rump.powerd rump.envstat rump.modload   \          atf_set require.progs   rump.powerd rump.envstat rump.modload   \
                                 rump.halt   rump.sysctl  rump_server    \                                  rump.halt   rump.sysctl  rump_server    \
                                 sed         grep                                  sed         grep         awk            \
                                   rndctl      expr
 }  }
   
 common_cleanup() {  common_cleanup() {
Line 87  ENV2
Line 96  ENV2
 #       $3      initial limit  #       $3      initial limit
 #       $4      amount to lower limit  #       $4      amount to lower limit
 #       $5      difference from limit to trigger event  #       $5      difference from limit to trigger event
   #       $6      sensor flags, for FHAS_ENTROPY and FMONNOTSUPP
   
 common_body() {  common_body() {
         # Start the rump-server process and load the module          # Start the rump-server process and load the module
         start_rump "-i mode=$1 -i value=$2 -i limit=$3"          modload_args="-i mode=$1 -i value=$2 -i limit=$3 ${6:+-i flags=$6}"
           start_rump "$modload_args"
   
         # create configuration files for updates          # create configuration files for updates
         create_envsys_conf_files $3 $4          create_envsys_conf_files $3 $4
Line 173  common_body() {
Line 184  common_body() {
         fi          fi
   
         # Step 7 - verify that we can set our own limit          # Step 7 - verify that we can set our own limit
         rump.envstat -c env1.conf  
         if [ $( get_sensor_key critical-min ) -ne $(( $3 - $4 )) ] ; then  
                 atf_fail "7: Limit not set by envstat -c"  
         fi  
   
         # Step 8 - make sure user-set limit works          # Steps 7 thru 12 are skipped if the sensor cannot be monitored
         if [ ${skip_events} -eq 0 ] ; then          if [ $( expr \( 0$6 / 2048 \) % 2 ) -ne 1 ] ; then
                 rump.sysctl -w hw.swsensor.cur_value=$(( $3 - $4 - $5 ))                  rump.envstat -c env1.conf
                 sleep 5                  if [ $( get_sensor_key critical-min ) -ne $(( $3 - $4 )) ] ; then
                 cnt=$(get_powerd_event_count)                          atf_fail "7: Limit not set by envstat -c"
                 if [ ${cnt} -lt ${expected_event} ] ; then  
                         atf_fail "8: No event triggered"  
                 elif [ ${cnt} -gt ${expected_event} ] ; then  
                         atf_fail "8: Multiple events triggered"  
                 fi                  fi
                 evt=$( check_powerd_event ${cnt} "critical-under")  
                 if [ -n "${evt}" ] ; then          # Step 8 - make sure user-set limit works
                         atf_fail "8: ${evt}"                  if [ ${skip_events} -eq 0 ] ; then
                           rump.sysctl -w hw.swsensor.cur_value=$(( $3 - $4 - $5 ))
                           sleep 5
                           cnt=$(get_powerd_event_count)
                           if [ ${cnt} -lt ${expected_event} ] ; then
                                   atf_fail "8: No event triggered"
                           elif [ ${cnt} -gt ${expected_event} ] ; then
                                   atf_fail "8: Multiple events triggered"
                           fi
                           evt=$( check_powerd_event ${cnt} "critical-under")
                           if [ -n "${evt}" ] ; then
                                   atf_fail "8: ${evt}"
                           fi
                           expected_event=$(( 1 + ${expected_event} ))
                 fi                  fi
                 expected_event=$(( 1 + ${expected_event} ))  
         fi  
   
         # Step 9 - verify that we return to normal state          # Step 9 - verify that we return to normal state
         if [ ${skip_events} -eq 0 ] ; then                  if [ ${skip_events} -eq 0 ] ; then
                 rump.sysctl -w hw.swsensor.cur_value=$(( $3 - $4 + $5 ))                          rump.sysctl -w hw.swsensor.cur_value=$(( $3 - $4 + $5 ))
                 sleep 5                          sleep 5
                 cnt=$(get_powerd_event_count)                          cnt=$(get_powerd_event_count)
                 if [ ${cnt} -lt ${expected_event} ] ; then                          if [ ${cnt} -lt ${expected_event} ] ; then
                         atf_fail "9: No event triggered"                                  atf_fail "9: No event triggered"
                 elif [ ${cnt} -gt ${expected_event} ] ; then                          elif [ ${cnt} -gt ${expected_event} ] ; then
                         atf_fail "9: Multiple events triggered"                                  atf_fail "9: Multiple events triggered"
                 fi                          fi
                 evt=$( check_powerd_event ${cnt} "normal")                          evt=$( check_powerd_event ${cnt} "normal")
                 if [ -n "${evt}" ] ; then                          if [ -n "${evt}" ] ; then
                         atf_fail "9: ${evt}"                                  atf_fail "9: ${evt}"
                           fi
                           expected_event=$(( 1 + ${expected_event} ))
                 fi                  fi
                 expected_event=$(( 1 + ${expected_event} ))  
         fi  
   
         # Step 10 - reset to defaults          # Step 10 - reset to defaults
         rump.envstat -S                  rump.envstat -S
         if [ $1 -eq 0 ] ; then                  if [ $1 -eq 0 ] ; then
                 get_sensor_info | grep -q critical-min &&                          get_sensor_info | grep -q critical-min &&
                         atf_fail "10: Failed to clear a limit with envstat -S"                                  atf_fail "10: Failed to clear a limit with envstat -S"
         else                  else
                 if [ $( get_sensor_key critical-min ) -ne $3 ] ; then                          if [ $( get_sensor_key critical-min ) -ne $3 ] ; then
                         atf_fail "10: Limit not reset to initial value"                                  atf_fail "10: Limit not reset to initial value"
                           fi
                 fi                  fi
         fi  
   
         # Step 11 - see if more events occur          # Step 11 - see if more events occur
         if [ ${skip_events} -eq 0 ] ; then                  if [ ${skip_events} -eq 0 ] ; then
                 rump.envstat -c env0.conf                          rump.envstat -c env0.conf
                 rump.sysctl -w hw.swsensor.cur_value=$(( $3 - $4 - $5 ))                          rump.sysctl -w hw.swsensor.cur_value=$(( $3 - $4 - $5 ))
                 sleep 5                          sleep 5
                 cnt=$(get_powerd_event_count)                          cnt=$(get_powerd_event_count)
                 if [ ${cnt} -ge ${expected_event} ] ; then                          if [ ${cnt} -ge ${expected_event} ] ; then
                         if [ $1 -ne 2 ] ; then                                  if [ $1 -ne 2 ] ; then
                                 atf_fail "11b Event triggered after reset"                                          atf_fail "11b Event triggered after reset"
                         fi                                  fi
                         evt=$( check_powerd_event ${cnt} "critical-under")                                  evt=$( check_powerd_event ${cnt} "critical-under")
                         if [ -n "${evt}" ] ; then                                  if [ -n "${evt}" ] ; then
                                 atf_fail "11a: ${evt}"                                          atf_fail "11a: ${evt}"
                                   fi
                         fi                          fi
                 fi                  fi
         fi  
   
         # Step 12 - make sure we can set new limits once more          # Step 12 - make sure we can set new limits once more
         rump.envstat -c env2.conf                  rump.envstat -c env2.conf
         if [ $( get_sensor_key critical-min ) -ne $3 ] ; then                  if [ $( get_sensor_key critical-min ) -ne $3 ] ; then
                 atf_fail "12a: Limit not reset to same value"                          atf_fail "12a: Limit not reset to same value"
         fi                  fi
         rump.envstat -c env1.conf                  rump.envstat -c env1.conf
         if [ $( get_sensor_key critical-min ) -ne $(( $3 - $4 )) ] ; then                  if [ $( get_sensor_key critical-min ) -ne $(( $3 - $4 )) ] ; then
                 atf_fail "12b: Limit not reset to new value"                          atf_fail "12b: Limit not reset to new value"
                   fi
           fi
   
           # Step 13 - confirm registration (or lack thereof) with rndctl
           rnd_bits=$( get_rnd_bits_count )
           if [ $( expr \( 0$6 / 8192 \) % 2 ) -eq 1 ] ; then
                   if [ -z "$rnd_bits" ] ; then
                           atf_fail "13a: Not registered with rndctl"
                   fi
           else
                   if [ -n "$rnd_bits" ] ; then
                           atf_fail "13b: Wrongly registered with rndctl"
                   fi
           fi
   
           # Steps 14 and 15 are only if sensor is providing entropy
           if [ $( expr \( 0$6 / 8192 \) % 2 ) -ne 1 ] ; then
                   return
           fi
   
           # Step 14 - make sure entropy collected when device is being polled
           rump.envstat -c env0.conf
           rump.sysctl -w hw.swsensor.cur_value=$3
           sleep 5
           rump.sysctl -w hw.swsensor.cur_value=$(( $3 + $4 ))
           sleep 5
           new_rnd_bits=$( get_rnd_bits_count )
           if [ $new_rnd_bits -le $rnd_bits ] ; then
                   atf_fail "14a: entropy bits did not increase after polling"
           fi
           rnd_bits=$new_rnd_bits
           sleep 5
           new_rnd_bits=$( get_rnd_bits_count )
           if [ $new_rnd_bits -gt $rnd_bits ] ; then
                   atf_fail "14b: entropy bits increased after poll with no value change"
           fi
   
           # Step 15 - make sure entropy collected when device is interrogated
           #
           rump.envstat -c env0.conf
           rump.sysctl -w hw.swsensor.cur_value=$3
           get_sensor_key cur-value
           rnd_bits=$( get_rnd_bits_count )
           rump.sysctl -w hw.swsensor.cur_value=$(( $3 + $4 ))
           get_sensor_key cur-value
           new_rnd_bits=$( get_rnd_bits_count )
           if [ $new_rnd_bits -le $rnd_bits ] ; then
                   atf_fail "15a: entropy bits did not increase after interrogation"
           fi
           rnd_bits=$new_rnd_bits
           get_sensor_key cur-value
           new_rnd_bits=$( get_rnd_bits_count )
           if [ $new_rnd_bits -gt $rnd_bits ] ; then
                   atf_fail "15b: entropy bits increased after interrogation with no value change"
         fi          fi
 }  }
   
Line 290  alarm_sensor_cleanup() {
Line 358  alarm_sensor_cleanup() {
         common_cleanup          common_cleanup
 }  }
   
   atf_test_case entropy_polled_sensor cleanup
   entropy_polled_sensor_head() {
           common_head "Test a simple sensor that provides entropy"
   }
   
   entropy_polled_sensor_body() {
           common_body 0 50 30 10 1 8192
   }
   
   entropy_polled_sensor_cleanup() {
           common_cleanup
   }
   
   atf_test_case entropy_interrupt_sensor cleanup
   entropy_interrupt_sensor_head() {
           common_head "Test a sensor that provides entropy without polling"
   }
   
   entropy_interrupt_sensor_body() {
           common_body 0 50 30 10 1 10240
   }
   
   entropy_interrupt_sensor_cleanup() {
           common_cleanup
   }
   
 atf_init_test_cases() {  atf_init_test_cases() {
         RUMP_SERVER="unix://t_swsensor_socket" ; export RUMP_SERVER          RUMP_SERVER="unix://t_swsensor_socket" ; export RUMP_SERVER
         atf_add_test_case simple_sensor          atf_add_test_case simple_sensor
         atf_add_test_case limit_sensor          atf_add_test_case limit_sensor
         atf_add_test_case alarm_sensor          atf_add_test_case alarm_sensor
           atf_add_test_case entropy_polled_sensor
           atf_add_test_case entropy_interrupt_sensor
 }  }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

CVSweb <webmaster@jp.NetBSD.org>