def test_get_build_task_in_group(mock_taskcluster): bus = MessageBus() hook = CodeCoverage({ 'hookId': 'services-staging-codecoverage/bot' }, bus) hook.triggered_groups.add('already-triggered-group') assert hook.get_build_task_in_group('already-triggered-group') is None
def test_parse(mock_taskcluster): bus = MessageBus() hook = CodeCoverage({ 'hookId': 'services-staging-codecoverage/bot' }, bus) hook.triggered_groups.add('already-triggered-group') assert hook.parse({ 'taskGroupId': 'already-triggered-group' }) is None
def test_wrong_branch(mock_taskcluster): bus = MessageBus() with open(os.path.join(FIXTURES_DIR, 'bNq-VIT-Q12o6nXcaUmYNQ.json')) as f: responses.add(responses.GET, 'http://taskcluster.test/queue/v1/task-group/bNq-VIT-Q12o6nXcaUmYNQ/list', json=json.load(f), status=200, match_querystring=True) # noqa hook = CodeCoverage({ 'hookId': 'services-staging-codecoverage/bot' }, bus) assert hook.parse({ 'taskGroupId': 'bNq-VIT-Q12o6nXcaUmYNQ' }) is None
def test_success_windows(mock_taskcluster): bus = MessageBus() with open(os.path.join(FIXTURES_DIR, 'MibGDsa4Q7uFNzDf7EV6nw.json')) as f: responses.add(responses.GET, 'http://taskcluster.test/queue/v1/task-group/MibGDsa4Q7uFNzDf7EV6nw/list', json=json.load(f), status=200, match_querystring=True) # noqa hook = CodeCoverage({ 'hookId': 'services-staging-codecoverage/bot' }, bus) assert hook.parse({ 'taskGroupId': 'MibGDsa4Q7uFNzDf7EV6nw' }) == [{'REPOSITORY': 'https://hg.mozilla.org/mozilla-central', 'REVISION': '63519bfd42ee379f597c0357af2e712ec3cd9f50'}]
def test_success_try(mock_taskcluster): bus = MessageBus() with open(os.path.join(FIXTURES_DIR, 'FG3goVnCQfif8ZEOaM_4IA.json')) as f: responses.add(responses.GET, 'http://taskcluster.test/queue/v1/task-group/FG3goVnCQfif8ZEOaM_4IA/list', json=json.load(f), status=200, match_querystring=True) # noqa hook = CodeCoverage({ 'hookId': 'services-staging-codecoverage/bot' }, bus) assert hook.parse({ 'taskGroupId': 'FG3goVnCQfif8ZEOaM_4IA' }) == [{'REPOSITORY': 'https://hg.mozilla.org/try', 'REVISION': '066cb18ba95a7efe144e729713c429e422d9f95b'}]
def test_success(mock_taskcluster): bus = MessageBus() with open(os.path.join(FIXTURES_DIR, 'RS0UwZahQ_qAcdZzEb_Y9g.json')) as f: responses.add(responses.GET, 'http://taskcluster.test/queue/v1/task-group/RS0UwZahQ_qAcdZzEb_Y9g/list', json=json.load(f), status=200, match_querystring=True) # noqa hook = CodeCoverage({ 'hookId': 'services-staging-codecoverage/bot' }, bus) assert hook.parse({ 'taskGroupId': 'RS0UwZahQ_qAcdZzEb_Y9g' }) == [{'REPOSITORY': 'https://hg.mozilla.org/mozilla-central', 'REVISION': 'ec3dd3ee2ae4b3a63529a912816a110e925eb2d0'}]
def test_hook_group(mock_taskcluster): bus = MessageBus() hook = CodeCoverage({'hookId': 'services-staging-codecoverage/bot'}, bus) assert hook.group_id == 'project-releng' assert hook.hook_id == 'services-staging-codecoverage/bot' hook = CodeCoverage( { 'hookGroupId': 'anotherProject', 'hookId': 'anotherHook', }, bus) assert hook.group_id == 'anotherProject' assert hook.hook_id == 'anotherHook'
async def test_create_task(HooksMock, QueueMock, mock_taskcluster): bus = MessageBus() bus.add_queue(QUEUE_MONITORING, maxsize=1) bus.add_queue(QUEUE_PULSE_CODECOV) conf = { 'hookGroupId': 'aGroup', 'hookId': 'aHook', } hook = CodeCoverage(conf, bus) hook.hooks = HooksMock hook.queue = QueueMock # Add a dummy task in the target group QueueMock.add_task_in_group('aGroup', name='whatever', env={'key': 'value'}) # Add a coverage task in the target group env = { 'GECKO_HEAD_REPOSITORY': 'https://hg.mozilla.org/mozilla-central', 'GECKO_HEAD_REV': 'deadbeef', } QueueMock.add_task_in_group('aGroup', name='build-linux64-ccov/test', env=env) # Send a pulse message with the target group pulse_payload = { 'taskGroupId': 'aGroup', } await bus.send(QUEUE_PULSE_CODECOV, pulse_payload) # Run the code coverage event listener as a task task = asyncio.create_task(hook.run()) # Stop as soon as a message is sent to monitoring group_id, hook_id, task_id = await bus.queues[QUEUE_MONITORING].get() task.cancel() assert bus.queues[QUEUE_MONITORING].qsize() == 0 assert group_id == 'aGroup' assert hook_id == 'aHook' assert task_id == 'fake_task_id' assert HooksMock.obj['group_id'] == 'aGroup' assert HooksMock.obj['hook_id'] == 'aHook' assert HooksMock.obj['payload'] == { 'REPOSITORY': 'https://hg.mozilla.org/mozilla-central', 'REVISION': 'deadbeef', }
def test_is_coverage_task(mock_taskcluster): bus = MessageBus() hook = CodeCoverage({'hookId': 'services-staging-codecoverage/bot'}, bus) cov_task = {'task': {'metadata': {'name': 'build-linux64-ccov'}}} assert hook.is_coverage_task(cov_task) cov_task = {'task': {'metadata': {'name': 'build-linux64-ccov/opt'}}} assert hook.is_coverage_task(cov_task) cov_task = {'task': {'metadata': {'name': 'build-win64-ccov/debug'}}} assert hook.is_coverage_task(cov_task) nocov_task = { 'task': { 'metadata': { 'name': 'test-linux64-ccov/opt-mochitest-1' } } } assert not hook.is_coverage_task(nocov_task) nocov_task = { 'task': { 'metadata': { 'name': 'test-linux64/opt-mochitest-1' } } } assert not hook.is_coverage_task(nocov_task)
def test_success(mock_taskcluster): bus = MessageBus() hook = CodeCoverage({'hookId': 'services-staging-codecoverage/bot'}, bus) assert run_async_parser(hook, 'RS0UwZahQ_qAcdZzEb_Y9g') == [{ 'REPOSITORY': 'https://hg.mozilla.org/mozilla-central', 'REVISION': 'ec3dd3ee2ae4b3a63529a912816a110e925eb2d0' }]
def test_success_try(mock_taskcluster): bus = MessageBus() hook = CodeCoverage({'hookId': 'services-staging-codecoverage/bot'}, bus) assert run_async_parser(hook, 'FG3goVnCQfif8ZEOaM_4IA') == [{ 'REPOSITORY': 'https://hg.mozilla.org/try', 'REVISION': '066cb18ba95a7efe144e729713c429e422d9f95b' }]
def test_success_windows(mock_taskcluster): bus = MessageBus() hook = CodeCoverage({'hookId': 'services-staging-codecoverage/bot'}, bus) assert run_async_parser(hook, 'MibGDsa4Q7uFNzDf7EV6nw') == [{ 'REPOSITORY': 'https://hg.mozilla.org/mozilla-central', 'REVISION': '63519bfd42ee379f597c0357af2e712ec3cd9f50' }]
def test_wrong_branch(mock_taskcluster): bus = MessageBus() hook = CodeCoverage({'hookId': 'services-staging-codecoverage/bot'}, bus) assert run_async_parser(hook, 'bNq-VIT-Q12o6nXcaUmYNQ') is None