def wait_until_status(self, status, interval=1, timeout=60, **kwargs): status = [status] if not isinstance(status, (list, tuple)) else status poll_until(lambda: getattr(self.get(), 'status') in status, interval=interval, timeout=timeout, **kwargs) return self
def wait_for_job(self, interval=5, timeout=60, **kw): """Waits until node's job exists""" adjusted_timeout = timeout - seconds_since_date_string(self.created) poll_until(self.job_exists, interval=interval, timeout=adjusted_timeout, **kw) return self
def wait_until_count(self, count, interval=10, timeout=60, **kw): """Poll notifications page until it is populated with `count` number of notifications.""" poll_until(lambda: getattr(self.get(), 'count') == count, interval=interval, timeout=timeout, **kw) return self
def wait_until_deleted(self): def _wait(): try: self.get() except exc.NotFound: return True poll_until(_wait, interval=1, timeout=60)
def wait_until_completed(self, interval=5, timeout=60, **kwargs): start_time = datetime.utcnow() HasStatus.wait_until_status(self, self.completed_statuses, interval=interval, timeout=timeout, **kwargs) if not getattr(self, 'event_processing_finished', True): elapsed = datetime.utcnow() - start_time time_left = timeout - elapsed.total_seconds() poll_until(lambda: getattr(self.get(), 'event_processing_finished', True), interval=interval, timeout=time_left, **kwargs) return self
def wait_until_status(self, status, interval=1, timeout=60, **kwargs): status = [status] if not isinstance(status, (list, tuple)) else status try: poll_until(lambda: getattr(self.get(), 'status') in status, interval=interval, timeout=timeout, **kwargs) except WaitUntilTimeout: # This will raise a more informative error than just "WaitUntilTimeout" error self.assert_status(status) return self
def test_non_falsey_callback_value_is_returned(self, callback_value): with mock.patch('awxkit.utils.logged_sleep'): assert utils.poll_until(lambda: callback_value) == callback_value
def test_exc_raised_on_timeout(self): with mock.patch('awxkit.utils.logged_sleep'): with pytest.raises(exc.WaitUntilTimeout): utils.poll_until(lambda: False, timeout=0)
def test_callback_called_once_for_non_positive_timeout(self, timeout): with mock.patch('awxkit.utils.logged_sleep') as sleep: callback = RecordingCallback() utils.poll_until(callback, timeout=timeout) assert not sleep.called assert callback.call_count == 1