summaryrefslogtreecommitdiff
path: root/tests/integration_tests/conftest.py
diff options
context:
space:
mode:
authorDaniel Watkins <oddbloke@ubuntu.com>2021-02-22 12:03:53 -0500
committerGitHub <noreply@github.com>2021-02-22 12:03:53 -0500
commit38aee6eebb160d46287c63a979bb897b15bb2f96 (patch)
tree6c15bd72e2d6a5e0eb5c363525a9d4853c642415 /tests/integration_tests/conftest.py
parent66e2d42dd1b722dc8e59f4e5990cea54f81ccd2a (diff)
downloadvyos-cloud-init-38aee6eebb160d46287c63a979bb897b15bb2f96.tar.gz
vyos-cloud-init-38aee6eebb160d46287c63a979bb897b15bb2f96.zip
integration_tests: introduce lxd_use_exec mark (#802)
pycloudlib has modified the way LXD executes tests (https://github.com/canonical/pycloudlib/pull/114): it will always use SSH to access them by default, instead of using `lxc exec`. This behaviour is transparent for them majority of cloud-init's integration tests, but some currently depend on using `lxc exec` to access instances with (intentionally) broken networking: obviously these are not accessible via SSH. pycloudlib retains support for switching an instance to use `lxc exec`. This commit introduces the `lxd_use_exec` mark, which tests can use to indicate to the integration testing framework that they should be so switched, and applies it to all applicable tests.
Diffstat (limited to 'tests/integration_tests/conftest.py')
-rw-r--r--tests/integration_tests/conftest.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/tests/integration_tests/conftest.py b/tests/integration_tests/conftest.py
index 3933d647..61ad8a71 100644
--- a/tests/integration_tests/conftest.py
+++ b/tests/integration_tests/conftest.py
@@ -200,6 +200,9 @@ def _client(request, fixture_utils, session_cloud: IntegrationCloud):
user_data = getter('user_data')
name = getter('instance_name')
lxd_config_dict = getter('lxd_config_dict')
+ lxd_use_exec = fixture_utils.closest_marker_args_or(
+ request, 'lxd_use_exec', None
+ )
launch_kwargs = {}
if name is not None:
@@ -208,10 +211,18 @@ def _client(request, fixture_utils, session_cloud: IntegrationCloud):
if not isinstance(session_cloud, _LxdIntegrationCloud):
pytest.skip("lxd_config_dict requires LXD")
launch_kwargs["config_dict"] = lxd_config_dict
+ if lxd_use_exec is not None:
+ if not isinstance(session_cloud, _LxdIntegrationCloud):
+ pytest.skip("lxd_use_exec requires LXD")
+ launch_kwargs["execute_via_ssh"] = False
with session_cloud.launch(
user_data=user_data, launch_kwargs=launch_kwargs
) as instance:
+ if lxd_use_exec is not None:
+ # Existing instances are not affected by the launch kwargs, so
+ # ensure it here; we still need the launch kwarg so waiting works
+ instance.execute_via_ssh = False
previous_failures = request.session.testsfailed
yield instance
test_failed = request.session.testsfailed - previous_failures > 0