xref: /aosp_15_r20/external/autotest/client/cros/cups.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li# Copyright 2017 The Chromium OS Authors. All rights reserved.
2*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be
3*9c5db199SXin Li# found in the LICENSE file.
4*9c5db199SXin Li
5*9c5db199SXin Lifrom autotest_lib.client.common_lib import error
6*9c5db199SXin Lifrom autotest_lib.client.common_lib import utils as sys_utils
7*9c5db199SXin Lifrom autotest_lib.client.cros import upstart
8*9c5db199SXin Li"""Provides utility methods for CUPS."""
9*9c5db199SXin Li
10*9c5db199SXin Li
11*9c5db199SXin Lidef has_cups_upstart():
12*9c5db199SXin Li  """Returns True if cups is installed under upstart."""
13*9c5db199SXin Li  return upstart.has_service('cupsd')
14*9c5db199SXin Li
15*9c5db199SXin Li
16*9c5db199SXin Lidef has_cups_systemd():
17*9c5db199SXin Li  """Returns True if cups is running under systemd.
18*9c5db199SXin Li
19*9c5db199SXin Li  Attempts to start cups if it is not already running.
20*9c5db199SXin Li  """
21*9c5db199SXin Li  return sys_utils.has_systemd() and (
22*9c5db199SXin Li      (sys_utils.get_service_pid('cups') != 0) or
23*9c5db199SXin Li      (sys_utils.start_service('cups', ignore_status=True) == 0))
24*9c5db199SXin Li
25*9c5db199SXin Li
26*9c5db199SXin Lidef has_cups_or_die():
27*9c5db199SXin Li  """Checks if the cups dameon is installed.  Raises TestNAError if it is not.
28*9c5db199SXin Li
29*9c5db199SXin Li  TestNA skips the test.
30*9c5db199SXin Li  """
31*9c5db199SXin Li  if not (has_cups_upstart() or has_cups_systemd()):
32*9c5db199SXin Li    raise error.TestNAError('No cupsd service found')
33