summaryrefslogtreecommitdiff
diff options
-rwxr-xr-xbin/brightness_test82
-rwxr-xr-xbin/disk_stress_ng2
-rwxr-xr-xbin/lock_screen_watcher161
-rwxr-xr-xbin/pm_test10
-rwxr-xr-xbin/removable_storage_test16
-rwxr-xr-xbin/removable_storage_watcher4
-rw-r--r--data/palm_rejection.qml30
-rw-r--r--data/resolution_test.qml31
-rw-r--r--data/touch_continuous_move_test.qml7
-rw-r--r--data/touch_rotate_test.qml11
-rw-r--r--data/touch_tap_test.qml18
-rw-r--r--data/touch_zoom_test.qml11
-rw-r--r--debian/.git-dpm14
-rwxr-xr-xmanage.py2
-rw-r--r--units/audio/test-plan.pxu33
-rw-r--r--units/bluetooth/test-plan.pxu23
-rw-r--r--units/camera/test-plan.pxu20
-rw-r--r--units/cpu/jobs.pxu9
-rw-r--r--units/cpu/test-plan.pxu14
-rw-r--r--units/esata/test-plan.pxu27
-rw-r--r--units/firewire/test-plan.pxu27
-rw-r--r--units/firmware/jobs.pxu10
-rw-r--r--units/graphics/jobs.pxu20
-rw-r--r--units/graphics/legacy.pxu12
-rw-r--r--units/graphics/test-plan.pxu100
-rw-r--r--units/info/test-plan.pxu75
-rw-r--r--units/input/test-plan.pxu27
-rw-r--r--units/keys/test-plan.pxu40
-rw-r--r--units/led/test-plan.pxu42
-rw-r--r--units/mediacard/test-plan.pxu33
-rw-r--r--units/miscellanea/jobs.pxu12
-rw-r--r--units/miscellanea/test-plan.pxu14
-rw-r--r--units/mobilebroadband/test-plan.pxu14
-rw-r--r--units/monitor/jobs.pxu1
-rw-r--r--units/monitor/test-plan.pxu118
-rw-r--r--units/networking/test-plan.pxu4
-rw-r--r--units/optical/test-plan.pxu31
-rw-r--r--units/power-management/jobs.pxu15
-rw-r--r--units/stress/jobs.pxu24
-rw-r--r--units/stress/test-plan.pxu18
-rw-r--r--units/submission/jobs.pxu14
-rw-r--r--units/suspend/suspend-graphics.pxu2
-rw-r--r--units/suspend/suspend.pxu11
-rw-r--r--units/thunderbolt/test-plan.pxu33
-rw-r--r--units/touchpad/test-plan.pxu51
-rw-r--r--units/touchscreen/jobs.pxu4
-rw-r--r--units/touchscreen/test-plan.pxu33
-rw-r--r--units/usb/test-plan.pxu58
-rw-r--r--units/usb/usb.pxu42
-rw-r--r--units/wireless/jobs.pxu16
-rw-r--r--units/wireless/test-plan.pxu14
51 files changed, 898 insertions, 542 deletions
diff --git a/bin/brightness_test b/bin/brightness_test
index 818796e..af1de1b 100755
--- a/bin/brightness_test
+++ b/bin/brightness_test
@@ -5,9 +5,11 @@
#
# This file is part of Checkbox.
#
-# Copyright 2012 Canonical Ltd.
+# Copyright 2012-2018 Canonical Ltd.
#
-# Authors: Alberto Milone <alberto.milone@canonical.com>
+# Authors:
+# Alberto Milone <alberto.milone@canonical.com>
+# Sylvain Pineau <sylvain.pineau@canonical.com>
#
# Checkbox is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3,
@@ -33,7 +35,7 @@ from glob import glob
class Brightness(object):
def __init__(self, path='/sys/class/backlight'):
self.sysfs_path = path
- self._interfaces = self._get_interfaces_from_path()
+ self.interfaces = self._get_interfaces_from_path()
def read_value(self, path):
'''Read the value from a file'''
@@ -94,36 +96,6 @@ class Brightness(object):
return interfaces
- def get_best_interface(self):
- '''Get the best acpi interface'''
- # Follow the heuristic in https://www.kernel.org/doc/Documentation/
- #ABI/stable/sysfs-class-backlight
- if len(self._interfaces) == 0:
- return None
- else:
- interfaces = {}
- for interface in self._interfaces:
- try:
- with open(interface + '/type') as type_file:
- iface_type = type_file.read().strip()
- except IOError:
- continue
- interfaces[iface_type] = interface
-
- if interfaces.get('firmware'):
- return interfaces.get('firmware')
- elif interfaces.get('platform'):
- return interfaces.get('platform')
- elif interfaces.get('raw'):
- return interfaces.get('raw')
- else:
- fallback_type = sorted(interfaces.keys())[0]
- print("WARNING: no interface of type firmware/platform/raw "
- "found. Using {} of type {}".format(
- interfaces[fallback_type],
- fallback_type))
- return interfaces[fallback_type]
-
def was_brightness_applied(self, interface):
'''See if the selected brightness was applied
@@ -132,9 +104,9 @@ class Brightness(object):
'''
if (abs(self.get_actual_brightness(interface) -
self.get_last_set_brightness(interface)) > 1):
- return False
+ return 1
else:
- return True
+ return 0
def main():
@@ -146,33 +118,35 @@ def main():
file=sys.stderr)
exit(1)
- interface = brightness.get_best_interface()
# If no backlight interface can be found
- if not interface:
+ if len(brightness.interfaces) == 0:
exit(1)
- # Get the current brightness which we can restore later
- current_brightness = brightness.get_actual_brightness(interface)
+ exit_status = 0
+ for interface in brightness.interfaces:
+
+ # Get the current brightness which we can restore later
+ current_brightness = brightness.get_actual_brightness(interface)
- # Get the maximum value for brightness
- max_brightness = brightness.get_max_brightness(interface)
+ # Get the maximum value for brightness
+ max_brightness = brightness.get_max_brightness(interface)
- # Set the brightness to half the max value
- brightness.write_value(max_brightness / 2,
- os.path.join(interface,
- 'brightness'))
+ # Set the brightness to half the max value
+ brightness.write_value(max_brightness / 2,
+ os.path.join(interface,
+ 'brightness'))
- # Check that "actual_brightness" reports the same value we
- # set "brightness" to
- exit_status = not brightness.was_brightness_applied(interface)
+ # Check that "actual_brightness" reports the same value we
+ # set "brightness" to
+ exit_status += brightness.was_brightness_applied(interface)
- # Wait a little bit before going back to the original value
- time.sleep(2)
+ # Wait a little bit before going back to the original value
+ time.sleep(2)
- # Set the brightness back to its original value
- brightness.write_value(current_brightness,
- os.path.join(interface,
- 'brightness'))
+ # Set the brightness back to its original value
+ brightness.write_value(current_brightness,
+ os.path.join(interface,
+ 'brightness'))
exit(exit_status)
diff --git a/bin/disk_stress_ng b/bin/disk_stress_ng
index 0b5de83..df5694e 100755
--- a/bin/disk_stress_ng
+++ b/bin/disk_stress_ng
@@ -121,7 +121,7 @@ find_largest_partition() {
exit 1
fi
local blkid_info=$(blkid -s TYPE $part_location | grep -E ext2\|ext3\|ext4\|xfs\|jfs\|btrfs\|LVM2_member)
- if [ "$part_size" > "$largest_size" ] && [ -n "$blkid_info" ] ; then
+ if [ "$part_size" -gt "$largest_size" ] && [ -n "$blkid_info" ] ; then
if [[ "$blkid_info" =~ .*LVM2_member.* ]] ; then
find_largest_lv
else
diff --git a/bin/lock_screen_watcher b/bin/lock_screen_watcher
index b8dd886..4e9847e 100755
--- a/bin/lock_screen_watcher
+++ b/bin/lock_screen_watcher
@@ -1,116 +1,49 @@
#!/usr/bin/env python3
-import argparse
-import sys
-import subprocess
-import lsb_release
-
+# This file is part of Checkbox.
+#
+# Copyright 2018 Canonical Ltd.
+# Written by: Sylvain Pineau <sylvain.pineau@canonical.com>
+#
+# Checkbox is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 3,
+# as published by the Free Software Foundation.
+#
+# Checkbox is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Checkbox. If not, see <http://www.gnu.org/licenses/>.
+
+import dbus
+from dbus.mainloop.glib import DBusGMainLoop
from gi.repository import GObject
-
-from checkbox_support.dbus import connect_to_system_bus
-
-import threading
-import time
-
-GObject.threads_init()
-
-class SceenSaverStatusHelper(threading.Thread):
-
- def __init__(self, loop):
- super(SceenSaverStatusHelper, self).__init__()
- self._loop = loop
- self.quit = False
-
- def query(self):
- if (lsb_release.get_distro_information()["ID"] == "Ubuntu"):
- if (lsb_release.get_distro_information()["CODENAME"] == "trusty"):
- # trusty uses login screen as screen saver
- process_ps = subprocess.Popen(["ps", "aux"], stdout=subprocess.PIPE)
- process_grep = subprocess.Popen(["grep",
- "/usr/lib/unity/unity-panel-service --lockscreen-mode"],
- stdin=process_ps.stdout,
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT)
- process_ps.stdout.close()
- stdout = process_grep.communicate()[0]
- if (len(stdout.decode().split("\n")) == 3):
- print("the screensaver is active")
- self._loop.quit()
- p = subprocess.Popen(["gnome-screensaver-command", "-q"], stdout=subprocess.PIPE)
- stdout, stderr = p.communicate()
- # parse the stdout string from the command "gnome-screensaver-command -q"
- # the result should be "active" or "inactive"
- if "active" == stdout.decode().split(" ")[-1].rstrip() :
- print("the screensaver is active")
- self._loop.quit()
-
- def run(self):
- while not self.quit:
- GObject.idle_add(self.query)
- time.sleep(1)
-
-
-class HotkeyFunctionListener:
-
- def __init__(self, system_bus, loop):
- self._bus = system_bus
- self._loop = loop
- # Assume the test passes, this is changed when timeout expires
- self._error = False
-
- def _on_timeout_expired(self):
- """
- Internal function called when the timer expires.
-
- Basically it's just here to tell the user the test failed or that the
- user was unable to pressed the hot key during the allowed time.
- """
- print("You have failed to perform the required manipulation in time")
- # Fail the test when the timeout was reached
- self._error = True
- # Stop the loop now
- self._loop.quit()
-
- def check(self, timeout):
- """
- Run the configured test and return the result
-
- The result is False if the test has failed. The timeout, when
- non-zero, will make the test fail after the specified seconds have
- elapsed without conclusive result.
- """
- # Setup a timeout if requested
- if timeout > 0:
- GObject.timeout_add_seconds(timeout, self._on_timeout_expired)
-
- # helper to listen the functionality is triggered or not
- query_thread = SceenSaverStatusHelper(self._loop)
- query_thread.start()
-
- self._loop.run()
- query_thread.quit = True
- # Return the outcome of the test
- return self._error
-
-def main():
- description = "Wait for the specified hotkey to be pressed."
- parser = argparse.ArgumentParser(description=description)
- parser.add_argument('--timeout', type=int, default=30)
-
- args = parser.parse_args()
-
- # Connect to the system bus, we also get the event
- # loop as we need it to start listening for signals.
- system_bus, loop = connect_to_system_bus()
-
- listener = HotkeyFunctionListener(system_bus, loop)
-
- # Run the actual listener and wait till it either times out or discovers
- # the specific hot key pressed.
- try:
- return listener.check(args.timeout)
- except KeyboardInterrupt:
- return 1
-
-if __name__ == "__main__":
- sys.exit(main())
-
+from gi.repository import GLib
+
+
+def filter_cb(bus, message):
+ if message.get_member() == "EventEmitted":
+ args = message.get_args_list()
+ if args[0] == "desktop-lock":
+ print("Lock Screen detected")
+ mainloop.quit()
+ elif message.get_member() == "ActiveChanged":
+ args = message.get_args_list()
+ if args[0] == True: # noqa: E712
+ print("Lock Screen detected")
+ mainloop.quit()
+
+
+def on_timeout_expired():
+ print("You have failed to perform the required manipulation in time")
+ raise SystemExit(1)
+
+DBusGMainLoop(set_as_default=True)
+bus = dbus.SessionBus()
+bus.add_match_string("type='signal',interface='com.ubuntu.Upstart0_6'")
+bus.add_match_string("type='signal',interface='org.gnome.ScreenSaver'")
+bus.add_message_filter(filter_cb)
+mainloop = GLib.MainLoop()
+GObject.timeout_add_seconds(30, on_timeout_expired)
+mainloop.run()
diff --git a/bin/pm_test b/bin/pm_test
index 35cd215..481b566 100755
--- a/bin/pm_test
+++ b/bin/pm_test
@@ -637,7 +637,7 @@ class AutoStartFile(object):
[Desktop Entry]
Name={pm_operation} test
Comment=Verify {pm_operation} works properly
-Exec=sudo /usr/bin/python3 {script} -r {repetitions} -w {wakeup} --hardware-delay {hardware_delay} --pm-delay {pm_delay} --min-pm-time {min_pm_time} --max-pm-time {max_pm_time} --append --total {total} --start {start} --pm-timestamp {pm_timestamp} {silent} --log-level={log_level} --log-dir={log_dir} --suspends-before-reboot={suspend_cycles} --checkbox-respawn-cmd={checkbox_respawn} {fwts} {pm_operation}
+Exec=sudo {script} -r {repetitions} -w {wakeup} --hardware-delay {hardware_delay} --pm-delay {pm_delay} --min-pm-time {min_pm_time} --max-pm-time {max_pm_time} --append --total {total} --start {start} --pm-timestamp {pm_timestamp} {silent} --log-level={log_level} --log-dir={log_dir} --suspends-before-reboot={suspend_cycles} --checkbox-respawn-cmd={checkbox_respawn} {fwts} {pm_operation}
Type=Application
X-GNOME-Autostart-enabled=true
Hidden=false
@@ -673,9 +673,13 @@ Hidden=false
"""
logging.debug('Writing desktop file ({0!r})...'
.format(self.desktop_filename))
-
+ snap_name = os.getenv('SNAP_NAME')
+ if snap_name:
+ script = '/snap/bin/{}.pm-test'.format(snap_name)
+ else:
+ script = '/usr/bin/python3 {}'.format(os.path.realpath(__file__))
contents = (self.TEMPLATE
- .format(script=os.path.realpath(__file__),
+ .format(script=script,
repetitions=self.args.repetitions - 1,
wakeup=self.args.wakeup,
hardware_delay=self.args.hardware_delay,
diff --git a/bin/removable_storage_test b/bin/removable_storage_test
index ddd4e1b..42e197a 100755
--- a/bin/removable_storage_test
+++ b/bin/removable_storage_test
@@ -99,6 +99,20 @@ def md5_hash_file(path):
return md5.hexdigest()
+def on_ubuntucore():
+ """
+ Check if running from on ubuntu core
+ """
+ snap = os.getenv("SNAP")
+ if snap:
+ with open(os.path.join(snap, 'meta/snap.yaml')) as f:
+ for l in f.readlines():
+ if l == "confinement: classic\n":
+ return False
+ return True
+ return False
+
+
class DiskTest():
''' Class to contain various methods for testing removable disks '''
@@ -177,7 +191,7 @@ class DiskTest():
Indirectly sets:
self.rem_disks{,_nm,_memory_cards,_memory_cards_nm,_speed}
"""
- if "SNAP" in os.environ:
+ if on_ubuntucore():
self._probe_disks_udisks2_cli()
else:
bus, loop = connect_to_system_bus()
diff --git a/bin/removable_storage_watcher b/bin/removable_storage_watcher
index 522e7a8..d5a0722 100755
--- a/bin/removable_storage_watcher
+++ b/bin/removable_storage_watcher
@@ -619,6 +619,10 @@ class UDisks2StorageDeviceListener:
and record.value.prop_name == "MountPoints"
and record.value.prop_value != []):
found.add('mounted')
+ # On some systems partition are reported as mounted
+ # filesystems, without 'partition' record
+ if set(['partition', 'mounted']).issubset(needs):
+ needs.remove('partition')
# Finally memorize the drive the block device belongs to
elif (record.value.iface_name ==
"org.freedesktop.UDisks2.Block"
diff --git a/data/palm_rejection.qml b/data/palm_rejection.qml
index 1c9b974..3f93f2a 100644
--- a/data/palm_rejection.qml
+++ b/data/palm_rejection.qml
@@ -1,7 +1,7 @@
/*
* This file is part of Checkbox.
*
- * Copyright 2016 Canonical Ltd.
+ * Copyright 2018 Canonical Ltd.
* Written by:
* Maciej Kisielewski <maciej.kisielewski@canonical.com>
*
@@ -17,10 +17,10 @@
* You should have received a copy of the GNU General Public License
* along with Checkbox. If not, see <http://www.gnu.org/licenses/>.
*/
-import Ubuntu.Components 1.2
-import QtQuick 2.0
-import QtQuick.Layouts 1.1
-import Plainbox 0.1
+import QtQuick 2.5
+import QtQuick.Layouts 1.2
+import QtQuick.Controls 1.4
+import Plainbox 1.0
QmlJob {
property var steps: [
@@ -38,8 +38,8 @@ QmlJob {
ColumnLayout {
anchors.fill: parent
- anchors.margins: units.gu(1)
- spacing: units.gu(1)
+ anchors.margins: 10
+ spacing: 30
Image {
source: steps[currentStep][0]
fillMode: Image.PreserveAspectFit
@@ -47,34 +47,30 @@ QmlJob {
Layout.fillWidth: true
}
Label {
- text: i18n.tr("The cursor <b>SHOULD NOT</b> move with the palm movement?")
- fontSize: 'large'
+ text: "The cursor <b>SHOULD NOT</b> move with the palm movement?"
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
- Layout.minimumHeight: units.gu(10)
+ Layout.minimumHeight: 30
Layout.fillHeight: true
Layout.fillWidth: true
}
RowLayout {
- Layout.minimumHeight: units.gu(10)
+ Layout.minimumHeight: 10
Layout.fillWidth: true
Button {
- text: i18n.tr('Pass')
- color: UbuntuColors.green
+ text: 'Pass'
Layout.fillHeight: true
Layout.fillWidth: true
onClicked: testDone({'outcome': 'pass'})
}
Button {
- text: i18n.tr('Skip')
- color: "#FF9900"
+ text: 'Skip'
Layout.fillHeight: true
Layout.fillWidth: true
onClicked: testDone({'outcome': 'skip'})
}
Button {
- text: i18n.tr('Fail')
- color: UbuntuColors.red
+ text: 'Fail'
Layout.fillHeight: true
Layout.fillWidth: true
onClicked: testDone({'outcome': 'fail'})
diff --git a/data/resolution_test.qml b/data/resolution_test.qml
index cb4b0b5..50f75e7 100644
--- a/data/resolution_test.qml
+++ b/data/resolution_test.qml
@@ -19,20 +19,26 @@
* along with Checkbox. If not, see <http://www.gnu.org/licenses/>.
*/
-import QtQuick 2.0
-import QtQuick.Window 2.0
+import QtQuick 2.5
+import QtQuick.Window 2.2
-Rectangle {
- border.color: "lime"
- border.width: 15
+Window {
color: "transparent"
- Text {
- anchors.centerIn: parent
- text: Screen.width + " x " + Screen.height
- font.bold: true
- font.pointSize: 80
- color: "lime"
- smooth: true
+ visible: true
+ visibility: Window.FullScreen
+ Rectangle {
+ border.color: "lime"
+ border.width: 15
+ color: "transparent"
+ anchors.fill: parent
+ Text {
+ anchors.centerIn: parent
+ text: Screen.width + " x " + Screen.height
+ font.bold: true
+ font.pointSize: 80
+ color: "lime"
+ smooth: true
+ }
}
Timer {
interval: 5000
@@ -40,4 +46,3 @@ Rectangle {
onTriggered: Qt.quit()
}
}
-
diff --git a/data/touch_continuous_move_test.qml b/data/touch_continuous_move_test.qml
index 1913719..a234169 100644
--- a/data/touch_continuous_move_test.qml
+++ b/data/touch_continuous_move_test.qml
@@ -17,8 +17,7 @@
along with Checkbox. If not, see <http://www.gnu.org/licenses/>.
*/
-import QtQuick 2.0
-import Ubuntu.Components 0.1
+import QtQuick 2.5
Rectangle {
width: 500
@@ -36,14 +35,14 @@ Rectangle {
}
Column {
- spacing: units.gu(5)
+ spacing: 10
anchors.centerIn: parent
Text {
id: legend
anchors.horizontalCenter: parent.horizontalCenter
text: "Continuously move your mouse cursor"
font.bold: true
- font.pointSize: 30
+ font.pointSize: 12
}
Text {
id: countdown
diff --git a/data/touch_rotate_test.qml b/data/touch_rotate_test.qml
index a3b297f..8bdfe79 100644
--- a/data/touch_rotate_test.qml
+++ b/data/touch_rotate_test.qml
@@ -17,7 +17,6 @@
along with Checkbox. If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.0
-import Ubuntu.Components 0.1
Rectangle{
id: mainWindow
@@ -66,7 +65,7 @@ Rectangle{
id: instructions
z: 1 // So it appears on top
height: mainWindow.height / 3
- anchors.margins: units.gu(1.5)
+ anchors.margins: 10
anchors.top: mainWindow.top
anchors.left: mainWindow.left
anchors.right: mainWindow.right
@@ -75,8 +74,8 @@ Rectangle{
Text {
id: text
anchors.fill: instructions
- anchors.margins: units.gu(1.5)
- font.pointSize: units.gu(1.5)
+ anchors.margins: 5
+ font.pointSize: 12
property var timeout: 30
text: "Using two fingers, rotate the blue rectangle so it fits within the red outline. " +
"Press ESC to cancel the test at any time. <b>Test will exit automatically in " +
@@ -103,11 +102,11 @@ Rectangle{
Rectangle{
id: goalsize
anchors.top: instructions.bottom
- anchors.margins: units.gu(8)
+ anchors.margins: 8
anchors.right: mainWindow.right
anchors.left: mainWindow.left
anchors.bottom: mainWindow.bottom
- anchors.bottomMargin: units.gu(10)
+ anchors.bottomMargin: 10
border.color: "red"
border.width: 4
}
diff --git a/data/touch_tap_test.qml b/data/touch_tap_test.qml
index eff8a1a..c56c930 100644
--- a/data/touch_tap_test.qml
+++ b/data/touch_tap_test.qml
@@ -1,4 +1,3 @@
-import Ubuntu.Components 0.1
import QtQuick 2.0
Rectangle {
@@ -9,23 +8,12 @@ Rectangle {
focus:true
Keys.onEscapePressed: {Qt.quit()}
- Arguments {
- id: args
-
- Argument {
- name: "touchpoints"
- help: "minimum TouchPoints"
- required: true
- valueNames: ["TouchPoints"]
- }
- }
-
Text {
id: text
color: "white"
- font.pointSize: units.gu(1.5)
+ font.pointSize: 15
property var timeout: 15
- text: "<p>Touch the screen with "+args.values.touchpoints+" fingers at the same time</p>" +
+ text: "<p>Touch the screen with "+Qt.application.arguments[2]+" fingers at the same time</p>" +
"<p>Press ESC to cancel the test at any time.</p>" +
"<p><b>Test will exit automatically in " +
timeout + " seconds </b></p>"
@@ -84,7 +72,7 @@ Rectangle {
enabled: true
anchors.fill: parent
- minimumTouchPoints: args.values.touchpoints
+ minimumTouchPoints: Qt.application.arguments[2]
maximumTouchPoints: minimumTouchPoints
onReleased: {
diff --git a/data/touch_zoom_test.qml b/data/touch_zoom_test.qml
index 7976ea8..99eed21 100644
--- a/data/touch_zoom_test.qml
+++ b/data/touch_zoom_test.qml
@@ -17,7 +17,6 @@
along with Checkbox. If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.0
-import Ubuntu.Components 0.1
Rectangle{
id: mainWindow
@@ -53,7 +52,7 @@ Rectangle{
Rectangle{
id: instructions
height: mainWindow.height / 3
- anchors.margins: units.gu(1.5)
+ anchors.margins: 5
anchors.top: mainWindow.top
anchors.left: mainWindow.left
anchors.right: mainWindow.right
@@ -62,8 +61,8 @@ Rectangle{
Text {
id: text
anchors.fill: instructions
- anchors.margins: units.gu(1.5)
- font.pointSize: units.gu(1.5)
+ anchors.margins: 5
+ font.pointSize: 12
property var timeout: 30
text: "Using two fingers, scale the blue rectangle so it is larger than the red outline. " +
"Press ESC to cancel the test at any time. <b>Test will exit automatically in " +
@@ -91,8 +90,8 @@ Rectangle{
id: goalsize
anchors.top: instructions.bottom
anchors.bottom: mainWindow.bottom
- anchors.bottomMargin: units.gu(5)
- anchors.margins: units.gu(8)
+ anchors.bottomMargin: 5
+ anchors.margins: 8
anchors.right: mainWindow.right
anchors.left: mainWindow.left
border.color: "red"
diff --git a/debian/.git-dpm b/debian/.git-dpm
index 22cee2d..c4b01cd 100644
--- a/debian/.git-dpm
+++ b/debian/.git-dpm
@@ -1,8 +1,8 @@
# see git-dpm(1) from git-dpm package
-4654c789a2629e1c437ee760afa3f5f9461315b5
-4654c789a2629e1c437ee760afa3f5f9461315b5
-4654c789a2629e1c437ee760afa3f5f9461315b5
-4654c789a2629e1c437ee760afa3f5f9461315b5
-plainbox-provider-checkbox_0.42.0.orig.tar.gz
-786b9714b7f8b3ee7064deabbf94ff9754d1aef8
-1737599
+b3f24fb38ac39af2a93399556f622db0216577a5
+b3f24fb38ac39af2a93399556f622db0216577a5
+b3f24fb38ac39af2a93399556f622db0216577a5
+b3f24fb38ac39af2a93399556f622db0216577a5
+plainbox-provider-checkbox_0.43.0.orig.tar.gz
+dafb26f938f6649039461ef12875dd5985643c73
+1738426
diff --git a/manage.py b/manage.py
index ef1573a..ff9a656 100755
--- a/manage.py
+++ b/manage.py
@@ -5,7 +5,7 @@ from plainbox.provider_manager import N_
setup(
name='plainbox-provider-checkbox',
namespace='com.canonical.certification',
- version="0.42.0",
+ version="0.43.0",
description=N_("Checkbox provider"),
gettext_domain='plainbox-provider-checkbox',
strict=False, deprecated=False,
diff --git a/units/audio/test-plan.pxu b/units/audio/test-plan.pxu
index b425c57..a147682 100644
--- a/units/audio/test-plan.pxu
+++ b/units/audio/test-plan.pxu
@@ -5,18 +5,27 @@ _description:
Audio tests
See Monitor / Graphic test plans for hybrid-graphic monitor audio tests
include:
- audio/alsa_info_collect
- audio/alsa_info_attachment
- audio/list_devices
- audio/speaker-headphone-plug-detection certification-status=blocker
- audio/microphone-plug-detection certification-status=blocker
- audio/playback_headphones certification-status=blocker
- audio/alsa_record_playback_external certification-status=blocker
- audio/playback_auto certification-status=blocker
- audio/alsa_record_playback_internal certification-status=blocker
- audio/channels
- audio/external-linein
- audio/external-lineout
+nested_part:
+ com.canonical.certification::audio-cert-manual
+ com.canonical.certification::audio-cert-automated
+
+id: audio-cert-manual
+unit: test plan
+_name: Audio tests (Manual)
+_description:
+ Audio tests
+ See Monitor / Graphic test plans for hybrid-graphic monitor audio tests (Manual)
+include:
+ audio/speaker-headphone-plug-detection certification-status=blocker
+ audio/microphone-plug-detection certification-status=blocker
+ audio/playback_headphones certification-status=blocker
+ audio/alsa_record_playback_external certification-status=blocker
+ audio/playback_auto certification-status=blocker
+ audio/alsa_record_playback_internal certification-status=blocker
+ audio/channels
+ audio/external-linein
+ audio/external-lineout
+
id: after-suspend-audio-cert-full
unit: test plan
diff --git a/units/bluetooth/test-plan.pxu b/units/bluetooth/test-plan.pxu
index 7fa002e..ae2c305 100644
--- a/units/bluetooth/test-plan.pxu
+++ b/units/bluetooth/test-plan.pxu
@@ -1,13 +1,24 @@
id: bluetooth-cert-full
unit: test plan
_name: Bluetooth tests
-_description: Bluetooth tests
+_description:
+ Bluetooth tests
include:
- bluetooth/detect-output certification-status=blocker
- bluetooth/audio-a2dp certification-status=blocker
- bluetooth/HID
- bluetooth4/HOGP-mouse certification-status=non-blocker
- bluetooth4/HOGP-keyboard certification-status=non-blocker
+nested_part:
+ com.canonical.certification::bluetooth-cert-manual
+ com.canonical.certification::bluetooth-cert-automated
+
+id: bluetooth-cert-manual
+unit: test plan
+_name: Bluetooth tests (Manual)
+_description:
+ Bluetooth tests (Manual)
+include:
+ bluetooth/audio-a2dp certification-status=blocker
+ bluetooth/HID
+ bluetooth4/HOGP-mouse certification-status=non-blocker
+ bluetooth4/HOGP-keyboard certification-status=non-blocker
+
id: bluetooth-cert-automated
unit: test plan
diff --git a/units/camera/test-plan.pxu b/units/camera/test-plan.pxu
index 2cf5550..e4302be 100644
--- a/units/camera/test-plan.pxu
+++ b/units/camera/test-plan.pxu
@@ -1,12 +1,22 @@
id: camera-cert-full
unit: test plan
_name: Camera tests
-_description: Camera tests
+_description:
+ Camera tests
include:
- camera/detect certification-status=blocker
- camera/still certification-status=blocker
- camera/display certification-status=blocker
- camera/multiple-resolution-images certification-status=blocker
+nested_part:
+ com.canonical.certification::camera-cert-manual
+ com.canonical.certification::camera-cert-automated
+
+id: camera-cert-manual
+unit: test plan
+_name: Camera tests (Manual)
+_description:
+ Camera tests (Manual)
+include:
+ camera/still certification-status=blocker
+ camera/display certification-status=blocker
+
id: after-suspend-camera-cert-full
unit: test plan
diff --git a/units/cpu/jobs.pxu b/units/cpu/jobs.pxu
index bdea273..bf23af7 100644
--- a/units/cpu/jobs.pxu
+++ b/units/cpu/jobs.pxu
@@ -2,8 +2,7 @@ plugin: shell
category_id: com.canonical.plainbox::cpu
id: cpu/scaling_test
estimated_duration: 150.0
-requires:
- package.name == 'fwts' or executable.name == 'fwts'
+requires: executable.name == 'fwts'
user: root
environ: PLAINBOX_SESSION_SHARE LD_LIBRARY_PATH SNAP
command:
@@ -32,8 +31,7 @@ plugin: shell
category_id: com.canonical.plainbox::cpu
id: cpu/maxfreq_test
estimated_duration: 0.6
-requires:
- package.name == 'fwts' or executable.name == 'fwts'
+requires: executable.name == 'fwts'
cpuinfo.platform in ("i386", "x86_64")
user: root
environ: LD_LIBRARY_PATH SNAP
@@ -117,8 +115,7 @@ _description:
plugin:shell
id: cpu/cstates
estimated_duration: 10.0
-requires:
- package.name == 'fwts' or executable.name == 'fwts'
+requires: executable.name == 'fwts'
user: root
_summary:
Run C-States tests
diff --git a/units/cpu/test-plan.pxu b/units/cpu/test-plan.pxu
index 2678c31..c20efe8 100644
--- a/units/cpu/test-plan.pxu
+++ b/units/cpu/test-plan.pxu
@@ -1,11 +1,23 @@
id: cpu-cert-full
unit: test plan
_name: CPU tests
-_description: CPU tests
+_description:
+ CPU tests
+include:
+nested_part:
+ com.canonical.certification::cpu-cert-manual
+ com.canonical.certification::cpu-cert-automated
+
+id: cpu-cert-manual
+unit: test plan
+_name: CPU tests (Manual)
+_description:
+ CPU tests (Manual)
include:
nested_part:
cpu-cert-automated
+
id: cpu-cert-automated
unit: test plan
_name: CPU tests (automated)
diff --git a/units/esata/test-plan.pxu b/units/esata/test-plan.pxu
index b7e59cd..e2cc21c 100644
--- a/units/esata/test-plan.pxu
+++ b/units/esata/test-plan.pxu
@@ -1,11 +1,30 @@
id: esata-cert-full
unit: test plan
_name: eSATA tests
-_description: eSATA tests
+_description:
+ eSATA tests
include:
- esata/insert certification-status=blocker
- esata/storage-test certification-status=blocker
- esata/remove certification-status=blocker
+nested_part:
+ com.canonical.certification::esata-cert-manual
+ com.canonical.certification::esata-cert-automated
+
+id: esata-cert-manual
+unit: test plan
+_name: eSATA tests (Manual)
+_description:
+ eSATA tests (Manual)
+include:
+ esata/insert certification-status=blocker
+ esata/storage-test certification-status=blocker
+ esata/remove certification-status=blocker
+
+id: esata-cert-automated
+unit: test plan
+_name: eSATA tests (Automated)
+_description:
+ eSATA tests (Automated)
+include:
+
id: esata-cert-blockers
unit: test plan
diff --git a/units/firewire/test-plan.pxu b/units/firewire/test-plan.pxu
index ecb6084..66de049 100644
--- a/units/firewire/test-plan.pxu
+++ b/units/firewire/test-plan.pxu
@@ -1,11 +1,30 @@
id: firewire-cert-full
unit: test plan
_name: Firewire tests
-_description: Firewire tests
+_description:
+ Firewire tests
include:
- firewire/insert certification-status=blocker
- firewire/storage-test certification-status=blocker
- firewire/remove certification-status=blocker
+nested_part:
+ com.canonical.certification::firewire-cert-manual
+ com.canonical.certification::firewire-cert-automated
+
+id: firewire-cert-manual
+unit: test plan
+_name: Firewire tests (Manual)
+_description:
+ Firewire tests (Manual)
+include:
+ firewire/insert certification-status=blocker
+ firewire/storage-test certification-status=blocker
+ firewire/remove certification-status=blocker
+
+id: firewire-cert-automated
+unit: test plan
+_name: Firewire tests (Automated)
+_description:
+ Firewire tests (Automated)
+include:
+
id: firewire-cert-blockers
unit: test plan
diff --git a/units/firmware/jobs.pxu b/units/firmware/jobs.pxu
index 3095273..5c8dcee 100644
--- a/units/firmware/jobs.pxu
+++ b/units/firmware/jobs.pxu
@@ -4,7 +4,7 @@ plugin: shell
category_id: com.canonical.plainbox::firmware
id: firmware/fwts_{name}
estimated_duration: 1.2
-requires: package.name == 'fwts'
+requires: executable.name == 'fwts'
user: root
command: checkbox-support-fwts_test -t {name} -l $PLAINBOX_SESSION_SHARE/fwts_{name}.log
_description: Run {name} test from Firmware Test Suite.
@@ -16,7 +16,7 @@ plugin: attachment
category_id: com.canonical.plainbox::firmware
id: firmware/fwts_{name}.log
estimated_duration: 1.2
-requires: package.name == 'fwts'
+requires: executable.name == 'fwts'
user: root
command: [[ -e $PLAINBOX_SESSION_SHARE/fwts_{name}.log ]] && xz -c $PLAINBOX_SESSION_SHARE/fwts_{name}.log
_description: Attach log for FWTS {name} test.
@@ -26,8 +26,7 @@ plugin:shell
category_id: com.canonical.plainbox::firmware
id: firmware/fwts_desktop_diagnosis
estimated_duration: 10.0
-requires:
- package.name == 'fwts'
+requires: executable.name == 'fwts'
user: root
_description:
Run Firmware Test Suite (fwts) QA-concerned desktop-specific diagnosis tests.
@@ -40,8 +39,7 @@ plugin:shell
category_id: com.canonical.plainbox::firmware
id: firmware/fwts_desktop_diagnosis_hwe
estimated_duration: 5.0
-requires:
- package.name == 'fwts'
+requires: executable.name == 'fwts'
user: root
_description:
Run Firmware Test Suite (fwts) HWE-concerned desktop-specific diagnosis tests.
diff --git a/units/graphics/jobs.pxu b/units/graphics/jobs.pxu
index 261a527..08bc7b3 100644
--- a/units/graphics/jobs.pxu
+++ b/units/graphics/jobs.pxu
@@ -87,7 +87,7 @@ category_id: com.canonical.plainbox::graphics
id: graphics/{index}_screen_resolution_{product_slug}
requires:
device.category == 'VIDEO'
- package.name == 'qmlscene'
+ executable.name == 'qmlscene'
command: qmlscene -qt5 --transparent --fullscreen $PLAINBOX_PROVIDER_DATA/resolution_test.qml
estimated_duration: 10.0
_summary: Test default resolution for {vendor} {product}
@@ -240,7 +240,7 @@ id: graphics/{index}_rotation_{product_slug}
depends: graphics/xorg-version
command:
source graphics_env {driver} {index}
- rotation_test_using_dbus
+ rotation_test
estimated_duration: 20.000
_summary: Test rotation for {vendor} {product}
_description:
@@ -283,7 +283,7 @@ template-filter: graphics_card.driver in ['amdgpu', 'amdgpu-pro']
plugin: shell
category_id: com.canonical.plainbox::graphics
id: graphics/{index}_valid_opengl_renderer_{product_slug}
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxinfo'
command:
renderer=`DRI_PRIME=1 glxinfo | grep "OpenGL re"`
echo $renderer
@@ -298,7 +298,7 @@ template-resource: graphics_card
plugin: user-interact-verify
category_id: com.canonical.plainbox::graphics
id: graphics/{index}_glxgears_{product_slug}
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command:
source graphics_env {driver} {index}
glxgears
@@ -319,7 +319,7 @@ template-resource: graphics_card
plugin: user-interact-verify
category_id: com.canonical.plainbox::graphics
id: graphics/{index}_glxgears_fullscreen_{product_slug}
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command:
source graphics_env {driver} {index}
glxgears -fullscreen
@@ -340,7 +340,7 @@ template-resource: graphics_card
plugin: shell
category_id: com.canonical.plainbox::graphics
id: graphics/{index}_3d_window_open_close_{product_slug}
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command: window_test -t open-close -i 10
estimated_duration: 60.525
_description: Open and close a 3D window multiple times on the {vendor} {product} video card
@@ -351,7 +351,7 @@ template-resource: graphics_card
plugin: shell
category_id: com.canonical.plainbox::graphics
id: graphics/{index}_3d_window_suspend_resume_{product_slug}
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command: window_test -t suspend-resume -i 10
estimated_duration: 121.00
_description: Open, suspend resume and close a 3D window multiple times on the {vendor} {product} video card
@@ -362,7 +362,7 @@ template-resource: graphics_card
plugin: shell
category_id: com.canonical.plainbox::graphics
id: graphics/{index}_multi_3d_windows_open_close_{product_slug}
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command: window_test -t open-close-multi -i 10 -w 4
estimated_duration: 60.000
_description: Open and close 4 3D windows multiple times on the {vendor} {product} video card
@@ -374,8 +374,8 @@ plugin: shell
category_id: com.canonical.plainbox::graphics
id: graphics/{index}_3d_window_move_{product_slug}
requires:
- package.name == 'mesa-utils'
- package.name == 'wmctrl'
+ executable.name == 'glxgears'
+ executable.name == 'wmctrl'
command: window_test -t move
estimated_duration: 50.000
_description: Move a 3D window around the screen on the {vendor} {product} video card
diff --git a/units/graphics/legacy.pxu b/units/graphics/legacy.pxu
index 5e8fe82..74153cc 100644
--- a/units/graphics/legacy.pxu
+++ b/units/graphics/legacy.pxu
@@ -47,7 +47,7 @@ category_id: com.canonical.plainbox::graphics
id: graphics/screen-resolution
requires:
device.category == 'VIDEO'
- package.name == 'qmlscene'
+ executable.name == 'qmlscene'
command: qmlscene -qt5 --transparent --fullscreen $PLAINBOX_PROVIDER_DATA/resolution_test.qml
estimated_duration: 10.0
_summary: Test default resolution
@@ -174,7 +174,7 @@ _summary: Test Unity 3D support
plugin: user-interact-verify
category_id: com.canonical.plainbox::graphics
id: graphics/glxgears
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command: glxgears; true
_summary: Test that glxgears works
_description:
@@ -190,7 +190,7 @@ _description:
plugin: shell
category_id: com.canonical.plainbox::graphics
id: graphics/3d_window_open_close
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command: window_test -t open-close -i 10
estimated_duration: 60.525
_summary: Test 3D window open/close
@@ -199,7 +199,7 @@ _description: Open and close a 3D window multiple times
plugin: shell
category_id: com.canonical.plainbox::graphics
id: graphics/3d_window_suspend_resume
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command: window_test -t suspend-resume -i 10
estimated_duration: 121.00
_description: Open, suspend resume and close a 3D window multiple times
@@ -208,7 +208,7 @@ _summary: Test a 3D window with suspend/resume
plugin: shell
category_id: com.canonical.plainbox::graphics
id: graphics/multi_3d_windows_open_close
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command: window_test -t open-close-multi -i 10 -w 4
estimated_duration: 60.000
_description: Open and close 4 3D windows multiple times
@@ -217,7 +217,7 @@ _summary: Test Multi 3D window open/close
plugin: shell
category_id: com.canonical.plainbox::graphics
id: graphics/3d_window_move
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command: window_test -t move
estimated_duration: 50.000
_description: Move a 3D window around the screen
diff --git a/units/graphics/test-plan.pxu b/units/graphics/test-plan.pxu
index a85b194..9c1f294 100644
--- a/units/graphics/test-plan.pxu
+++ b/units/graphics/test-plan.pxu
@@ -1,42 +1,88 @@
id: graphics-integrated-gpu-cert-full
unit: test plan
_name: Graphics tests (integrated GPU)
-_description: Graphics tests (integrated GPU)
+_description:
+ Graphics tests (integrated GPU)
include:
- miscellanea/chvt
- graphics/xorg-version certification-status=blocker
- graphics/xorg-failsafe certification-status=blocker
- graphics/xorg-process certification-status=blocker
- graphics/VESA_drivers_not_in_use certification-status=blocker
- graphics/1_maximum_resolution_.* certification-status=blocker
- graphics/1_glxgears_.* certification-status=blocker
- graphics/1_driver_version_.* certification-status=blocker
- graphics/1_compiz_check_.* certification-status=blocker
- graphics/1_rotation_.* certification-status=blocker
- graphics/1_video_.* certification-status=blocker
- graphics/1_minimum_resolution_.*
- graphics/1_cycle_resolution_.* certification-status=non-blocker
+bootstrap_include:
+ graphics_card
+nested_part:
+ com.canonical.certification::graphics-integrated-gpu-cert-manual
+ com.canonical.certification::graphics-integrated-gpu-cert-automated
+
+id: graphics-integrated-gpu-cert-manual
+unit: test plan
+_name: Graphics tests (integrated GPU) (Manual)
+_description:
+ Graphics tests (integrated GPU) (Manual)
+include:
+ miscellanea/chvt
+ graphics/1_maximum_resolution_.* certification-status=blocker
+ graphics/1_glxgears_.* certification-status=blocker
+ graphics/1_rotation_.* certification-status=blocker
+ graphics/1_video_.* certification-status=blocker
+ graphics/1_cycle_resolution_.* certification-status=non-blocker
+bootstrap_include:
+ graphics_card
+
+id: graphics-integrated-gpu-cert-automated
+unit: test plan
+_name: Graphics tests (integrated GPU) (Automated)
+_description:
+ Graphics tests (integrated GPU) (Automated)
+include:
+ graphics/xorg-version certification-status=blocker
+ graphics/xorg-failsafe certification-status=blocker
+ graphics/xorg-process certification-status=blocker
+ graphics/VESA_drivers_not_in_use certification-status=blocker
+ graphics/1_driver_version_.* certification-status=blocker
+ graphics/1_compiz_check_.* certification-status=blocker
+ graphics/1_minimum_resolution_.*
bootstrap_include:
graphics_card
+
id: graphics-discrete-gpu-cert-full
unit: test plan
_name: Graphics tests (discrete GPU)
-_description: Graphics tests (discrete GPU)
+_description:
+ Graphics tests (discrete GPU)
include:
- graphics/2_switch_card_.*_xenial certification-status=blocker
- graphics/2_maximum_resolution_.* certification-status=blocker
- graphics/2_valid_opengl_renderer_.* certification-status=blocker
- graphics/2_glxgears_.* certification-status=blocker
- graphics/2_driver_version_.* certification-status=blocker
- graphics/2_compiz_check_.* certification-status=blocker
- graphics/2_rotation_.* certification-status=blocker
- graphics/2_video_.* certification-status=blocker
- graphics/2_minimum_resolution_.*
- graphics/2_cycle_resolution_.* certification-status=non-blocker
+bootstrap_include:
+ graphics_card
+nested_part:
+ com.canonical.certification::graphics-discrete-gpu-cert-manual
+ com.canonical.certification::graphics-discrete-gpu-cert-automated
+
+id: graphics-discrete-gpu-cert-manual
+unit: test plan
+_name: Graphics tests (discrete GPU) (Manual)
+_description:
+ Graphics tests (discrete GPU) (Manual)
+include:
+ graphics/2_switch_card_.*_xenial certification-status=blocker
+ graphics/2_maximum_resolution_.* certification-status=blocker
+ graphics/2_glxgears_.* certification-status=blocker
+ graphics/2_rotation_.* certification-status=blocker
+ graphics/2_video_.* certification-status=blocker
+ graphics/2_cycle_resolution_.* certification-status=non-blocker
bootstrap_include:
graphics_card
+id: graphics-discrete-gpu-cert-automated
+unit: test plan
+_name: Graphics tests (discrete GPU) (Automated)
+_description:
+ Graphics tests (discrete GPU) (Automated)
+include:
+ graphics/2_valid_opengl_renderer_.* certification-status=blocker
+ graphics/2_driver_version_.* certification-status=blocker
+ graphics/2_compiz_check_.* certification-status=blocker
+ graphics/2_minimum_resolution_.*
+bootstrap_include:
+ graphics_card
+
+
id: after-suspend-graphics-integrated-gpu-cert-full
unit: test plan
_name: After suspend tests (integrated GPU)
@@ -58,6 +104,7 @@ include:
suspend/1_video_after_suspend_.*_xenial certification-status=blocker
suspend/1_cycle_resolutions_after_suspend_.*_xenial certification-status=non-blocker
suspend/1_xrandr_screens_after_suspend.tar.gz_xenial
+ after-suspend-manual-monitor/1_dim_brightness_.* certification-status=blocker
id: after-suspend-graphics-discrete-gpu-cert-full
unit: test plan
@@ -76,6 +123,7 @@ include:
suspend/2_video_after_suspend_.*_xenial certification-status=blocker
suspend/2_cycle_resolutions_after_suspend_.*_xenial certification-status=non-blocker
suspend/2_xrandr_screens_after_suspend_.*.tar.gz_xenial
+ after-suspend-manual-monitor/2_dim_brightness_.* certification-status=blocker
id: graphics-integrated-gpu-cert-blockers
unit: test plan
@@ -128,6 +176,7 @@ include:
suspend/1_display_after_suspend_.*_xenial certification-status=blocker
suspend/1_glxgears_after_suspend_.*_xenial certification-status=blocker
suspend/1_video_after_suspend_.*_xenial certification-status=blocker
+ after-suspend-manual-monitor/1_dim_brightness_.* certification-status=blocker
id: after-suspend-graphics-discrete-gpu-cert-blockers
unit: test plan
@@ -142,3 +191,4 @@ include:
suspend/2_display_after_suspend_.*_xenial certification-status=blocker
suspend/2_glxgears_after_suspend_.*_xenial certification-status=blocker
suspend/2_video_after_suspend_.*_xenial certification-status=blocker
+ after-suspend-manual-monitor/2_dim_brightness_.* certification-status=blocker
diff --git a/units/info/test-plan.pxu b/units/info/test-plan.pxu
index c01d47e..e54b443 100644
--- a/units/info/test-plan.pxu
+++ b/units/info/test-plan.pxu
@@ -1,32 +1,55 @@
id: info-attachment-cert-full
unit: test plan
_name: Info attachment jobs
-_description: Info attachment jobs
+_description:
+ Info attachment jobs
include:
- acpi_sleep_attachment
- codecs_attachment
- cpuinfo_attachment
- dkms_info_attachment
- dmesg_attachment
- dmi_attachment
- dmidecode_attachment
- efi_attachment
- info/buildstamp
- info/disk_partitions
- info/hdparm_.*.txt
- info/touchpad_driver
- installer_debug.gz
- kernel_cmdline_attachment
- lsmod_attachment
- lspci_attachment
- lspci_standard_config_attachment
- lsusb_attachment
- meminfo_attachment
- modinfo_attachment
- modprobe_attachment
- modules_attachment
- sysctl_attachment
- sysfs_attachment
- udev_attachment
+bootstrap_include:
+ device
+nested_part:
+ com.canonical.certification::info-attachment-cert-manual
+ com.canonical.certification::info-attachment-cert-automated
+
+id: info-attachment-cert-manual
+unit: test plan
+_name: Info attachment jobs (Manual)
+_description:
+ Info attachment jobs (Manual)
+include:
+bootstrap_include:
+ device
+
+id: info-attachment-cert-automated
+unit: test plan
+_name: Info attachment jobs (Automated)
+_description:
+ Info attachment jobs (Automated)
+include:
+ acpi_sleep_attachment
+ codecs_attachment
+ cpuinfo_attachment
+ dkms_info_attachment
+ dmesg_attachment
+ dmi_attachment
+ dmidecode_attachment
+ efi_attachment
+ info/buildstamp
+ info/disk_partitions
+ info/hdparm_.*.txt
+ info/touchpad_driver
+ installer_debug.gz
+ kernel_cmdline_attachment
+ lsmod_attachment
+ lspci_attachment
+ lspci_standard_config_attachment
+ lsusb_attachment
+ meminfo_attachment
+ modinfo_attachment
+ modprobe_attachment
+ modules_attachment
+ sysctl_attachment
+ sysfs_attachment
+ udev_attachment
bootstrap_include:
device
+
diff --git a/units/input/test-plan.pxu b/units/input/test-plan.pxu
index 8033883..ef9cf75 100644
--- a/units/input/test-plan.pxu
+++ b/units/input/test-plan.pxu
@@ -1,12 +1,29 @@
id: input-cert-full
unit: test plan
_name: Input tests
-_description: Input tests
+_description:
+ Input tests
include:
- input/accelerometer certification-status=non-blocker
- input/pointing_.* certification-status=blocker
- input/clicking_.* certification-status=blocker
- input/keyboard certification-status=blocker
+nested_part:
+ com.canonical.certification::input-cert-manual
+ com.canonical.certification::input-cert-automated
+
+id: input-cert-manual
+unit: test plan
+_name: Input tests (Manual)
+_description:
+ Input tests (Manual)
+include:
+ input/accelerometer certification-status=non-blocker
+ input/keyboard certification-status=blocker
+
+id: input-cert-automated
+unit: test plan
+_name: Input tests (Automated)
+_description:
+ Input tests (Automated)
+include:
+
id: after-suspend-input-cert-full
unit: test plan
diff --git a/units/keys/test-plan.pxu b/units/keys/test-plan.pxu
index 4fd7092..c75a32a 100644
--- a/units/keys/test-plan.pxu
+++ b/units/keys/test-plan.pxu
@@ -4,17 +4,35 @@ _name: Special keys tests
_description:
Special keys tests (w/o sleep/hibernate keys, see Power Management test plans)
include:
- keys/lock-screen certification-status=blocker
- keys/super certification-status=blocker
- keys/battery-info certification-status=blocker
- keys/brightness certification-status=blocker
- keys/media-control certification-status=blocker
- keys/mute certification-status=blocker
- keys/volume certification-status=blocker
- keys/video-out certification-status=blocker
- keys/wireless certification-status=blocker
- keys/keyboard-backlight certification-status=blocker
- keys/microphone-mute certification-status=blocker
+nested_part:
+ com.canonical.certification::keys-cert-manual
+ com.canonical.certification::keys-cert-automated
+
+id: keys-cert-manual
+unit: test plan
+_name: Special keys tests (Manual)
+_description:
+ Special keys tests (w/o sleep/hibernate keys, see Power Management test plans) (Manual)
+include:
+ keys/lock-screen certification-status=blocker
+ keys/super certification-status=blocker
+ keys/battery-info certification-status=blocker
+ keys/brightness certification-status=blocker
+ keys/media-control certification-status=blocker
+ keys/mute certification-status=blocker
+ keys/volume certification-status=blocker
+ keys/video-out certification-status=blocker
+ keys/wireless certification-status=blocker
+ keys/keyboard-backlight certification-status=blocker
+ keys/microphone-mute certification-status=blocker
+
+id: keys-cert-automated
+unit: test plan
+_name: Special keys tests (Automated)
+_description:
+ Special keys tests (w/o sleep/hibernate keys, see Power Management test plans) (Automated)
+include:
+
id: after-suspend-keys-cert-full
unit: test plan
diff --git a/units/led/test-plan.pxu b/units/led/test-plan.pxu
index f43a3ca..88d38a6 100644
--- a/units/led/test-plan.pxu
+++ b/units/led/test-plan.pxu
@@ -2,19 +2,45 @@ id: led-cert-full
unit: test plan
_name: LED tests
_description:
+ LED tests
+ Notes: - led/power-blink-suspend and led/suspend are used later in the
+ power management testplan just after a number of suspend tests.
+ - led/wireless is redundant given that we have led/wlan and
+ led/bluetooth already.
+include:
+nested_part:
+ com.canonical.certification::led-cert-manual
+ com.canonical.certification::led-cert-automated
+
+id: led-cert-manual
+unit: test plan
+_name: LED tests (Manual)
+_description:
LED tests
Notes: - led/power-blink-suspend and led/suspend are used later in the
power management testplan just after a number of suspend tests.
- led/wireless is redundant given that we have led/wlan and
- led/bluetooth already.
+ led/bluetooth already. (Manual)
include:
- led/battery-charged
- led/battery-charging
- led/battery-low
- led/camera
- led/caps-lock
- led/power
- led/touchpad
+ led/battery-charged
+ led/battery-charging
+ led/battery-low
+ led/camera
+ led/caps-lock
+ led/power
+ led/touchpad
+
+id: led-cert-automated
+unit: test plan
+_name: LED tests (Automated)
+_description:
+ LED tests
+ Notes: - led/power-blink-suspend and led/suspend are used later in the
+ power management testplan just after a number of suspend tests.
+ - led/wireless is redundant given that we have led/wlan and
+ led/bluetooth already. (Automated)
+include:
+
id: after-suspend-led-cert-full
unit: test plan
diff --git a/units/mediacard/test-plan.pxu b/units/mediacard/test-plan.pxu
index 087e556..58d3f07 100644
--- a/units/mediacard/test-plan.pxu
+++ b/units/mediacard/test-plan.pxu
@@ -1,14 +1,33 @@
id: mediacard-cert-full
unit: test plan
_name: Mediacard tests
-_description: Mediacard tests
+_description:
+ Mediacard tests
include:
- mediacard/sd-insert certification-status=blocker
- mediacard/sd-storage certification-status=blocker
- mediacard/sd-remove certification-status=blocker
- mediacard/sdhc-insert certification-status=blocker
- mediacard/sdhc-storage certification-status=blocker
- mediacard/sdhc-remove certification-status=blocker
+nested_part:
+ com.canonical.certification::mediacard-cert-manual
+ com.canonical.certification::mediacard-cert-automated
+
+id: mediacard-cert-manual
+unit: test plan
+_name: Mediacard tests (Manual)
+_description:
+ Mediacard tests (Manual)
+include:
+ mediacard/sd-insert certification-status=blocker
+ mediacard/sd-storage certification-status=blocker
+ mediacard/sd-remove certification-status=blocker
+ mediacard/sdhc-insert certification-status=blocker
+ mediacard/sdhc-storage certification-status=blocker
+ mediacard/sdhc-remove certification-status=blocker
+
+id: mediacard-cert-automated
+unit: test plan
+_name: Mediacard tests (Automated)
+_description:
+ Mediacard tests (Automated)
+include:
+
id: after-suspend-mediacard-cert-full
unit: test plan
diff --git a/units/miscellanea/jobs.pxu b/units/miscellanea/jobs.pxu
index 10df43d..2071f06 100644
--- a/units/miscellanea/jobs.pxu
+++ b/units/miscellanea/jobs.pxu
@@ -67,8 +67,7 @@ plugin: shell
category_id: com.canonical.plainbox::miscellanea
id: miscellanea/fwts_test
estimated_duration: 1.2
-requires:
- package.name == 'fwts'
+requires: executable.name == 'fwts'
user: root
_description:
Run Firmware Test Suite (fwts) automated tests.
@@ -93,8 +92,7 @@ command: fwupdate -s
plugin: attachment
category_id: com.canonical.plainbox::miscellanea
id: miscellanea/fwts_results.log
-requires:
- package.name == 'fwts'
+requires: executable.name == 'fwts'
command:
[[ -e ${PLAINBOX_SESSION_SHARE}/fwts_results.log ]] && xz -c ${PLAINBOX_SESSION_SHARE}/fwts_results.log
_description: Attaches the miscellanes/fwts_test results log to the submission.
@@ -103,8 +101,7 @@ plugin: attachment
category_id: com.canonical.plainbox::miscellanea
estimated_duration: 0.5
id: miscellanea/fwts_results_hwe.log.gz
-requires:
- package.name == 'fwts'
+requires: executable.name == 'fwts'
command:
[ -f $PLAINBOX_SESSION_SHARE/fwts_results_hwe.log ] && gzip -c $PLAINBOX_SESSION_SHARE/fwts_results_hwe.log
_description: Attaches the FWTS results log to the submission (to HWE)
@@ -292,8 +289,7 @@ _description:
plugin:shell
id: miscellanea/oops
estimated_duration: 10.0
-requires:
- package.name == 'fwts'
+requires: executable.name == 'fwts'
user: root
_description:
Run Firmware Test Suite (fwts) oops tests.
diff --git a/units/miscellanea/test-plan.pxu b/units/miscellanea/test-plan.pxu
index adf771f..758386e 100644
--- a/units/miscellanea/test-plan.pxu
+++ b/units/miscellanea/test-plan.pxu
@@ -1,11 +1,23 @@
id: misc-client-cert-full
unit: test plan
_name: Miscellaneous client tests
-_description: Miscellaneous client tests (fwts, dmi, oops)
+_description:
+ Miscellaneous client tests (fwts, dmi, oops)
+include:
+nested_part:
+ com.canonical.certification::misc-client-cert-manual
+ com.canonical.certification::misc-client-cert-automated
+
+id: misc-client-cert-manual
+unit: test plan
+_name: Miscellaneous client tests (Manual)
+_description:
+ Miscellaneous client tests (fwts, dmi, oops) (Manual)
include:
nested_part:
misc-client-cert-automated
+
id: misc-client-cert-automated
unit: test plan
_name: Miscellaneous client tests (automated)
diff --git a/units/mobilebroadband/test-plan.pxu b/units/mobilebroadband/test-plan.pxu
index 166a297..dd086c7 100644
--- a/units/mobilebroadband/test-plan.pxu
+++ b/units/mobilebroadband/test-plan.pxu
@@ -1,11 +1,23 @@
id: mobilebroadband-cert-full
unit: test plan
_name: Mobile broadband tests
-_description: Mobile broadband tests
+_description:
+ Mobile broadband tests
+include:
+nested_part:
+ com.canonical.certification::mobilebroadband-cert-manual
+ com.canonical.certification::mobilebroadband-cert-automated
+
+id: mobilebroadband-cert-manual
+unit: test plan
+_name: Mobile broadband tests (Manual)
+_description:
+ Mobile broadband tests (Manual)
include:
nested_part:
mobilebroadband-cert-automated
+
id: mobilebroadband-cert-automated
unit: test plan
_name: Mobile broadband tests (automated)
diff --git a/units/monitor/jobs.pxu b/units/monitor/jobs.pxu
index 36425db..6c1ac58 100644
--- a/units/monitor/jobs.pxu
+++ b/units/monitor/jobs.pxu
@@ -129,6 +129,7 @@ requires: dmi.product in ['Notebook','Laptop','Portable','All In One','All-In-On
plugin: user-interact-verify
category_id: com.canonical.plainbox::monitor
user: root
+flags: also-after-suspend-manual
command: brightness_test
_purpose:
This test will test changes to screen brightness
diff --git a/units/monitor/test-plan.pxu b/units/monitor/test-plan.pxu
index 10976c9..344b304 100644
--- a/units/monitor/test-plan.pxu
+++ b/units/monitor/test-plan.pxu
@@ -1,51 +1,97 @@
id: monitor-integrated-gpu-cert-full
unit: test plan
_name: Monitor tests (integrated GPU)
-_description: Monitor tests (integrated GPU)
+_description:
+ Monitor tests (integrated GPU)
include:
- monitor/1_powersaving_.* certification-status=blocker
- monitor/1_dim_brightness_.* certification-status=blocker
- monitor/1_displayport_.* certification-status=blocker
- monitor/1_type-c_displayport_.* certification-status=non-blocker
- audio/1_playback_displayport_.* certification-status=blocker
- audio/1_playback_type-c_displayport_.* certification-status=non-blocker
- monitor/1_dvi_.* certification-status=blocker
- monitor/1_hdmi_.* certification-status=blocker
- audio/1_playback_hdmi_.* certification-status=blocker
- monitor/1_thunderbolt_.* certification-status=blocker
- monitor/1_thunderbolt3_.* certification-status=non-blocker
- audio/1_playback_thunderbolt_.* certification-status=blocker
- audio/1_playback_thunderbolt3_.* certification-status=non-blocker
- thunderbolt/daisy-chain certification-status=blocker
- thunderbolt3/daisy-chain certification-status=non-blocker
- monitor/1_vga_.* certification-status=blocker
- monitor/1_multi-head_.* certification-status=blocker
+bootstrap_include:
+ graphics_card
+nested_part:
+ com.canonical.certification::monitor-integrated-gpu-cert-manual
+ com.canonical.certification::monitor-integrated-gpu-cert-automated
+
+id: monitor-integrated-gpu-cert-manual
+unit: test plan
+_name: Monitor tests (integrated GPU) (Manual)
+_description:
+ Monitor tests (integrated GPU) (Manual)
+include:
+ monitor/1_powersaving_.* certification-status=blocker
+ monitor/1_dim_brightness_.* certification-status=blocker
+ monitor/1_displayport_.* certification-status=blocker
+ monitor/1_type-c_displayport_.* certification-status=blocker
+ audio/1_playback_displayport_.* certification-status=blocker
+ audio/1_playback_type-c_displayport_.* certification-status=blocker
+ monitor/1_dvi_.* certification-status=blocker
+ monitor/1_hdmi_.* certification-status=blocker
+ audio/1_playback_hdmi_.* certification-status=blocker
+ monitor/1_thunderbolt_.* certification-status=blocker
+ monitor/1_thunderbolt3_.* certification-status=non-blocker
+ audio/1_playback_thunderbolt_.* certification-status=blocker
+ audio/1_playback_thunderbolt3_.* certification-status=non-blocker
+ thunderbolt/daisy-chain certification-status=blocker
+ thunderbolt3/daisy-chain certification-status=non-blocker
+ monitor/1_vga_.* certification-status=blocker
+ monitor/1_multi-head_.* certification-status=blocker
bootstrap_include:
graphics_card
+id: monitor-integrated-gpu-cert-automated
+unit: test plan
+_name: Monitor tests (integrated GPU) (Automated)
+_description:
+ Monitor tests (integrated GPU) (Automated)
+include:
+bootstrap_include:
+ graphics_card
+
+
id: monitor-discrete-gpu-cert-full
unit: test plan
_name: Monitor tests (discrete GPU)
-_description: Monitor tests (discrete GPU)
+_description:
+ Monitor tests (discrete GPU)
+include:
+bootstrap_include:
+ graphics_card
+nested_part:
+ com.canonical.certification::monitor-discrete-gpu-cert-manual
+ com.canonical.certification::monitor-discrete-gpu-cert-automated
+
+id: monitor-discrete-gpu-cert-manual
+unit: test plan
+_name: Monitor tests (discrete GPU) (Manual)
+_description:
+ Monitor tests (discrete GPU) (Manual)
+include:
+ monitor/2_powersaving_.* certification-status=blocker
+ monitor/2_dim_brightness_.* certification-status=blocker
+ monitor/2_displayport_.* certification-status=blocker
+ monitor/2_type-c_displayport_.* certification-status=blocker
+ audio/2_playback_displayport_.* certification-status=blocker
+ audio/2_playback_type-c_displayport_.* certification-status=blocker
+ monitor/2_dvi_.* certification-status=blocker
+ monitor/2_hdmi_.* certification-status=blocker
+ audio/2_playback_hdmi_.* certification-status=blocker
+ monitor/2_thunderbolt_.* certification-status=blocker
+ monitor/2_thunderbolt3_.* certification-status=non-blocker
+ audio/2_playback_thunderbolt_.* certification-status=blocker
+ audio/2_playback_thunderbolt3_.* certification-status=non-blocker
+ monitor/2_vga_.* certification-status=blocker
+ monitor/2_multi-head_.* certification-status=blocker
+bootstrap_include:
+ graphics_card
+
+id: monitor-discrete-gpu-cert-automated
+unit: test plan
+_name: Monitor tests (discrete GPU) (Automated)
+_description:
+ Monitor tests (discrete GPU) (Automated)
include:
- monitor/2_powersaving_.* certification-status=blocker
- monitor/2_dim_brightness_.* certification-status=blocker
- monitor/2_displayport_.* certification-status=blocker
- monitor/2_type-c_displayport_.* certification-status=non-blocker
- audio/2_playback_displayport_.* certification-status=blocker
- audio/2_playback_type-c_displayport_.* certification-status=non-blocker
- monitor/2_dvi_.* certification-status=blocker
- monitor/2_hdmi_.* certification-status=blocker
- audio/2_playback_hdmi_.* certification-status=blocker
- monitor/2_thunderbolt_.* certification-status=blocker
- monitor/2_thunderbolt3_.* certification-status=non-blocker
- audio/2_playback_thunderbolt_.* certification-status=blocker
- audio/2_playback_thunderbolt3_.* certification-status=non-blocker
- monitor/2_vga_.* certification-status=blocker
- monitor/2_multi-head_.* certification-status=blocker
bootstrap_include:
graphics_card
+
id: monitor-integrated-gpu-cert-blockers
unit: test plan
_name: Monitor tests (integrated GPU, certification blockers only)
@@ -54,7 +100,9 @@ include:
monitor/1_powersaving_.* certification-status=blocker
monitor/1_dim_brightness_.* certification-status=blocker
monitor/1_displayport_.* certification-status=blocker
+ monitor/1_type-c_displayport_.* certification-status=blocker
audio/1_playback_displayport_.* certification-status=blocker
+ audio/1_playback_type-c_displayport_.* certification-status=blocker
monitor/1_dvi_.* certification-status=blocker
monitor/1_hdmi_.* certification-status=blocker
audio/1_playback_hdmi_.* certification-status=blocker
@@ -74,7 +122,9 @@ include:
monitor/2_powersaving_.* certification-status=blocker
monitor/2_dim_brightness_.* certification-status=blocker
monitor/2_displayport_.* certification-status=blocker
+ monitor/2_type-c_displayport_.* certification-status=blocker
audio/2_playback_displayport_.* certification-status=blocker
+ audio/2_playback_type-c_displayport_.* certification-status=blocker
monitor/2_dvi_.* certification-status=blocker
monitor/2_hdmi_.* certification-status=blocker
audio/2_playback_hdmi_.* certification-status=blocker
diff --git a/units/networking/test-plan.pxu b/units/networking/test-plan.pxu
index ade662a..e9e61e2 100644
--- a/units/networking/test-plan.pxu
+++ b/units/networking/test-plan.pxu
@@ -12,7 +12,7 @@ unit: test plan
_name: Networking tests (manual)
_description: Networking tests (manual)
include:
- networking/info.* certification-status=blocker
+ networking/info_device.* certification-status=blocker
id: networking-cert-automated
unit: test plan
@@ -30,5 +30,5 @@ _description: Networking tests (certification blockers only)
include:
ethernet/detect certification-status=blocker
networking/gateway_ping certification-status=blocker
- networking/info.* certification-status=blocker
+ networking/info_device.* certification-status=blocker
networking/ntp certification-status=blocker
diff --git a/units/optical/test-plan.pxu b/units/optical/test-plan.pxu
index 0cc6ab3..2e53d79 100644
--- a/units/optical/test-plan.pxu
+++ b/units/optical/test-plan.pxu
@@ -1,14 +1,37 @@
id: optical-cert-full
unit: test plan
_name: Optical drive tests
-_description: Optical drive tests
+_description:
+ Optical drive tests
include:
- optical/detect certification-status=blocker
- optical/read_.* certification-status=blocker
- optical/bluray-read_.* certification-status=blocker
+bootstrap_include:
+ device
+nested_part:
+ com.canonical.certification::optical-cert-manual
+ com.canonical.certification::optical-cert-automated
+
+id: optical-cert-manual
+unit: test plan
+_name: Optical drive tests (Manual)
+_description:
+ Optical drive tests (Manual)
+include:
+ optical/read_.* certification-status=blocker
+ optical/bluray-read_.* certification-status=blocker
bootstrap_include:
device
+id: optical-cert-automated
+unit: test plan
+_name: Optical drive tests (Automated)
+_description:
+ Optical drive tests (Automated)
+include:
+ optical/detect certification-status=blocker
+bootstrap_include:
+ device
+
+
id: optical-cert-blockers
unit: test plan
_name: Optical drive tests (certification blockers only)
diff --git a/units/power-management/jobs.pxu b/units/power-management/jobs.pxu
index ce252fc..be640c3 100644
--- a/units/power-management/jobs.pxu
+++ b/units/power-management/jobs.pxu
@@ -19,8 +19,7 @@ environ: PLAINBOX_SESSION_SHARE
estimated_duration: 25.0
user: root
_description: Test ACPI Wakealarm (fwts wakealarm)
-requires:
- package.name == 'fwts' or executable.name == 'fwts'
+requires: executable.name == 'fwts'
command: checkbox-support-fwts_test -f aborted -t wakealarm -l $PLAINBOX_SESSION_SHARE/fwts-wakealarm.log
plugin: attachment
@@ -38,10 +37,9 @@ estimated_duration: 120.0
depends: power-management/fwts_wakealarm
user: root
environ: PLAINBOX_SESSION_SHARE
-requires:
- package.name == 'fwts'
+requires: executable.name == 'fwts'
command: pm_test --silent --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox poweroff --log-level=debug --log-dir=$PLAINBOX_SESSION_SHARE
-flags: noreturn autorestart
+flags: noreturn
_description:
This test will check the system's ability to power-off and boot.
@@ -61,10 +59,9 @@ id: power-management/reboot
estimated_duration: 120.0
user: root
environ: PLAINBOX_SESSION_SHARE
-requires:
- package.name == 'fwts'
+requires: executable.name == 'fwts'
command: pm_test --silent --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox reboot --log-level=debug --log-dir=$PLAINBOX_SESSION_SHARE
-flags: noreturn autorestart
+flags: noreturn
_description:
This test will check the system's ability to reboot cleanly.
@@ -196,7 +193,7 @@ estimated_duration: 140.0
user: root
requires:
package.name == 'upower'
- package.name == 'fwts'
+ executable.name == 'fwts'
depends: power-management/unplug_ac
_description: Checks the battery drain during suspend. Reports time and capacity until empty.
command:
diff --git a/units/stress/jobs.pxu b/units/stress/jobs.pxu
index 2a2a7d0..8d25af9 100644
--- a/units/stress/jobs.pxu
+++ b/units/stress/jobs.pxu
@@ -74,7 +74,7 @@ depends:
suspend/suspend_advanced
requires:
executable.name == 'x-terminal-emulator'
-flags: noreturn autorestart
+flags: noreturn
user: root
command:
pm_test reboot --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox --fwts --log-level=debug --log-dir=$PLAINBOX_SESSION_SHARE --suspends-before-reboot=30 -r 3 --silent
@@ -222,10 +222,9 @@ plugin: shell
category_id: com.canonical.plainbox::stress
id: stress/reboot
estimated_duration: 4500.0
-requires:
- package.name == 'fwts'
+requires: executable.name == 'fwts'
command: pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 100 --silent --log-level=notset reboot --log-dir=$PLAINBOX_SESSION_SHARE
-flags: noreturn autorestart
+flags: noreturn
user: root
environ: PLAINBOX_SESSION_SHARE
_description:
@@ -243,11 +242,10 @@ command:
plugin: shell
category_id: com.canonical.plainbox::stress
id: stress/reboot_30
-requires:
- package.name == 'fwts'
+requires: executable.name == 'fwts'
executable.name == 'x-terminal-emulator'
command: pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 30 --silent --log-level=notset reboot --log-dir=$PLAINBOX_SESSION_SHARE
-flags: noreturn autorestart
+flags: noreturn
estimated_duration: 2700
user: root
environ: PLAINBOX_SESSION_SHARE
@@ -267,10 +265,10 @@ category_id: com.canonical.plainbox::stress
id: stress/poweroff
estimated_duration: 4500.0
requires:
- package.name == 'fwts'
+ executable.name == 'fwts'
executable.name == 'x-terminal-emulator'
-command: pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox --r 100 --silent --log-level=notset poweroff --log-dir=$PLAINBOX_SESSION_SHARE
-flags: noreturn autorestart
+command: pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 100 --silent --log-level=notset poweroff --log-dir=$PLAINBOX_SESSION_SHARE
+flags: noreturn
user: root
environ: PLAINBOX_SESSION_SHARE
_description:
@@ -289,10 +287,10 @@ plugin: shell
category_id: com.canonical.plainbox::stress
id: stress/poweroff_30
requires:
- package.name == 'fwts'
+ executable.name == 'fwts'
executable.name == 'x-terminal-emulator'
-command: pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox --r 30 --silent --log-level=notset poweroff --log-dir=$PLAINBOX_SESSION_SHARE
-flags: noreturn autorestart
+command: pm_test --checkbox-respawn-cmd $PLAINBOX_SESSION_SHARE/__respawn_checkbox -r 30 --wakeup 150 --silent --log-level=notset poweroff --log-dir=$PLAINBOX_SESSION_SHARE
+flags: noreturn
estimated_duration: 3600
user: root
environ: PLAINBOX_SESSION_SHARE
diff --git a/units/stress/test-plan.pxu b/units/stress/test-plan.pxu
index 5581401..659e04e 100644
--- a/units/stress/test-plan.pxu
+++ b/units/stress/test-plan.pxu
@@ -1,11 +1,27 @@
id: stress-cert-full
unit: test plan
_name: Stress tests
-_description: Stress tests
+_description:
+ Stress tests
include:
nested_part:
+ com.canonical.certification::stress-cert-manual
+ com.canonical.certification::stress-cert-automated
+
+id: stress-cert-manual
+unit: test plan
+_name: Stress tests (Manual)
+_description:
+ Stress tests (Manual)
+include:
+ power-management/suspend_30_cycles certification-status=blocker
+ power-management/suspend-30-cycle-log-attach
+ power-management/suspend-30-cycles-time-check certification-status=non-blocker
+ power-management/hibernate_30_cycles certification-status=non-blocker
+nested_part:
stress-cert-automated
+
id: stress-cert-automated
unit: test plan
_name: Stress tests (automated)
diff --git a/units/submission/jobs.pxu b/units/submission/jobs.pxu
index a21c897..f6f73bc 100644
--- a/units/submission/jobs.pxu
+++ b/units/submission/jobs.pxu
@@ -1,11 +1,9 @@
id: dkms_info_json
plugin: attachment
category_id: com.canonical.plainbox::info
-requires:
- package.name == 'dkms'
command:
dkms_info --format json | python3 -m plainbox dev parse dkms-info | \
- jq --indent 4 '.dkms_info'
+ jq '.dkms_info'
_description: Attaches json dumps of installed dkms package information.
_summary: Attaches json dumps of installed dkms package information.
@@ -24,9 +22,9 @@ requires:
user: root
command:
dmidecode -t bios -t system | python3 -m plainbox dev parse dmidecode | \
- jq --indent 4 '[.[0]."_attributes" +
- {"category": .[0]."category"}, .[1]."_attributes" +
- {"category": .[1]."category"}]'
+ jq '[.[0]."_attributes" +
+ {"category": .[0]."category"}, .[1]."_attributes" +
+ {"category": .[1]."category"}]'
estimated_duration: 1
_description: Attaches dmidecode output
_summary: Attaches json dumps of udev_resource raw dmi devices
@@ -36,7 +34,7 @@ plugin: attachment
category_id: com.canonical.plainbox::info
command:
find /etc/modprobe.* -name \*.conf | xargs cat | python3 -m plainbox dev parse modprobe |
- jq --indent 4 'to_entries | map({"module": .key, "options": .value})'
+ jq 'to_entries | map({"module": .key, "options": .value})'
estimated_duration: 0.015
_description: Attaches the contents of the various modprobe conf files.
_summary: Attach the contents of /etc/modprobe.*
@@ -47,7 +45,7 @@ plugin: attachment
category_id: com.canonical.plainbox::info
command:
lspci -x | python3 -m plainbox dev parse pci-subsys-id | \
- jq --indent 4 '.pci_subsystem_id'
+ jq '.pci_subsystem_id'
estimated_duration: 0.1
_description: Attaches a hex dump of the standard part of the PCI configuration
space for all PCI devices.
diff --git a/units/suspend/suspend-graphics.pxu b/units/suspend/suspend-graphics.pxu
index e05153a..849e5eb 100644
--- a/units/suspend/suspend-graphics.pxu
+++ b/units/suspend/suspend-graphics.pxu
@@ -126,7 +126,7 @@ plugin: user-interact-verify
category_id: com.canonical.plainbox::suspend
id: suspend/{index}_glxgears_after_suspend_{product_slug}_xenial
depends: suspend/{index}_suspend_after_switch_to_card_{product_slug}_xenial
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command:
source graphics_env {driver} {index}
glxgears
diff --git a/units/suspend/suspend.pxu b/units/suspend/suspend.pxu
index 6704a2f..34d1957 100644
--- a/units/suspend/suspend.pxu
+++ b/units/suspend/suspend.pxu
@@ -1232,8 +1232,8 @@ category_id: com.canonical.plainbox::suspend
id: suspend/gpu_lockup_after_suspend
estimated_duration: 10.0
requires:
- package.name == 'wmctrl'
- package.name == 'mesa-utils'
+ executable.name == 'wmctrl'
+ executable.name == 'glxgears'
package.name == 'firefox'
package.name == 'unity'
depends: suspend/suspend_advanced_auto
@@ -2197,7 +2197,7 @@ plugin: user-interact-verify
category_id: com.canonical.plainbox::suspend
id: suspend/{index}_glxgears_after_suspend_{product_slug}
depends: suspend/{index}_suspend_after_switch_to_card_{product_slug}
-requires: package.name == 'mesa-utils'
+requires: executable.name == 'glxgears'
command: glxgears; true
_summary: Test that glxgears works for {vendor} {product} after suspend
_description:
@@ -2215,7 +2215,7 @@ category_id: com.canonical.plainbox::suspend
id: suspend/glxgears_after_suspend
depends: suspend/suspend_advanced
requires:
- package.name == 'mesa-utils'
+ executable.name == 'glxgears'
device.category == 'VIDEO'
command: glxgears; true
_summary: Test that glxgears works after suspend
@@ -2292,8 +2292,7 @@ id: suspend/oops_after_suspend
depends: suspend/suspend_advanced
plugin:shell
estimated_duration: 10.0
-requires:
- package.name == 'fwts'
+requires: executable.name == 'fwts'
user: root
_description:
Run Firmware Test Suite (fwts) oops tests after suspend.
diff --git a/units/thunderbolt/test-plan.pxu b/units/thunderbolt/test-plan.pxu
index 054bb26..d5dc001 100644
--- a/units/thunderbolt/test-plan.pxu
+++ b/units/thunderbolt/test-plan.pxu
@@ -1,14 +1,33 @@
id: thunderbolt-cert-full
unit: test plan
_name: Thunderbolt tests
-_description: Thunderbolt tests
+_description:
+ Thunderbolt tests
include:
- thunderbolt/insert certification-status=blocker
- thunderbolt/storage-test certification-status=blocker
- thunderbolt/remove certification-status=blocker
- thunderbolt3/insert certification-status=non-blocker
- thunderbolt3/storage-test certification-status=non-blocker
- thunderbolt3/remove certification-status=non-blocker
+nested_part:
+ com.canonical.certification::thunderbolt-cert-manual
+ com.canonical.certification::thunderbolt-cert-automated
+
+id: thunderbolt-cert-manual
+unit: test plan
+_name: Thunderbolt tests (Manual)
+_description:
+ Thunderbolt tests (Manual)
+include:
+ thunderbolt/insert certification-status=blocker
+ thunderbolt/storage-test certification-status=blocker
+ thunderbolt/remove certification-status=blocker
+ thunderbolt3/insert certification-status=non-blocker
+ thunderbolt3/storage-test certification-status=non-blocker
+ thunderbolt3/remove certification-status=non-blocker
+
+id: thunderbolt-cert-automated
+unit: test plan
+_name: Thunderbolt tests (Automated)
+_description:
+ Thunderbolt tests (Automated)
+include:
+
id: thunderbolt-cert-blockers
unit: test plan
diff --git a/units/touchpad/test-plan.pxu b/units/touchpad/test-plan.pxu
index 7514991..78d7fa6 100644
--- a/units/touchpad/test-plan.pxu
+++ b/units/touchpad/test-plan.pxu
@@ -1,23 +1,42 @@
id: touchpad-cert-full
unit: test plan
_name: Touchpad tests
-_description: Touchpad tests
+_description:
+ Touchpad tests
include:
- touchpad/basic certification-status=blocker
- touchpad/detected-as-mouse certification-status=blocker
- touchpad/palm-rejection certification-status=non-blocker
- touchpad/continuous-move certification-status=blocker
- touchpad/horizontal certification-status=blocker
- touchpad/vertical certification-status=blocker
- touchpad/singletouch-automated certification-status=blocker
- touchpad/singletouch-selection certification-status=blocker
- touchpad/drag-and-drop certification-status=blocker
- touchpad/multitouch-automated certification-status=blocker
- touchpad/multitouch-manual certification-status=blocker
- touchpad/multitouch-rightclick certification-status=blocker
- touchpad/multitouch-horizontal certification-status=blocker
- touchpad/multitouch-vertical certification-status=blocker
- touchpad/multitouch-dash certification-status=non-blocker
+nested_part:
+ com.canonical.certification::touchpad-cert-manual
+ com.canonical.certification::touchpad-cert-automated
+
+id: touchpad-cert-manual
+unit: test plan
+_name: Touchpad tests (Manual)
+_description:
+ Touchpad tests (Manual)
+include:
+ touchpad/basic certification-status=blocker
+ touchpad/palm-rejection certification-status=non-blocker
+ touchpad/continuous-move certification-status=blocker
+ touchpad/horizontal certification-status=blocker
+ touchpad/vertical certification-status=blocker
+ touchpad/singletouch-selection certification-status=blocker
+ touchpad/drag-and-drop certification-status=blocker
+ touchpad/multitouch-manual certification-status=blocker
+ touchpad/multitouch-rightclick certification-status=blocker
+ touchpad/multitouch-horizontal certification-status=blocker
+ touchpad/multitouch-vertical certification-status=blocker
+ touchpad/multitouch-dash certification-status=non-blocker
+
+id: touchpad-cert-automated
+unit: test plan
+_name: Touchpad tests (Automated)
+_description:
+ Touchpad tests (Automated)
+include:
+ touchpad/detected-as-mouse certification-status=blocker
+ touchpad/singletouch-automated certification-status=blocker
+ touchpad/multitouch-automated certification-status=blocker
+
id: after-suspend-touchpad-cert-full
unit: test plan
diff --git a/units/touchscreen/jobs.pxu b/units/touchscreen/jobs.pxu
index 51b4a4e..9db5677 100644
--- a/units/touchscreen/jobs.pxu
+++ b/units/touchscreen/jobs.pxu
@@ -140,7 +140,7 @@ _description:
Did you see the green circles around the three fingers?
command:
manage_compiz_plugin unityshell disable
- qmlscene -qt5 $PLAINBOX_PROVIDER_DATA/touch_tap_test.qml --touchpoints=3 2>&1 | grep -o PASS
+ qmlscene -qt5 $PLAINBOX_PROVIDER_DATA/touch_tap_test.qml 3 2>&1 | grep -o PASS
EXIT=$?
sleep 5
manage_compiz_plugin unityshell enable
@@ -163,7 +163,7 @@ _description:
Did you see the green circles around the four fingers?
command:
manage_compiz_plugin unityshell disable
- qmlscene -qt5 $PLAINBOX_PROVIDER_DATA/touch_tap_test.qml --touchpoints=4 2>&1 | grep -o PASS
+ qmlscene -qt5 $PLAINBOX_PROVIDER_DATA/touch_tap_test.qml 4 2>&1 | grep -o PASS
EXIT=$?
sleep 5
manage_compiz_plugin unityshell enable
diff --git a/units/touchscreen/test-plan.pxu b/units/touchscreen/test-plan.pxu
index e984af9..1682136 100644
--- a/units/touchscreen/test-plan.pxu
+++ b/units/touchscreen/test-plan.pxu
@@ -1,14 +1,33 @@
id: touchscreen-cert-full
unit: test plan
_name: Touchscreen tests
-_description: Touchscreen tests
+_description:
+ Touchscreen tests
include:
- touchscreen/drag-n-drop certification-status=blocker
- touchscreen/multitouch-zoom certification-status=blocker
- touchscreen/multitouch-rotate
- touchscreen/3-touch-tap certification-status=blocker
- touchscreen/4-touch-tap certification-status=blocker
- touchscreen/multitouch-dash certification-status=non-blocker
+nested_part:
+ com.canonical.certification::touchscreen-cert-manual
+ com.canonical.certification::touchscreen-cert-automated
+
+id: touchscreen-cert-manual
+unit: test plan
+_name: Touchscreen tests (Manual)
+_description:
+ Touchscreen tests (Manual)
+include:
+ touchscreen/drag-n-drop certification-status=blocker
+ touchscreen/multitouch-zoom certification-status=blocker
+ touchscreen/multitouch-rotate
+ touchscreen/3-touch-tap certification-status=blocker
+ touchscreen/4-touch-tap certification-status=blocker
+ touchscreen/multitouch-dash certification-status=non-blocker
+
+id: touchscreen-cert-automated
+unit: test plan
+_name: Touchscreen tests (Automated)
+_description:
+ Touchscreen tests (Automated)
+include:
+
id: touchscreen-cert-blockers
unit: test plan
diff --git a/units/usb/test-plan.pxu b/units/usb/test-plan.pxu
index 5b4e88b..27a0616 100644
--- a/units/usb/test-plan.pxu
+++ b/units/usb/test-plan.pxu
@@ -1,22 +1,60 @@
id: usb-cert-full
unit: test plan
_name: USB tests
-_description: USB tests
+_description:
+ USB tests
include:
- usb/detect certification-status=blocker
- usb/HID certification-status=blocker
- usb/insert certification-status=blocker
- usb/storage-automated certification-status=blocker
- usb/remove certification-status=blocker
+nested_part:
+ com.canonical.certification::usb-cert-manual
+ com.canonical.certification::usb-cert-automated
+
+id: usb-cert-manual
+unit: test plan
+_name: USB tests (Manual)
+_description:
+ USB tests (Manual)
+include:
+ usb/HID certification-status=blocker
+ usb/insert certification-status=blocker
+ usb/storage-automated certification-status=blocker
+ usb/remove certification-status=blocker
+
+id: usb-cert-automated
+unit: test plan
+_name: USB tests (Automated)
+_description:
+ USB tests (Automated)
+include:
+ usb/detect certification-status=blocker
+
id: usb3-cert-full
unit: test plan
_name: USB3 tests
-_description: USB3 tests
+_description:
+ USB3 tests
include:
- usb3/insert certification-status=blocker
- usb3/storage-automated certification-status=blocker
- usb3/remove certification-status=blocker
+nested_part:
+ com.canonical.certification::usb3-cert-manual
+ com.canonical.certification::usb3-cert-automated
+
+id: usb3-cert-manual
+unit: test plan
+_name: USB3 tests (Manual)
+_description:
+ USB3 tests (Manual)
+include:
+ usb3/insert certification-status=blocker
+ usb3/storage-automated certification-status=blocker
+ usb3/remove certification-status=blocker
+
+id: usb3-cert-automated
+unit: test plan
+_name: USB3 tests (Automated)
+_description:
+ USB3 tests (Automated)
+include:
+
id: usb-c-cert-full
unit: test plan
diff --git a/units/usb/usb.pxu b/units/usb/usb.pxu
index 52c299d..00a4318 100644
--- a/units/usb/usb.pxu
+++ b/units/usb/usb.pxu
@@ -46,6 +46,7 @@ _description:
Did the device work as expected?
id: usb/insert
+template-engine: jinja2
_summary: USB 2.0 storage device insertion detected
_purpose:
Check system can detect USB 2.0 storage when inserted
@@ -60,15 +61,16 @@ plugin: user-interact
flags: also-after-suspend
user: root
command:
- if [[ -v SNAP ]]; then
+ {%- if __on_ubuntucore__ %}
checkbox-support-run_watcher insertion usb2
- else
+ {%- else %}
removable_storage_watcher --unmounted insert usb
- fi
+ {% endif -%}
category_id: com.canonical.plainbox::usb
estimated_duration: 120
id: usb3/insert
+template-engine: jinja2
requires:
usb.usb3 == 'supported'
_summary: USB 3.0 storage device insertion detected
@@ -84,15 +86,16 @@ _verification:
plugin: user-interact
user: root
command:
- if [[ -v SNAP ]]; then
+ {%- if __on_ubuntucore__ %}
checkbox-support-run_watcher insertion usb3
- else
+ {%- else %}
removable_storage_watcher --unmounted -m 500000000 insert usb
- fi
+ {% endif -%}
category_id: com.canonical.plainbox::usb
estimated_duration: 120
id: usb/remove
+template-engine: jinja2
_summary: USB 2.0 storage device removal detected
_purpose:
Check system can detect removal of a USB 2.0 storage device
@@ -108,15 +111,16 @@ depends: usb/insert
flags: also-after-suspend
user: root
command:
- if [[ -v SNAP ]]; then
+ {%- if __on_ubuntucore__ %}
checkbox-support-run_watcher removal usb2
- else
+ {%- else %}
removable_storage_watcher --unmounted remove usb
- fi
+ {% endif -%}
category_id: com.canonical.plainbox::usb
estimated_duration: 120
id: usb3/remove
+template-engine: jinja2
_summary: USB 3.0 storage device removal detected
_purpose:
Check system can detect removal of a USB 3.0 storage device
@@ -132,11 +136,11 @@ flags: also-after-suspend
depends: usb3/insert
user: root
command:
- if [[ -v SNAP ]]; then
+ {%- if __on_ubuntucore__ %}
checkbox-support-run_watcher removal usb3
- else
+ {%- else %}
removable_storage_watcher --unmounted -m 500000000 remove usb
- fi
+ {% endif -%}
category_id: com.canonical.plainbox::usb
estimated_duration: 120
@@ -179,6 +183,7 @@ _description:
automatically selected result.
id: usb/storage-automated
+template-engine: jinja2
_summary: USB 2.0 storage device read & write works
_purpose:
Check system can read/write to USB 2.0 storage correctly
@@ -191,15 +196,16 @@ depends: usb/insert
flags: also-after-suspend
user: root
command:
- if [[ -v SNAP ]]; then
+ {%- if __on_ubuntucore__ %}
checkbox-support-usb_read_write
- else
+ {%- else %}
removable_storage_test -s 268400000 usb
- fi
+ {% endif -%}
category_id: com.canonical.plainbox::usb
estimated_duration: 300
id: usb3/storage-automated
+template-engine: jinja2
_summary: USB 3.0 storage device read & write works
_purpose:
Check system can read/write to USB 3.0 storage devices correctly
@@ -212,11 +218,11 @@ depends: usb3/insert
flags: also-after-suspend
user: root
command:
- if [[ -v SNAP ]]; then
+ {%- if __on_ubuntucore__ %}
checkbox-support-usb_read_write
- else
+ {%- else %}
removable_storage_test -s 268400000 -m 500000000 usb --driver xhci_hcd
- fi
+ {% endif -%}
category_id: com.canonical.plainbox::usb
estimated_duration: 300
diff --git a/units/wireless/jobs.pxu b/units/wireless/jobs.pxu
index 427596c..363984a 100644
--- a/units/wireless/jobs.pxu
+++ b/units/wireless/jobs.pxu
@@ -1,6 +1,6 @@
unit: template
template-resource: device
-template-filter: device.category == 'WIRELESS'
+template-filter: device.category == 'WIRELESS' and device.interface != 'UNKNOWN'
template-engine: jinja2
template-unit: job
id: wireless/wireless_scanning_{{ interface }}
@@ -21,7 +21,7 @@ requires:
unit: template
template-resource: device
-template-filter: device.category == 'WIRELESS'
+template-filter: device.category == 'WIRELESS' and device.interface != 'UNKNOWN'
template-engine: jinja2
template-unit: job
id: wireless/wireless_connection_wpa_bg_nm_{{ interface }}
@@ -42,7 +42,7 @@ requires:
unit: template
template-resource: device
-template-filter: device.category == 'WIRELESS'
+template-filter: device.category == 'WIRELESS' and device.interface != 'UNKNOWN'
template-engine: jinja2
template-unit: job
id: wireless/wireless_connection_open_bg_nm_{{ interface }}
@@ -63,7 +63,7 @@ requires:
unit: template
template-resource: device
-template-filter: device.category == 'WIRELESS'
+template-filter: device.category == 'WIRELESS' and device.interface != 'UNKNOWN'
template-engine: jinja2
template-unit: job
id: wireless/wireless_connection_wpa_n_nm_{{ interface }}
@@ -78,14 +78,13 @@ category_id: com.canonical.plainbox::wireless
estimated_duration: 30.0
flags: preserve-locale also-after-suspend also-after-suspend-manual
requires:
- wireless_sta_protocol.{{ interface }}_n == 'supported'
{%- if __on_ubuntucore__ %}
connections.slot == 'network-manager:service' and connections.plug == '{{ __system_env__["SNAP_NAME"] }}:network-manager'
{% endif -%}
unit: template
template-resource: device
-template-filter: device.category == 'WIRELESS'
+template-filter: device.category == 'WIRELESS' and device.interface != 'UNKNOWN'
template-engine: jinja2
template-unit: job
id: wireless/wireless_connection_open_n_nm_{{ interface }}
@@ -100,14 +99,13 @@ category_id: com.canonical.plainbox::wireless
estimated_duration: 30.0
flags: preserve-locale also-after-suspend also-after-suspend-manual
requires:
- wireless_sta_protocol.{{ interface }}_n == 'supported'
{%- if __on_ubuntucore__ %}
connections.slot == 'network-manager:service' and connections.plug == '{{ __system_env__["SNAP_NAME"] }}:network-manager'
{% endif -%}
unit: template
template-resource: device
-template-filter: device.category == 'WIRELESS'
+template-filter: device.category == 'WIRELESS' and device.interface != 'UNKNOWN'
template-engine: jinja2
template-unit: job
id: wireless/wireless_connection_wpa_ac_nm_{{ interface }}
@@ -129,7 +127,7 @@ requires:
unit: template
template-resource: device
-template-filter: device.category == 'WIRELESS'
+template-filter: device.category == 'WIRELESS' and device.interface != 'UNKNOWN'
template-engine: jinja2
template-unit: job
id: wireless/wireless_connection_open_ac_nm_{{ interface }}
diff --git a/units/wireless/test-plan.pxu b/units/wireless/test-plan.pxu
index ee921df..74bf271 100644
--- a/units/wireless/test-plan.pxu
+++ b/units/wireless/test-plan.pxu
@@ -1,11 +1,23 @@
id: wireless-cert-full
unit: test plan
_name: Wireless tests
-_description: Wireless connection tests
+_description:
+ Wireless connection tests
+include:
+nested_part:
+ com.canonical.certification::wireless-cert-manual
+ com.canonical.certification::wireless-cert-automated
+
+id: wireless-cert-manual
+unit: test plan
+_name: Wireless tests (Manual)
+_description:
+ Wireless connection tests (Manual)
include:
nested_part:
wireless-cert-automated
+
id: after-suspend-wireless-cert-full
unit: test plan
_name: Wireless tests (after suspend)