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'}]
Exemplo n.º 7
0
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'
Exemplo n.º 8
0
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',
    }
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
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'
    }]
Exemplo n.º 11
0
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'
    }]
Exemplo n.º 12
0
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'
    }]
Exemplo n.º 13
0
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