| # Copyright 2015 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.bin import utils as bin_utils |
| from autotest_lib.client.common_lib import utils |
| |
| def run_and_check_result(host, command): |
| """Run a command on |host| and return whether it succeeded. |
| |
| @param host: Host object if we're interested in a remote host. |
| @param cmd: string command to run on |host|. |
| @return True if the command succeeds. otherwise False. |
| |
| """ |
| run = utils.run |
| if host is not None: |
| run = host.run |
| result = run(command, ignore_status=True) |
| return result.exit_status == 0 |
| |
| def webservd_is_installed(host=None): |
| """Check if the webservd binary is installed. |
| |
| @param host: Host object if we're interested in a remote host. |
| @return True iff webservd is installed in this system. |
| |
| """ |
| return run_and_check_result( |
| host, 'if [ -f /usr/bin/webservd ]; then exit 0; fi; exit 1') |
| |
| def webservd_is_running(host=None, startup_timeout_seconds=5): |
| """Check if the webservd binary is installed and running. |
| |
| @param host: Host object if we're interested in a remote host. |
| @param startup_timeout_seconds: int time to wait for the server to start. |
| @return True iff webservd is installed and running in this system. |
| |
| """ |
| if not webservd_is_installed(host): |
| return False |
| |
| try: |
| check_running = lambda: run_and_check_result( |
| host, 'initctl status webservd | grep start/running') |
| bin_utils.poll_for_condition(check_running, |
| timeout=startup_timeout_seconds, |
| desc='webservd startup') |
| except bin_utils.TimeoutError: |
| return False |
| |
| return True |