コード例 #1
0
ファイル: test_http.py プロジェクト: alberts/dcos
def test_list_active_packages():
    _set_test_config(app)
    client = app.test_client()
    packages = json.loads(client.get('/active/').data.decode('utf-8'))
    assert packages == [
        'mesos--0.22.0',
        'mesos-config--ffddcfb53168d42f92e4771c6f8a8a9a818fd6b8']
コード例 #2
0
ファイル: test_http.py プロジェクト: zhangwh0801/dcos
def test_list_active_packages():
    _set_test_config(app)
    client = app.test_client()
    packages = json.loads(client.get('/active/').data.decode('utf-8'))
    assert packages == [
        'mesos--0.22.0',
        'mesos-config--ffddcfb53168d42f92e4771c6f8a8a9a818fd6b8'
    ]
コード例 #3
0
ファイル: test_http.py プロジェクト: alberts/dcos
def test_list_packages():
    _set_test_config(app)
    client = app.test_client()
    assert_json_response(client.get('/repository/'), 200, [
        'mesos--0.22.0',
        'mesos--0.23.0',
        'mesos-config--ffddcfb53168d42f92e4771c6f8a8a9a818fd6b8',
        'mesos-config--justmesos',
    ])
コード例 #4
0
ファイル: test_http.py プロジェクト: zhangwh0801/dcos
def test_list_packages():
    _set_test_config(app)
    client = app.test_client()
    assert_json_response(client.get('/repository/'), 200, [
        'mesos--0.22.0',
        'mesos--0.23.0',
        'mesos-config--ffddcfb53168d42f92e4771c6f8a8a9a818fd6b8',
        'mesos-config--justmesos',
    ])
コード例 #5
0
ファイル: test_http.py プロジェクト: alberts/dcos
def test_get_package():
    _set_test_config(app)
    client = app.test_client()

    assert_json_response(client.get('/repository/mesos--0.22.0'), 200, {
        'id': 'mesos--0.22.0',
        'name': 'mesos',
        'version': '0.22.0',
    })

    # Get nonexistent package.
    assert_error(client.get('/repository/nonexistent-package--fakeversion'), 404)
    assert_error(client.get('/repository/package---version'), 404)
    assert_error(client.get('/repository/packageversion'), 404)
    assert_error(client.get('/repository/!@#*'), 404)
コード例 #6
0
ファイル: test_http.py プロジェクト: zhangwh0801/dcos
def test_get_active_package():
    _set_test_config(app)
    client = app.test_client()

    assert_json_response(client.get('/active/mesos--0.22.0'), 200, {
        'id': 'mesos--0.22.0',
        'name': 'mesos',
        'version': '0.22.0',
    })

    # Get nonexistent package.
    assert_error(client.get('/active/mesos--0.23.0'), 404)
    assert_error(client.get('/active/package---version'), 404)
    assert_error(client.get('/active/packageversion'), 404)
    assert_error(client.get('/active/!@#*'), 404)
コード例 #7
0
ファイル: test_http.py プロジェクト: dcos/dcos
def test_activate_packages(tmpdir):
    _set_test_config(app)
    install_dir = str(tmpdir.join('install'))
    copytree(resources_test_dir('install'), install_dir, symlinks=True)
    app.config['DCOS_ROOT'] = install_dir
    app.config['DCOS_ROOTED_SYSTEMD'] = True
    client = app.test_client()

    # Upgrade from mesos--0.22.0 to mesos--0.23.0.
    old_packages = [
        'mesos--0.22.0',
        'mesos-config--ffddcfb53168d42f92e4771c6f8a8a9a818fd6b8',
    ]
    new_packages = [
        'mesos--0.23.0',
        'mesos-config--ffddcfb53168d42f92e4771c6f8a8a9a818fd6b8',
    ]
    assert_json_response(client.get('/active/'), 200, old_packages)
    assert_response(
        client.put(
            '/active/',
            content_type='application/json',
            data=json.dumps(new_packages),
        ),
        204,
        b'',
    )
    assert_json_response(client.get('/active/'), 200, new_packages)

    # mesos--0.23.0 expects to have a state directory.
    assert os.path.isdir(app.config['DCOS_STATE_DIR_ROOT'] + '/mesos')

    # Attempt to activate nonexistent packages.
    nonexistent_packages = [
        'nonexistent-package--fakeversion1',
        'nonexistent-package--fakeversion2',
    ]
    assert_error(
        client.put(
            '/active/',
            content_type='application/json',
            data=json.dumps(['mesos--0.23.0'] + nonexistent_packages),
        ),
        409,
        missing_packages=sorted(nonexistent_packages),
    )
コード例 #8
0
ファイル: test_http.py プロジェクト: zhangwh0801/dcos
def test_activate_packages(tmpdir):
    _set_test_config(app)
    install_dir = str(tmpdir.join('install'))
    copytree(resources_test_dir('install'), install_dir, symlinks=True)
    app.config['DCOS_ROOT'] = install_dir
    app.config['DCOS_ROOTED_SYSTEMD'] = True
    client = app.test_client()

    # Upgrade from mesos--0.22.0 to mesos--0.23.0.
    old_packages = [
        'mesos--0.22.0',
        'mesos-config--ffddcfb53168d42f92e4771c6f8a8a9a818fd6b8',
    ]
    new_packages = [
        'mesos--0.23.0',
        'mesos-config--ffddcfb53168d42f92e4771c6f8a8a9a818fd6b8',
    ]
    assert_json_response(client.get('/active/'), 200, old_packages)
    assert_response(
        client.put(
            '/active/',
            content_type='application/json',
            data=json.dumps(new_packages),
        ),
        204,
        b'',
    )
    assert_json_response(client.get('/active/'), 200, new_packages)

    # mesos--0.23.0 expects to have a state directory.
    assert os.path.isdir(app.config['DCOS_STATE_DIR_ROOT'] + '/mesos')

    # Attempt to activate nonexistent packages.
    nonexistent_packages = [
        'nonexistent-package--fakeversion1',
        'nonexistent-package--fakeversion2',
    ]
    assert_error(
        client.put(
            '/active/',
            content_type='application/json',
            data=json.dumps(['mesos--0.23.0'] + nonexistent_packages),
        ),
        409,
        missing_packages=sorted(nonexistent_packages),
    )
コード例 #9
0
ファイル: test_http.py プロジェクト: zhangwh0801/dcos
def test_remove_package(tmpdir):
    _set_test_config(app)
    repo_dir = str(tmpdir.join('repo'))
    copytree(resources_test_dir('packages'), repo_dir)
    app.config['DCOS_REPO_DIR'] = repo_dir
    client = app.test_client()

    # Successful deletion.
    package_to_delete = 'mesos--0.23.0'
    assert_json_response(
        client.get('/repository/'),
        200,
        package_to_delete,
        body_cmp=lambda response_body, package: package in response_body,
    )
    assert_response(client.delete('/repository/' + package_to_delete), 204,
                    b'')
    assert_json_response(
        client.get('/repository/'),
        200,
        package_to_delete,
        body_cmp=lambda response_body, package: package not in response_body,
    )

    # Attempted deletion of active package.
    package_to_delete = 'mesos--0.22.0'
    assert_json_response(
        client.get('/active/'),
        200,
        package_to_delete,
        body_cmp=lambda response_body, package: package in response_body,
    )
    assert_error(client.delete('/repository/' + package_to_delete), 409)
    assert_json_response(
        client.get('/active/'),
        200,
        package_to_delete,
        body_cmp=lambda response_body, package: package in response_body,
    )

    # Attempted deletion of nonexistent package.
    assert_error(client.delete('/repository/nonexistent-package--fakeversion'),
                 404)
    assert_error(client.delete('/repository/invalid---package'), 404)
コード例 #10
0
ファイル: test_http.py プロジェクト: zhangwh0801/dcos
def test_fetch_package(tmpdir):
    _set_test_config(app)
    client = app.test_client()
    app.config['DCOS_REPO_DIR'] = str(tmpdir)

    # Successful package fetch.
    assert_json_response(client.get('/repository/'), 200, [])
    assert_response(
        client.post(
            '/repository/mesos--0.22.0',
            content_type='application/json',
            data=json.dumps({
                'repository_url':
                'file://{}/{}/'.format(os.getcwd(),
                                       resources_test_dir('remote_repo'))
            }),
        ),
        204,
        b'',
    )
    assert_json_response(client.get('/repository/'), 200, ['mesos--0.22.0'])

    # No repository URL provided.
    assert_error(
        client.post(
            '/repository/mesos--0.23.0',
            content_type='application/json',
            data=json.dumps({}),
        ),
        400,
    )

    # Invalid package ID.
    assert_error(
        client.post(
            '/repository/invalid---package',
            content_type='application/json',
            data=json.dumps({
                'repository_url':
                'file://{}/'.format(resources_test_dir('remote_repo'))
            }),
        ),
        400,
    )
コード例 #11
0
ファイル: test_http.py プロジェクト: alberts/dcos
def test_remove_package(tmpdir):
    _set_test_config(app)
    repo_dir = str(tmpdir.join('repo'))
    copytree('../resources/packages', repo_dir)
    app.config['DCOS_REPO_DIR'] = repo_dir
    client = app.test_client()

    # Successful deletion.
    package_to_delete = 'mesos--0.23.0'
    assert_json_response(
        client.get('/repository/'),
        200,
        package_to_delete,
        body_cmp=lambda response_body, package: package in response_body,
    )
    assert_response(client.delete('/repository/' + package_to_delete), 204, b'')
    assert_json_response(
        client.get('/repository/'),
        200,
        package_to_delete,
        body_cmp=lambda response_body, package: package not in response_body,
    )

    # Attempted deletion of active package.
    package_to_delete = 'mesos--0.22.0'
    assert_json_response(
        client.get('/active/'),
        200,
        package_to_delete,
        body_cmp=lambda response_body, package: package in response_body,
    )
    assert_error(client.delete('/repository/' + package_to_delete), 409)
    assert_json_response(
        client.get('/active/'),
        200,
        package_to_delete,
        body_cmp=lambda response_body, package: package in response_body,
    )

    # Attempted deletion of nonexistent package.
    assert_error(client.delete('/repository/nonexistent-package--fakeversion'), 404)
    assert_error(client.delete('/repository/invalid---package'), 404)
コード例 #12
0
ファイル: test_http.py プロジェクト: alberts/dcos
def test_fetch_package(tmpdir):
    _set_test_config(app)
    client = app.test_client()
    app.config['DCOS_REPO_DIR'] = str(tmpdir)

    # Successful package fetch.
    assert_json_response(client.get('/repository/'), 200, [])
    assert_response(
        client.post(
            '/repository/mesos--0.22.0',
            content_type='application/json',
            data=json.dumps({
                'repository_url': 'file://{}/../resources/remote_repo'.format(os.getcwd())
            }),
        ),
        204,
        b'',
    )
    assert_json_response(client.get('/repository/'), 200, ['mesos--0.22.0'])

    # No repository URL provided.
    assert_error(
        client.post(
            '/repository/mesos--0.23.0',
            content_type='application/json',
            data=json.dumps({}),
        ),
        400,
    )

    # Invalid package ID.
    assert_error(
        client.post(
            '/repository/invalid---package',
            content_type='application/json',
            data=json.dumps({
                'repository_url': 'file://{}/../resources/remote_repo'.format(os.getcwd())
            }),
        ),
        400,
    )