autotest: Restrict CUPS tests to platforms running cupsd
The DebugDaemonCupsAddPrinter test is failing
on platforms without CUPS. The test should not
run on those platforms. Share the check from
platform_CUPSDaemon.
BUG=chromium:735647
TEST=Run bvt-perbuild
Change-Id: Idd30b1914e30904245611a1e6bf8c5416282ab91
Reviewed-on: https://chromium-review.googlesource.com/561973
Commit-Ready: Sean Kau <skau@chromium.org>
Tested-by: Sean Kau <skau@chromium.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
diff --git a/client/cros/cups.py b/client/cros/cups.py
new file mode 100644
index 0000000..d7cf0c9
--- /dev/null
+++ b/client/cros/cups.py
@@ -0,0 +1,32 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+from autotest_lib.client.common_lib import error
+from autotest_lib.client.common_lib import utils as sys_utils
+from autotest_lib.client.cros import upstart
+"""Provides utility methods for CUPS."""
+
+
+def has_cups_upstart():
+ """Returns True if cups is installed under upstart."""
+ return upstart.has_service('cupsd')
+
+
+def has_cups_systemd():
+ """Returns True if cups is running under systemd.
+
+ Attempts to start cups if it is not already running.
+ """
+ return sys_utils.has_systemd() and (
+ (sys_utils.get_service_pid('cups') != 0) or
+ (sys_utils.start_service('cups', ignore_status=True) == 0))
+
+
+def has_cups_or_die():
+ """Checks if the cups dameon is installed. Raises TestNAError if it is not.
+
+ TestNA skips the test.
+ """
+ if not (has_cups_upstart() or has_cups_systemd()):
+ raise error.TestNAError('No cupsd service found')
diff --git a/client/site_tests/platform_CUPSDaemon/platform_CUPSDaemon.py b/client/site_tests/platform_CUPSDaemon/platform_CUPSDaemon.py
index 61f996f..842771c 100644
--- a/client/site_tests/platform_CUPSDaemon/platform_CUPSDaemon.py
+++ b/client/site_tests/platform_CUPSDaemon/platform_CUPSDaemon.py
@@ -8,6 +8,7 @@
from autotest_lib.client.bin import test, utils
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib import utils as sys_utils
+from autotest_lib.client.cros import cups
from autotest_lib.client.cros import upstart
@@ -55,9 +56,6 @@
Run some sanity tests for cupsd and the upstart-socket-bridge
socket-activation.
"""
- if not upstart.has_service('cupsd'):
- raise error.TestNAError('No cupsd service found')
-
upstart.ensure_running('upstart-socket-bridge')
if not self.wait_for_path_exists(self._CUPS_SOCK_PATH):
@@ -92,12 +90,6 @@
"""
Check if cupsd is running and responsive.
"""
- # Check to see if the service is running.
- if sys_utils.get_service_pid('cups') == 0:
- # Try to start it.
- if sys_utils.start_service('cups', ignore_status=True) != 0:
- raise error.TestNAError('No cupsd service found')
-
sys_utils.stop_service('cups', ignore_status=False)
sys_utils.start_service('cups.socket', ignore_status=False)
@@ -125,6 +117,9 @@
"""
Run some sanity tests for cupsd.
"""
+ # Check if CUPS is installed for this system or raise TestNA.
+ cups.has_cups_or_die()
+
if sys_utils.has_systemd():
self.run_systemd_tests()
else:
diff --git a/client/site_tests/platform_DebugDaemonCupsAddPrinters/platform_DebugDaemonCupsAddPrinters.py b/client/site_tests/platform_DebugDaemonCupsAddPrinters/platform_DebugDaemonCupsAddPrinters.py
index b70f24b..af5b434 100644
--- a/client/site_tests/platform_DebugDaemonCupsAddPrinters/platform_DebugDaemonCupsAddPrinters.py
+++ b/client/site_tests/platform_DebugDaemonCupsAddPrinters/platform_DebugDaemonCupsAddPrinters.py
@@ -6,6 +6,7 @@
from autotest_lib.client.bin import test
from autotest_lib.client.common_lib import error
+from autotest_lib.client.cros import cups
from autotest_lib.client.cros import debugd_util
_GENERIC_PPD = 'GenericPostScript.ppd.gz'
@@ -128,6 +129,9 @@
@raises TestError: If an unrecognized situation was used.
"""
+ # Exits test if platform does not have CUPS
+ cups.has_cups_or_die()
+
if situation == 'valid_config':
self.test_valid_config()
elif situation == 'lpadmin':