| Index: client/bin/site_utils.py
|
| diff --git a/client/bin/site_utils.py b/client/bin/site_utils.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..50a0bdff94cd94ad048e6f0cdfeebf0771f0292e
|
| --- /dev/null
|
| +++ b/client/bin/site_utils.py
|
| @@ -0,0 +1,28 @@
|
| +# Copyright (c) 2010 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.
|
| +
|
| +import time
|
| +from autotest_lib.client.common_lib import error
|
| +
|
| +
|
| +def poll_for_condition(
|
| + condition, exception=None, timeout=10, sleep_interval=0.1):
|
| + """Poll until a condition becomes true.
|
| +
|
| + condition: function taking no args and returning bool
|
| + exception: exception to throw if condition doesn't become true
|
| + timeout: maximum number of seconds to wait
|
| + sleep_interval: time to sleep between polls
|
| +
|
| + Raises:
|
| + 'exception' arg if supplied; error.TestError otherwise
|
| + """
|
| + start_time = time.time()
|
| + while True:
|
| + if condition():
|
| + return
|
| + if time.time() + sleep_interval - start_time > timeout:
|
| + raise exception if exception else error.TestError(
|
| + 'Timed out waiting for condition')
|
| + time.sleep(sleep_interval)
|
|
|