Skip to content
Snippets Groups Projects
Commit cdcfc0d2 authored by Jim MacArthur's avatar Jim MacArthur
Browse files

tests/sandboxes/remote-exec-config.py: New test.

Tests that we get a sensible error message when we specify incomplete
or wrong information in the configuration for remote execution.
parent 7208078a
No related branches found
No related tags found
No related merge requests found
import pytest
import itertools
import os
from buildstream import _yaml
from buildstream._exceptions import ErrorDomain, LoadErrorReason
from tests.testutils.runcli import cli
DATA_DIR = os.path.join(
os.path.dirname(os.path.realpath(__file__)),
"remote-exec-config"
)
# Tests that we get a useful error message when supplying invalid
# remote execution configurations.
# Assert that if both 'url' (the old style) and 'execution-service' (the new style)
# are used at once, a LoadError results.
@pytest.mark.datafiles(DATA_DIR)
def test_old_and_new_configs(cli, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename, 'missing-certs')
project_conf = {
'name': 'test',
'remote-execution': {
'url': 'https://cache.example.com:12345',
'execution-service': {
'url': 'http://localhost:8088'
},
'storage-service': {
'url': 'http://charactron:11001',
}
}
}
project_conf_file = os.path.join(project, 'project.conf')
_yaml.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=['pull', 'element.bst'])
result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.INVALID_DATA, "specify one")
# Assert that if either the client key or client cert is specified
# 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')
])
def test_missing_certs(cli, datafiles, config_key, config_value):
project = os.path.join(datafiles.dirname, datafiles.basename, 'missing-certs')
project_conf = {
'name': 'test',
'remote-execution': {
'execution-service': {
'url': 'http://localhost:8088'
},
'storage-service': {
'url': 'http://charactron:11001',
config_key: config_value,
}
}
}
project_conf_file = os.path.join(project, 'project.conf')
_yaml.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=['show', 'element.bst'])
result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.INVALID_DATA, "Your config is missing")
# Assert that if incomplete information is supplied we get a sensible error message.
@pytest.mark.datafiles(DATA_DIR)
def test_empty_config(cli, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename, 'missing-certs')
project_conf = {
'name': 'test',
'remote-execution': {
}
}
project_conf_file = os.path.join(project, 'project.conf')
_yaml.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=['pull', 'element.bst'])
result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.INVALID_DATA, "specify one")
kind: autotools
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment