def test_timeout_backoff(): condition = WaitCondition(after_call_count=4, return_value="second") sleeper = Sleeper() exception_called = False try: wait_on(condition, "condition", 8, delta=2, polling_backoff=1, sleep_=sleeper.sleep) except TimeoutAssertionError: exception_called = True assert len(sleeper.sleeps) == 3 assert sleeper.sleeps[0] == 2 # delta of 2 assert sleeper.sleeps[1] == 3 # delta of 2 + 1 backoff assert sleeper.sleeps[2] == 4 # delta of 2 + 2 backoff assert exception_called
def test_timeout_third_call(): condition = WaitCondition(after_call_count=4, return_value="second") sleeper = Sleeper() exception_called = False try: wait_on(condition, "condition", 5, delta=2, sleep_=sleeper.sleep) except TimeoutAssertionError: exception_called = True assert len(sleeper.sleeps) == 3 assert sleeper.sleeps[0] == 2 # delta of 2 assert sleeper.sleeps[1] == 2 # delta of 2 assert sleeper.sleeps[2] == 2 # delta of 2 assert exception_called
def test_timeout_first_call(): condition = WaitCondition(after_call_count=1, return_value="second") sleeper = Sleeper() exception_called = False try: wait_on(condition, "never met condition", 1, delta=2, sleep_=sleeper.sleep) except TimeoutAssertionError as e: assert "never met condition" in str(e) assert "after 2.0 seconds" in str(e) exception_called = True assert len(sleeper.sleeps) == 1 assert sleeper.sleeps[0] == 2 # delta of 2 assert exception_called
def test_application_stack_post_fork(monkeypatch): app = GalaxyDataTestApp() monkeypatch.setenv("SERVER_SOFTWARE", SERVER_SOFTWARE) monkeypatch.setenv("GUNICORN_WORKER_ID", "100") monkeypatch.setattr(GunicornApplicationStack, "do_post_fork", True) stack_instance = application_stack_instance(app=app, config=app.config) assert isinstance(stack_instance, GunicornApplicationStack) stack_instance.register_postfork_function( lambda: stack_instance.set_postfork_server_name(app)) assert not app.config.server_name.endswith(".100") stack_instance.late_postfork() stack_instance.late_postfork_event.set() wait_on(lambda: app.config.server_name.endswith(".100") or None, desc="server name to change", timeout=1, delta=0.1)
def test_return_on_third_call(): condition = WaitCondition(after_call_count=2, return_value="second") sleeper = Sleeper() assert "second" == wait_on(condition, "condition", 5, delta=2, sleep_=sleeper.sleep) assert len(sleeper.sleeps) == 2 assert sleeper.sleeps[0] == 2 # delta of 2 assert sleeper.sleeps[1] == 2 # delta of 2
def test_immediate_return(): condition = WaitCondition(return_value="first") sleeper = Sleeper() assert "first" == wait_on(condition, "condition", 100, sleep_=sleeper.sleep) assert len(sleeper.sleeps) == 0
import bioblend.galaxy from galaxy.tool_util.verify.wait import wait_on log = logging.getLogger('__name__') N_CHARS = int(os.environ.get('N_CHARS', 14)) N_THREADS = os.environ.get('N_THREADS', 1) GALAXY_URL = os.environ.get('GALAXY_URL', 'https://your-galaxy') GALAXY_API_KEY = os.environ.get('GALAXY_API_KEY', 'adminkey') log.debug(f"Running test tool with {N_CHARS} input dataset") gi = bioblend.galaxy.GalaxyInstance(GALAXY_URL, GALAXY_API_KEY) history_id = gi.histories.create_history('test_history')['id'] job = gi.tools.paste_content('A' * N_CHARS, history_id=history_id) hda_id = job['outputs'][0]['id'] rval = gi.tools.run_tool(history_id, 'testing', {'input1': { 'src': 'hda', 'id': hda_id }}) job_id = rval['jobs'][0]['id'] wait_on(lambda: gi.jobs.show_job(job_id)['state'] == 'ok', 'waiting for test job', timeout=60) output_id = rval['outputs'][0]['id'] gi.datasets.download_dataset(output_id) output = gi.datasets.download_dataset(output_id).decode() assert output == f"Running with '{N_THREADS}' threads\n", f"expecting {N_THREADS} threads, but output was {output}"