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