summaryrefslogtreecommitdiff
path: root/tests/artifactcache/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/artifactcache/config.py')
-rw-r--r--tests/artifactcache/config.py186
1 files changed, 81 insertions, 105 deletions
diff --git a/tests/artifactcache/config.py b/tests/artifactcache/config.py
index 75cce267c..e5e2213eb 100644
--- a/tests/artifactcache/config.py
+++ b/tests/artifactcache/config.py
@@ -19,32 +19,20 @@ from tests.testutils import dummy_context
DATA_DIR = os.path.dirname(os.path.realpath(__file__))
-cache1 = RemoteSpec(url='https://example.com/cache1', push=True)
-cache2 = RemoteSpec(url='https://example.com/cache2', push=False)
-cache3 = RemoteSpec(url='https://example.com/cache3', push=False)
-cache4 = RemoteSpec(url='https://example.com/cache4', push=False)
-cache5 = RemoteSpec(url='https://example.com/cache5', push=False)
-cache6 = RemoteSpec(url='https://example.com/cache6',
- push=True,
- type=RemoteType.ALL)
-cache7 = RemoteSpec(url='https://index.example.com/cache1',
- push=True,
- type=RemoteType.INDEX)
-cache8 = RemoteSpec(url='https://storage.example.com/cache1',
- push=True,
- type=RemoteType.STORAGE)
+cache1 = RemoteSpec(url="https://example.com/cache1", push=True)
+cache2 = RemoteSpec(url="https://example.com/cache2", push=False)
+cache3 = RemoteSpec(url="https://example.com/cache3", push=False)
+cache4 = RemoteSpec(url="https://example.com/cache4", push=False)
+cache5 = RemoteSpec(url="https://example.com/cache5", push=False)
+cache6 = RemoteSpec(url="https://example.com/cache6", push=True, type=RemoteType.ALL)
+cache7 = RemoteSpec(url="https://index.example.com/cache1", push=True, type=RemoteType.INDEX)
+cache8 = RemoteSpec(url="https://storage.example.com/cache1", push=True, type=RemoteType.STORAGE)
# Generate cache configuration fragments for the user config and project config files.
#
-def configure_remote_caches(override_caches,
- project_caches=None,
- user_caches=None):
- type_strings = {
- RemoteType.INDEX: 'index',
- RemoteType.STORAGE: 'storage',
- RemoteType.ALL: 'all'
- }
+def configure_remote_caches(override_caches, project_caches=None, user_caches=None):
+ type_strings = {RemoteType.INDEX: "index", RemoteType.STORAGE: "storage", RemoteType.ALL: "all"}
if project_caches is None:
project_caches = []
@@ -54,39 +42,32 @@ def configure_remote_caches(override_caches,
user_config = {}
if len(user_caches) == 1:
- user_config['artifacts'] = {
- 'url': user_caches[0].url,
- 'push': user_caches[0].push,
- 'type': type_strings[user_caches[0].type]
+ user_config["artifacts"] = {
+ "url": user_caches[0].url,
+ "push": user_caches[0].push,
+ "type": type_strings[user_caches[0].type],
}
elif len(user_caches) > 1:
- user_config['artifacts'] = [
- {
- 'url': cache.url,
- 'push': cache.push,
- 'type': type_strings[cache.type]
- } for cache in user_caches
+ user_config["artifacts"] = [
+ {"url": cache.url, "push": cache.push, "type": type_strings[cache.type]} for cache in user_caches
]
if len(override_caches) == 1:
- user_config['projects'] = {
- 'test': {
- 'artifacts': {
- 'url': override_caches[0].url,
- 'push': override_caches[0].push,
- 'type': type_strings[override_caches[0].type]
+ user_config["projects"] = {
+ "test": {
+ "artifacts": {
+ "url": override_caches[0].url,
+ "push": override_caches[0].push,
+ "type": type_strings[override_caches[0].type],
}
}
}
elif len(override_caches) > 1:
- user_config['projects'] = {
- 'test': {
- 'artifacts': [
- {
- 'url': cache.url,
- 'push': cache.push,
- 'type': type_strings[cache.type]
- } for cache in override_caches
+ user_config["projects"] = {
+ "test": {
+ "artifacts": [
+ {"url": cache.url, "push": cache.push, "type": type_strings[cache.type]}
+ for cache in override_caches
]
}
}
@@ -94,23 +75,24 @@ def configure_remote_caches(override_caches,
project_config = {}
if project_caches:
if len(project_caches) == 1:
- project_config.update({
- 'artifacts': {
- 'url': project_caches[0].url,
- 'push': project_caches[0].push,
- 'type': type_strings[project_caches[0].type],
+ project_config.update(
+ {
+ "artifacts": {
+ "url": project_caches[0].url,
+ "push": project_caches[0].push,
+ "type": type_strings[project_caches[0].type],
+ }
}
- })
+ )
elif len(project_caches) > 1:
- project_config.update({
- 'artifacts': [
- {
- 'url': cache.url,
- 'push': cache.push,
- 'type': type_strings[cache.type]
- } for cache in project_caches
- ]
- })
+ project_config.update(
+ {
+ "artifacts": [
+ {"url": cache.url, "push": cache.push, "type": type_strings[cache.type]}
+ for cache in project_caches
+ ]
+ }
+ )
return user_config, project_config
@@ -118,27 +100,28 @@ def configure_remote_caches(override_caches,
# Test that parsing the remote artifact cache locations produces the
# expected results.
@pytest.mark.parametrize(
- 'override_caches, project_caches, user_caches',
+ "override_caches, project_caches, user_caches",
[
# The leftmost cache is the highest priority one in all cases here.
- pytest.param([], [], [], id='empty-config'),
- pytest.param([], [], [cache1, cache2], id='user-config'),
- pytest.param([], [cache1, cache2], [cache3], id='project-config'),
- pytest.param([cache1], [cache2], [cache3], id='project-override-in-user-config'),
- pytest.param([cache1, cache2], [cache3, cache4], [cache5, cache6], id='list-order'),
- pytest.param([cache1, cache2, cache1], [cache2], [cache2, cache1], id='duplicates'),
- pytest.param([cache7, cache8], [], [cache1], id='split-caches')
- ])
+ pytest.param([], [], [], id="empty-config"),
+ pytest.param([], [], [cache1, cache2], id="user-config"),
+ pytest.param([], [cache1, cache2], [cache3], id="project-config"),
+ pytest.param([cache1], [cache2], [cache3], id="project-override-in-user-config"),
+ pytest.param([cache1, cache2], [cache3, cache4], [cache5, cache6], id="list-order"),
+ pytest.param([cache1, cache2, cache1], [cache2], [cache2, cache1], id="duplicates"),
+ pytest.param([cache7, cache8], [], [cache1], id="split-caches"),
+ ],
+)
def test_artifact_cache_precedence(tmpdir, override_caches, project_caches, user_caches):
# Produce a fake user and project config with the cache configuration.
user_config, project_config = configure_remote_caches(override_caches, project_caches, user_caches)
- project_config['name'] = 'test'
+ project_config["name"] = "test"
- user_config_file = str(tmpdir.join('buildstream.conf'))
+ user_config_file = str(tmpdir.join("buildstream.conf"))
_yaml.roundtrip_dump(user_config, file=user_config_file)
- project_dir = tmpdir.mkdir('project')
- project_config_file = str(project_dir.join('project.conf'))
+ project_dir = tmpdir.mkdir("project")
+ project_config_file = str(project_dir.join("project.conf"))
_yaml.roundtrip_dump(project_config, file=project_config_file)
with dummy_context(config=user_config_file) as context:
@@ -157,29 +140,21 @@ def test_artifact_cache_precedence(tmpdir, override_caches, project_caches, user
# without specifying its counterpart, we get a comprehensive LoadError
# instead of an unhandled exception.
@pytest.mark.datafiles(DATA_DIR)
-@pytest.mark.parametrize('config_key, config_value', [
- ('client-cert', 'client.crt'),
- ('client-key', 'client.key')
-])
+@pytest.mark.parametrize("config_key, config_value", [("client-cert", "client.crt"), ("client-key", "client.key")])
def test_missing_certs(cli, datafiles, config_key, config_value):
- project = os.path.join(datafiles.dirname, datafiles.basename, 'missing-certs')
+ project = os.path.join(datafiles.dirname, datafiles.basename, "missing-certs")
project_conf = {
- 'name': 'test',
-
- 'artifacts': {
- 'url': 'https://cache.example.com:12345',
- 'push': 'true',
- config_key: config_value
- }
+ "name": "test",
+ "artifacts": {"url": "https://cache.example.com:12345", "push": "true", config_key: config_value},
}
- project_conf_file = os.path.join(project, 'project.conf')
+ project_conf_file = os.path.join(project, "project.conf")
_yaml.roundtrip_dump(project_conf, project_conf_file)
# Use `pull` here to ensure we try to initialize the remotes, triggering the error
#
# This does not happen for a simple `bst show`.
- result = cli.run(project=project, args=['artifact', 'pull', 'element.bst'])
+ result = cli.run(project=project, args=["artifact", "pull", "element.bst"])
result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.INVALID_DATA)
@@ -187,32 +162,33 @@ def test_missing_certs(cli, datafiles, config_key, config_value):
# only one type of storage.
@pytest.mark.datafiles(DATA_DIR)
@pytest.mark.parametrize(
- 'override_caches, project_caches, user_caches',
+ "override_caches, project_caches, user_caches",
[
# The leftmost cache is the highest priority one in all cases here.
- pytest.param([], [], [cache7], id='index-user'),
- pytest.param([], [], [cache8], id='storage-user'),
- pytest.param([], [cache7], [], id='index-project'),
- pytest.param([], [cache8], [], id='storage-project'),
- pytest.param([cache7], [], [], id='index-override'),
- pytest.param([cache8], [], [], id='storage-override'),
- ])
+ pytest.param([], [], [cache7], id="index-user"),
+ pytest.param([], [], [cache8], id="storage-user"),
+ pytest.param([], [cache7], [], id="index-project"),
+ pytest.param([], [cache8], [], id="storage-project"),
+ pytest.param([cache7], [], [], id="index-override"),
+ pytest.param([cache8], [], [], id="storage-override"),
+ ],
+)
def test_only_one(cli, datafiles, override_caches, project_caches, user_caches):
- project = os.path.join(datafiles.dirname, datafiles.basename, 'only-one')
+ project = os.path.join(datafiles.dirname, datafiles.basename, "only-one")
# Produce a fake user and project config with the cache configuration.
user_config, project_config = configure_remote_caches(override_caches, project_caches, user_caches)
- project_config['name'] = 'test'
+ project_config["name"] = "test"
cli.configure(user_config)
- project_config_file = os.path.join(project, 'project.conf')
+ project_config_file = os.path.join(project, "project.conf")
_yaml.roundtrip_dump(project_config, file=project_config_file)
# Use `pull` here to ensure we try to initialize the remotes, triggering the error
#
# This does not happen for a simple `bst show`.
- result = cli.run(project=project, args=['artifact', 'pull', 'element.bst'])
+ result = cli.run(project=project, args=["artifact", "pull", "element.bst"])
result.assert_main_error(ErrorDomain.STREAM, None)
@@ -239,8 +215,8 @@ def test_only_one(cli, datafiles, override_caches, project_caches, user_caches):
"client-cert": "~/client2.crt",
"client-key": "~/client2.key",
},
- ]
- )
+ ],
+ ),
)
@pytest.mark.parametrize("in_user_config", [True, False])
def test_paths_for_artifact_config_are_expanded(tmpdir, monkeypatch, artifacts_config, in_user_config):
@@ -260,11 +236,11 @@ def test_paths_for_artifact_config_are_expanded(tmpdir, monkeypatch, artifacts_c
"artifacts": artifacts_config,
}
- user_config_file = str(tmpdir.join('buildstream.conf'))
+ user_config_file = str(tmpdir.join("buildstream.conf"))
_yaml.roundtrip_dump(user_config, file=user_config_file)
- project_dir = tmpdir.mkdir('project')
- project_config_file = str(project_dir.join('project.conf'))
+ project_dir = tmpdir.mkdir("project")
+ project_config_file = str(project_dir.join("project.conf"))
_yaml.roundtrip_dump(project_config, file=project_config_file)
with dummy_context(config=user_config_file) as context: