コード例 #1
0
async def test_job_exists(jenkins):
    # TC: unavailable job must not exist
    assert (await jenkins.jobs.is_exists(str(time.time()))) is False

    # TC: just created job must exist
    async with CreateJob(jenkins) as job_name:
        assert (await jenkins.jobs.is_exists(job_name)) is True
コード例 #2
0
async def test_build_stop_delete():
    job_config = dict(
        parameters=[dict(name='arg')],
        commands=['echo 1', 'echo 2']
    )

    async with CreateJob(**job_config) as job_name:
        await jenkins.nodes.enable('master')

        await jenkins.builds.start(job_name, dict(arg='test'))
        await asyncio.sleep(1)

        info = await jenkins.jobs.get_info(job_name)
        assert info['nextBuildNumber'] == 2

        # parameters must be passed
        with pytest.raises(JenkinsError):
            await jenkins.builds.start(job_name)

        with pytest.raises(JenkinsError):
            await jenkins.builds.start(job_name, delay=1)

        await jenkins.builds.stop(job_name, 1)
        await jenkins.builds.get_info(job_name, 1)
        await jenkins.builds.delete(job_name, 1)
コード例 #3
0
async def test_copy_job(jenkins):
    async with CreateJob(jenkins) as job_name:
        job_name_new = job_name + '_new'
        await jenkins.jobs.copy(job_name, job_name_new)
        try:
            available_jobs = await jenkins.jobs.get_all()
            assert job_name_new in available_jobs
        finally:
            await jenkins.jobs.delete(job_name_new)
コード例 #4
0
async def test_build_exists(jenkins):
    async with CreateJob(jenkins) as job_name:
        # TC: just created job hasn't any builds yet
        assert (await jenkins.builds.is_exists(job_name, 1)) is False

        # TC: start build and check its existence
        await jenkins.builds.start(job_name)
        await asyncio.sleep(1)

        assert (await jenkins.builds.is_exists(job_name, 1)) is True
コード例 #5
0
async def test_rename_job(jenkins):
    async with CreateJob(jenkins) as job_name:
        job_name_new = job_name + '_new'
        await jenkins.jobs.rename(job_name, job_name_new)
        available_jobs = await jenkins.jobs.get_all()

        assert job_name_new in available_jobs
        assert job_name not in available_jobs

        # for context manager success delete temporary job
        await jenkins.jobs.rename(job_name_new, job_name)
コード例 #6
0
async def test_get_job_reconfigure(jenkins):
    async with CreateJob(jenkins) as job_name:
        config_old = await jenkins.jobs.get_config(job_name)

        config_new = config_old.replace(
            '<concurrentBuild>false</concurrentBuild>',
            '<concurrentBuild>true</concurrentBuild>'
        )

        await jenkins.jobs.reconfigure(job_name, config_new)
        config = await jenkins.jobs.get_config(job_name)
        assert '<concurrentBuild>true</concurrentBuild>' in config
コード例 #7
0
async def test_get_all_builds():
    node_name = 'master'
    await jenkins.nodes.enable(node_name)

    async with CreateJob() as job_name:
        await jenkins.builds.start(job_name)
        await asyncio.sleep(1)

        builds = await jenkins.nodes.get_all_builds(node_name)
        assert len(builds) > 0

        assert builds[-1]['job_name'] == job_name
コード例 #8
0
async def test_build_queue_id(jenkins):
    version = await jenkins.get_version()
    # was introduced  default admin with password
    if version.major < 2:
        pytest.skip('there is problem, probably queue id was not implemented')

    async with CreateJob(jenkins) as job_name:
        queue_id = await jenkins.builds.start(job_name)
        assert queue_id > 0

        queue_id_info = await jenkins.builds.get_queue_id_info(queue_id)
        assert isinstance(queue_id_info, dict) is True
コード例 #9
0
async def test_get_failed_builds():
    node_name = 'master'
    await jenkins.nodes.enable(node_name)

    async with CreateJob(commands=['false']) as job_name:
        pre_failed_builds = await jenkins.nodes.get_failed_builds(node_name)

        await jenkins.builds.start(job_name)
        await asyncio.sleep(1)

        post_failed_builds = await jenkins.nodes.get_failed_builds(node_name)
        assert (len(post_failed_builds) - len(pre_failed_builds)) > 0

        assert post_failed_builds[-1]['job_name'] == job_name
コード例 #10
0
async def test_build_start(jenkins):
    arg_name = 'arg'
    arg_value = 'arg'

    config = dict(parameters=[dict(name=arg_name)])

    async with CreateJob(jenkins, **config) as job_name:
        await jenkins.builds.start(job_name, {arg_name: arg_value})
        await asyncio.sleep(1)

        job_info = await jenkins.jobs.get_info(job_name)
        last_build_number = job_info['lastBuild']['number']

        build_info = await jenkins.builds.get_info(job_name, last_build_number)
        assert build_info['actions'][0]['parameters'][0]['value'] == arg_value
コード例 #11
0
async def test_build_get_url_info(jenkins):
    # TC: invalid URL must raise the exception
    with pytest.raises(JenkinsError):
        await jenkins.builds.get_url_info('invalid')

    # TC: correct build url must return info (dict)
    async with CreateJob(jenkins) as job_name:
        await jenkins.builds.start(job_name)
        await asyncio.sleep(1)

        job_info = await jenkins.jobs.get_info(job_name)
        build_url = job_info['builds'][-1]['url']

        build_info = await jenkins.builds.get_url_info(build_url)
        assert isinstance(build_info, dict) is True
コード例 #12
0
async def test_build_list(jenkins):
    async with CreateJob(jenkins, parameters=[dict(name='arg')]) as job_name:
        # TC: just created job must not has any builds
        builds = await jenkins.builds.get_all(job_name)
        assert len(builds) == 0

        # TC: build list must contain something after build triggered
        await jenkins.nodes.enable('master')
        await jenkins.builds.start(job_name, dict(arg=0))

        info = await jenkins.jobs.get_info(job_name)
        builds = await jenkins.builds.get_all(job_name)
        assert (info['inQueue'] is True or len(builds) > 0)

        if not info['inQueue']:
            last_build_id = builds[-1]['number']
            output = await jenkins.builds.get_output(job_name, last_build_id)
            assert len(output) > 0
コード例 #13
0
ファイル: test_jenkins.py プロジェクト: pbelskiy/aiojenkins
async def test_tokens(jenkins):
    version = await jenkins.get_version()

    if not (version.major >= 2 and version.minor >= 129):
        pytest.skip('Version isn`t support API tokens')

    async with CreateJob(jenkins) as job_name:
        token_value, token_uuid = await jenkins.generate_token('')

        token_name = str(time.time())
        token_value, token_uuid = await jenkins.generate_token(token_name)

        await jenkins.nodes.enable('master')

        # instance without credentials
        jenkins_tokened = Jenkins(get_host(), get_login(), token_value)
        await jenkins_tokened.builds.start(job_name)

        await jenkins.revoke_token(token_uuid)

        with pytest.raises(JenkinsError):
            await jenkins_tokened.builds.start(job_name)
コード例 #14
0
async def test_get_job_info(jenkins):
    async with CreateJob(jenkins) as job_name:
        info = await jenkins.jobs.get_info(job_name)
        assert isinstance(info, dict)
コード例 #15
0
async def test_enable_job(jenkins):
    async with CreateJob(jenkins) as job_name:
        await jenkins.jobs.disable(job_name)
        await jenkins.jobs.enable(job_name)
        job_info = await jenkins.jobs.get_info(job_name)
        assert job_info['color'] != 'disabled'
コード例 #16
0
async def test_get_job_config(jenkins):
    async with CreateJob(jenkins) as job_name:
        config = await jenkins.jobs.get_config(job_name)
        assert len(config) > 0
コード例 #17
0
async def test_create_job(jenkins):
    async with CreateJob(jenkins) as job_name:
        available_jobs = await jenkins.jobs.get_all()
        assert job_name in available_jobs
コード例 #18
0
async def test_delete_job(jenkins):
    with contextlib.suppress(JenkinsNotFoundError):
        async with CreateJob(jenkins) as job_name:
            await jenkins.jobs.delete(job_name)
            available_jobs = await jenkins.jobs.get_all()
            assert job_name not in available_jobs