def test_instances_creation(monkeypatch, generators): """Test the creation of an activity instance id with the use of a local context. """ monkeypatch.setattr(activity.Activity, '__init__', lambda self: None) local_activity = activity.Activity() external_activity = activity.ExternalActivity(timeout=60) for current_activity in [local_activity, external_activity]: current_activity.generators = generators if len(current_activity.generators): instances = list(current_activity.instances(dict())) assert len(instances) == pow(10, len(generators)) for instance in instances: assert isinstance(instance.local_context.get('i'), int) if len(generators) == 2: assert isinstance(instance.local_context.get('d'), int) else: instances = list(current_activity.instances(dict())) assert len(instances) == 1 assert isinstance(instances[0].local_context, dict) # Context is empty since no generator was used. assert not instances[0].local_context
def test_worker_infinite_loop_on_external(monkeypatch): """There is no worker for external activities. """ external_activity = activity.ExternalActivity(timeout=10) current_run = external_activity.run spy = MagicMock() def run(): spy() return current_run() monkeypatch.setattr(external_activity, 'run', run) activity.worker_runner(external_activity) # This test might not fail, but it will hang the test suite since it is # going to trigger an infinite loop. assert spy.call_count == 1
def test_external_activity_timeouts(monkeypatch, boto_client, generators): """Test the creation of an external activity timeouts. """ timeout = 120 start_timeout = 1000 current_activity = activity.ExternalActivity(timeout=timeout) current_activity.hydrate(dict(schedule_to_start=start_timeout)) current_activity.generators = generators total_generators = pow(10, len(current_activity.generators)) schedule_to_start = start_timeout * total_generators for instance in current_activity.instances({}): assert current_activity.pool_size == total_generators assert instance.schedule_to_start == schedule_to_start assert instance.timeout == timeout assert instance.schedule_to_close == (schedule_to_start + instance.timeout)