plugin: shell
name: stress/cpu_stress_test
requires:
 package.name == 'stress'
user: root
command: num_vm=$(awk '/MemTotal/ {x=$2/262144; print ((x == int(x)) ? x : int(x) +1)}' /proc/meminfo); vm_bytes=$(($(awk '/MemTotal/ {print int($2/1024)}' /proc/meminfo)/$num_vm/4))M; stress --cpu `cpuinfo_resource | awk '/count:/ {print $2}'` --vm $num_vm --vm-bytes $vm_bytes --timeout 7200s
description:
 PURPOSE:
     Create jobs that use the CPU as much as possible for two hours. The test is considered passed if the system does not freeze.

plugin: shell
name: power-management/hibernate_30_cycles
depends:
 power-management/hibernate_advanced
requires:
 sleep.disk == 'supported'
 rtc.state == 'supported'
environ: CHECKBOX_DATA
user: root
command:
 if type -P fwts >/dev/null; then
  echo "Calling fwts"
  fwts_test -l $CHECKBOX_DATA/hibernate_30_cycles -f none -s s4 --s4-device-check --s4-device-check-delay=45 --s4-sleep-delay=120 --s4-multiple=30
 else
  echo "Calling sleep_test"
  set -o pipefail; sleep_test -s disk -i 30 -w 120 | tee $CHECKBOX_DATA/hibernate_30_cycles.log
 fi
description:
 PURPOSE:
    This is an automated stress test that will force the system to hibernate/resume for 30 cycles

plugin: shell
name: power-management/hibernate-30-cycles-log-check
command: [ -e $CHECKBOX_DATA/hibernate_30_cycles.log ] && sleep_test_log_check -v s4 $CHECKBOX_DATA/hibernate_30_cycles.log
description:
 Automated check of the 30 cycle hibernate log for errors detected by fwts.

plugin: attachment
name: power-management/hibernate-30-cycle-log-attach
command: [ -e $CHECKBOX_DATA/hibernate_30_cycles.log ] && cat $CHECKBOX_DATA/hibernate_30_cycles.log
description:
 Attaches the log from the 30 cycle Hibernate/Resume test if it exists

plugin: shell
name: power-management/suspend_30_cycles
depends:
 power-management/rtc
 suspend/suspend_advanced
environ: CHECKBOX_DATA
user: root
command:
 if type -P fwts >/dev/null; then
  echo "Calling fwts"
  set -o pipefail; fwts_test -l $CHECKBOX_DATA/suspend_30_cycles -f none -s s3 --s3-device-check --s3-device-check-delay=45 --s3-sleep-delay=30 --s3-multiple=30 | tee $CHECKBOX_DATA/suspend_30_cycles_times.log
 else
  echo "Calling sleep_test"
  set -o pipefail; sleep_test -p -s mem -i 30 | tee $CHECKBOX_DATA/suspend_30_cycles.log
 fi
description:
 PURPOSE:
    This is an automated stress test that will force the system to suspend/resume for 30 cycles.

plugin: shell
name: power-management/suspend-30-cycles-log-check
command: [ -e $CHECKBOX_DATA/suspend_30_cycles.log ] && sleep_test_log_check -v s3 $CHECKBOX_DATA/suspend_30_cycles.log
description:
 Automated check of the 30 cycle hibernate log for errors detected by fwts.

plugin: attachment
name: power-management/suspend-30-cycle-log-attach
command: [ -e $CHECKBOX_DATA/suspend_30_cycles.log ] && cat $CHECKBOX_DATA/suspend_30_cycles.log
description:
 Attaches the log from the 30 cycle Suspend/Resume test if it exists

plugin: shell
name: power-management/suspend-30-cycles-time-check
command: [ -e $CHECKBOX_DATA/suspend_30_cycles_times.log ] && sleep_time_check $CHECKBOX_DATA/suspend_30_cycles_times.log
description:
 Checks the sleep times to ensure that a machine suspends and resumes within a given threshold

plugin: shell
name: stress/hibernate_250_cycles
depends: power-management/rtc
environ: CHECKBOX_DATA
user: root
command:
 if type -P fwts >/dev/null; then
  echo "Calling fwts"
  fwts_test -l $CHECKBOX_DATA/hibernate_250_cycles -s s4 --s4-device-check --s4-device-check-delay=45 --s4-sleep-delay=120 --s4-multiple=250
 else
  echo "Calling sleep_test"
  set -o pipefail; sleep_test -s disk -i 250 -w 120 | tee $CHECKBOX_DATA/hibernate_250_cycles.log
 fi
description:
 PURPOSE:
    This is an automated stress test that will force the system to hibernate/resume for 250 cycles

plugin: attachment
name: stress/hibernate-250-cycle-log-attach
command: [ -e $CHECKBOX_DATA/hibernate_250_cycles.log ] && cat $CHECKBOX_DATA/hibernate_250_cycles.log
description:
 Attaches the log from the 250 cycle Hibernate/Resume test if it exists

plugin: shell
name: stress/suspend_250_cycles
depends: power-management/rtc
environ: CHECKBOX_DATA
user: root
command:
 if type -P fwts >/dev/null; then
  echo "Calling fwts"
  set -o pipefail; fwts_test -l $CHECKBOX_DATA/suspend_250_cycles -s s3 --s3-device-check --s3-device-check-delay=45 --s3-sleep-delay=30 --s3-multiple=250 | tee $CHECKBOX_DATA/suspend_250_cycles_times.log
 else
  echo "Calling sleep_test"
  set -o pipefail; sleep_test -p -s mem -i 250 | tee $CHECKBOX_DATA/suspend_250_cycles.log
 fi
description:
 PURPOSE:
    This is an automated stress test that will force the system to suspend/resume for 250 cycles.

plugin: attachment
name: stress/suspend-250-cycle-log-attach
command: [ -e $CHECKBOX_DATA/suspend_250_cycles.log ] && cat $CHECKBOX_DATA/suspend_250_cycles.log
description:
 Attaches the log from the 250 cycle Suspend/Resume test if it exists

plugin: shell
name: stress/suspend-250-cycles-time-check
command: [ -e $CHECKBOX_DATA/suspend_250_cycles_times.log ] && sleep_time_check $CHECKBOX_DATA/suspend_250_cycles_times.log
description:
 Checks the sleep times to ensure that a machine suspends and resumes within a given threshold

plugin: shell
name: stress/reboot
requires:
 package.name == 'upstart'
 package.name == 'fwts'
command: pm_test -r 100 --silent --log-level=notset reboot --log-dir=$CHECKBOX_DATA
user: root
environ: CHECKBOX_DATA
description:
 Stress reboot system (100 cycles)

plugin: attachment
name: stress/reboot_log
depends: stress/reboot
command: tar cvfz $CHECKBOX_DATA/stress_reboot.tgz $CHECKBOX_DATA/*reboot.100.log && cat $CHECKBOX_DATA/stress_reboot.tgz

plugin: shell
name: stress/poweroff
requires:
 package.name == 'upstart'
 package.name == 'fwts'
command: pm_test -r 100 --silent --log-level=notset poweroff --log-dir=$CHECKBOX_DATA
user: root
environ: CHECKBOX_DATA
description:
 Stress poweroff system (100 cycles)

plugin: attachment
name: stress/poweroff_log
depends: stress/poweroff
command: tar cvfz $CHECKBOX_DATA/stress_poweroff.tgz $CHECKBOX_DATA/*poweroff.100.log && cat $CHECKBOX_DATA/stress_poweroff.tgz

plugin: shell
name: stress/reboot_check
depends: stress/reboot
command: pm_log_check --log-level=notset $CHECKBOX_DATA/pm_test.reboot.100.log $CHECKBOX_DATA/pm_log_check_reboot.100.log
description: Check logs for the stress reboot (100 cycles) test case

plugin: attachment
name: stress/reboot_check_log
depends: stress/reboot_check
command:
 tar cvfz $CHECKBOX_DATA/stress_reboot_check.tgz $CHECKBOX_DATA/pm_log_check_reboot.100.log && cat $CHECKBOX_DATA/stress_reboot_check.tgz

plugin: shell
name: stress/poweroff_check
depends: stress/poweroff
command: pm_log_check --log-level=notset $CHECKBOX_DATA/pm_test.poweroff.100.log $CHECKBOX_DATA/pm_log_check_poweroff.100.log
description: Check logs for the stress poweroff (100 cycles) test case

plugin: attachment
name: stress/poweroff_check_log
depends: stress/poweroff_check
command:
 tar cvfz $CHECKBOX_DATA/stress_poweroff_check.tgz $CHECKBOX_DATA/pm_log_check_poweroff.100.log && cat $CHECKBOX_DATA/stress_poweroff_check.tgz

plugin: shell
name: stress/graphics
requires:
 package.name == 'x11-apps'
user: root
environ: CHECKBOX_DATA
command: graphics_stress_test -b repeat -d -o $CHECKBOX_DATA/graphics-stress-results && echo "Graphics Stress Test completed successfully" || echo "Graphics Stress Test completed, but there are errors. Please see the log $CHECKBOX_DATA/graphics-stress-results for details" && false
description:
 Run the graphics stress test. This test can take a few minutes.

plugin: shell
name: stress/graphics-tarball
requires:
 package.name == 'x11-apps'
depends: stress/graphics
command: [ -e $CHECKBOX_DATA/graphics-stress-results ] && tar cvfz $CHECKBOX_DATA/graphics-stress-results.tar.gz $CHECKBOX_DATA/graphics-stress-results
description: Attaches the graphics stress results to the submission.

plugin: shell
name: stress/usb
user: root
command: removable_storage_test -s 10240000 -c 100 -i 3 usb
description: Runs a test that transfers 100 10MB files 3 times to usb.

plugin: shell
name: stress/sdhc
user: root
command: removable_storage_test -s 10240000 -c 100 -i 3 sdio scsi usb --memorycard
description: Runs a test that transfers 100 10MB files 3 times to a SDHC card.

plugin: shell
name: stress/network_restart
user: root
environ: CHECKBOX_DATA
command: network_restart -t 1 -o $CHECKBOX_DATA
description: Ping ubuntu.com and restart network interfaces 100 times

plugin: attachment
name: stress/network_restart_log
depends: stress/network_restart
command: file=$CHECKBOX_DATA/network_restart.log; if [ -e "$file" ]; then iconv -t 'ascii' -c "$file"; fi

plugin: manual
name: stress/wireless_hotkey
requires: dmi.product in ['Notebook','Laptop','Portable']
description:
 PURPOSE:
     To make sure that stressing the wifi hotkey does not cause applets to disappear from the panel or the system to lock up
 STEPS:
     1. Log in to desktop
     2. Press wifi hotkey at a rate of 1 press per second and slowly increase the speed of the tap, until you are tapping as fast as possible
 VERIFICATION:
     Verify the system is not frozen and the wifi and bluetooth applets are still visible and functional
