diff options
Diffstat (limited to 'tests/unittests/test_render_cloudcfg.py')
-rw-r--r-- | tests/unittests/test_render_cloudcfg.py | 91 |
1 files changed, 64 insertions, 27 deletions
diff --git a/tests/unittests/test_render_cloudcfg.py b/tests/unittests/test_render_cloudcfg.py index 495e2669..30fbd1a4 100644 --- a/tests/unittests/test_render_cloudcfg.py +++ b/tests/unittests/test_render_cloudcfg.py @@ -1,59 +1,96 @@ """Tests for tools/render-cloudcfg""" -import os import sys import pytest -from cloudinit import subp -from cloudinit import util +from cloudinit import subp, templater, util +from tests.unittests.helpers import cloud_init_project_dir # TODO(Look to align with tools.render-cloudcfg or cloudinit.distos.OSFAMILIES) -DISTRO_VARIANTS = ["amazon", "arch", "centos", "debian", "fedora", "freebsd", - "netbsd", "openbsd", "rhel", "suse", "ubuntu", "unknown"] +DISTRO_VARIANTS = [ + "amazon", + "arch", + "centos", + "debian", + "eurolinux", + "fedora", + "freebsd", + "gentoo", + "netbsd", + "openbsd", + "photon", + "rhel", + "suse", + "ubuntu", + "unknown", +] @pytest.mark.allow_subp_for(sys.executable) class TestRenderCloudCfg: - cmd = [sys.executable, os.path.realpath('tools/render-cloudcfg')] - tmpl_path = os.path.realpath('config/cloud.cfg.tmpl') + cmd = [sys.executable, cloud_init_project_dir("tools/render-cloudcfg")] + tmpl_path = cloud_init_project_dir("config/cloud.cfg.tmpl") - @pytest.mark.parametrize('variant', (DISTRO_VARIANTS)) + def test_variant_sets_distro_in_cloud_cfg_subp(self, tmpdir): + outfile = tmpdir.join("outcfg").strpath + + subp.subp(self.cmd + ["--variant", "ubuntu", self.tmpl_path, outfile]) + with open(outfile) as stream: + system_cfg = util.load_yaml(stream.read()) + assert system_cfg["system_info"]["distro"] == "ubuntu" + + @pytest.mark.parametrize("variant", (DISTRO_VARIANTS)) def test_variant_sets_distro_in_cloud_cfg(self, variant, tmpdir): - outfile = tmpdir.join('outcfg').strpath - subp.subp( - self.cmd + ['--variant', variant, self.tmpl_path, outfile]) + """Testing parametrized inputs with imported function saves ~0.5s per + call versus calling as subp + """ + outfile = tmpdir.join("outcfg").strpath + + templater.render_cloudcfg(variant, self.tmpl_path, outfile) with open(outfile) as stream: system_cfg = util.load_yaml(stream.read()) - if variant == 'unknown': - variant = 'ubuntu' # Unknown is defaulted to ubuntu - assert system_cfg['system_info']['distro'] == variant + if variant == "unknown": + variant = "ubuntu" # Unknown is defaulted to ubuntu + assert system_cfg["system_info"]["distro"] == variant - @pytest.mark.parametrize('variant', (DISTRO_VARIANTS)) + @pytest.mark.parametrize("variant", (DISTRO_VARIANTS)) def test_variant_sets_default_user_in_cloud_cfg(self, variant, tmpdir): - outfile = tmpdir.join('outcfg').strpath - subp.subp( - self.cmd + ['--variant', variant, self.tmpl_path, outfile]) + """Testing parametrized inputs with imported function saves ~0.5s per + call versus calling as subp + """ + outfile = tmpdir.join("outcfg").strpath + templater.render_cloudcfg(variant, self.tmpl_path, outfile) with open(outfile) as stream: system_cfg = util.load_yaml(stream.read()) default_user_exceptions = { - 'amazon': 'ec2-user', 'debian': 'ubuntu', 'unknown': 'ubuntu'} - default_user = system_cfg['system_info']['default_user']['name'] + "amazon": "ec2-user", + "debian": "ubuntu", + "unknown": "ubuntu", + } + default_user = system_cfg["system_info"]["default_user"]["name"] assert default_user == default_user_exceptions.get(variant, variant) - @pytest.mark.parametrize('variant,renderers', ( - ('freebsd', ['freebsd']), ('netbsd', ['netbsd']), - ('openbsd', ['openbsd']), ('ubuntu', ['netplan', 'eni', 'sysconfig'])) + @pytest.mark.parametrize( + "variant,renderers", + ( + ("freebsd", ["freebsd"]), + ("netbsd", ["netbsd"]), + ("openbsd", ["openbsd"]), + ("ubuntu", ["netplan", "eni", "sysconfig"]), + ), ) def test_variant_sets_network_renderer_priority_in_cloud_cfg( self, variant, renderers, tmpdir ): - outfile = tmpdir.join('outcfg').strpath - subp.subp( - self.cmd + ['--variant', variant, self.tmpl_path, outfile]) + """Testing parametrized inputs with imported function saves ~0.5s per + call versus calling as subp + """ + outfile = tmpdir.join("outcfg").strpath + templater.render_cloudcfg(variant, self.tmpl_path, outfile) with open(outfile) as stream: system_cfg = util.load_yaml(stream.read()) - assert renderers == system_cfg['system_info']['network']['renderers'] + assert renderers == system_cfg["system_info"]["network"]["renderers"] |