X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/32eb510594a45b395d1a0c8dafda1a94c86c0a9f..609646134bcd8fc3a7fd500848220741ecc4a9d2:/services/nodemanager/tests/testutil.py diff --git a/services/nodemanager/tests/testutil.py b/services/nodemanager/tests/testutil.py index a17f0882e6..15337c4120 100644 --- a/services/nodemanager/tests/testutil.py +++ b/services/nodemanager/tests/testutil.py @@ -2,13 +2,15 @@ from __future__ import absolute_import, print_function +import contextlib import datetime +import mock +import pykka +import sys import threading import time import libcloud.common.types as cloud_types -import mock -import pykka from . import pykka_timeout @@ -55,6 +57,17 @@ def cloud_node_fqdn(node): def ip_address_mock(last_octet): return '10.20.30.{}'.format(last_octet) +@contextlib.contextmanager +def redirected_streams(stdout=None, stderr=None): + orig_stdout, sys.stdout = sys.stdout, stdout or sys.stdout + orig_stderr, sys.stderr = sys.stderr, stderr or sys.stderr + try: + yield + finally: + sys.stdout = orig_stdout + sys.stderr = orig_stderr + + class MockShutdownTimer(object): def _set_state(self, is_open, next_opening): self.window_open = lambda: is_open @@ -119,6 +132,13 @@ class ActorTestMixin(object): if result is not unassigned: return result + def busywait(self, f): + n = 0 + while not f() and n < 10: + time.sleep(.1) + n += 1 + self.assertTrue(f()) + class DriverTestMixin(object): def setUp(self):