1# Copyright 2015 The Chromium OS Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5from autotest_lib.client.bin import utils as bin_utils 6from autotest_lib.client.common_lib import utils 7 8def run_and_check_result(host, command): 9 """Run a command on |host| and return whether it succeeded. 10 11 @param host: Host object if we're interested in a remote host. 12 @param cmd: string command to run on |host|. 13 @return True if the command succeeds. otherwise False. 14 15 """ 16 run = utils.run 17 if host is not None: 18 run = host.run 19 result = run(command, ignore_status=True) 20 return result.exit_status == 0 21 22def webservd_is_installed(host=None): 23 """Check if the webservd binary is installed. 24 25 @param host: Host object if we're interested in a remote host. 26 @return True iff webservd is installed in this system. 27 28 """ 29 return run_and_check_result( 30 host, 'if [ -f /usr/bin/webservd ]; then exit 0; fi; exit 1') 31 32def webservd_is_running(host=None, startup_timeout_seconds=5): 33 """Check if the webservd binary is installed and running. 34 35 @param host: Host object if we're interested in a remote host. 36 @param startup_timeout_seconds: int time to wait for the server to start. 37 @return True iff webservd is installed and running in this system. 38 39 """ 40 if not webservd_is_installed(host): 41 return False 42 43 try: 44 check_running = lambda: run_and_check_result( 45 host, 'initctl status webservd | grep start/running') 46 bin_utils.poll_for_condition(check_running, 47 timeout=startup_timeout_seconds, 48 desc='webservd startup') 49 except bin_utils.TimeoutError: 50 return False 51 52 return True 53