From df80168450faa013ce50893e3c62979829b1fea8 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Mon, 24 Sep 2012 19:24:25 -0700 Subject: Add a netconfig format test + if rhel is passed the 'all' device name, throw an error since rhel can not currently handle this case. --- tests/unittests/test_distros/test_netconfig.py | 146 +++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 tests/unittests/test_distros/test_netconfig.py (limited to 'tests/unittests/test_distros') diff --git a/tests/unittests/test_distros/test_netconfig.py b/tests/unittests/test_distros/test_netconfig.py new file mode 100644 index 00000000..f2cac2fe --- /dev/null +++ b/tests/unittests/test_distros/test_netconfig.py @@ -0,0 +1,146 @@ +from mocker import MockerTestCase + +import mocker + +import os + +from cloudinit import distros +from cloudinit import helpers +from cloudinit import settings +from cloudinit import util + +from StringIO import StringIO + + +BASE_NET_CFG =''' +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.1.5 + netmask 255.255.255.0 + network 192.168.0.0 + broadcast 192.168.1.0 + gateway 192.168.1.254 + +auto eth1 +iface eth1 inet dhcp +''' + + +class WriteBuffer(object): + def __init__(self): + self.buffer = StringIO() + self.mode = None + self.omode = None + + def write(self, text): + self.buffer.write(text) + + def __str__(self): + return self.buffer.getvalue() + + +class TestNetCfgDistro(MockerTestCase): + + def _get_distro(self, dname): + cls = distros.fetch(dname) + cfg = settings.CFG_BUILTIN + cfg['system_info']['distro'] = dname + paths = helpers.Paths({}) + return cls(dname, cfg, paths) + + def test_simple_write_ub(self): + ub_distro = self._get_distro('ubuntu') + util_mock = self.mocker.replace(util.write_file, spec=False, passthrough=False) + exists_mock = self.mocker.replace(os.path.isfile, spec=False, passthrough=False) + + exists_mock(mocker.ARGS) + self.mocker.count(0, None) + self.mocker.result(False) + + write_bufs = {} + def replace_write(filename, content, mode=0644, omode="wb"): + buf = WriteBuffer() + buf.mode = mode + buf.omode = omode + buf.write(content) + write_bufs[filename] = buf + + util_mock(mocker.ARGS) + self.mocker.call(replace_write) + self.mocker.replay() + ub_distro.apply_network(BASE_NET_CFG, False) + + self.assertEquals(len(write_bufs), 1) + self.assertIn('/etc/network/interfaces', write_bufs) + write_buf = write_bufs['/etc/network/interfaces'] + self.assertEquals(str(write_buf).strip(), BASE_NET_CFG.strip()) + self.assertEquals(write_buf.mode, 0644) + + def test_simple_write_rh(self): + rh_distro = self._get_distro('rhel') + write_mock = self.mocker.replace(util.write_file, spec=False, passthrough=False) + load_mock = self.mocker.replace(util.load_file, spec=False, passthrough=False) + exists_mock = self.mocker.replace(os.path.isfile, spec=False, passthrough=False) + + write_bufs = {} + def replace_write(filename, content, mode=0644, omode="wb"): + buf = WriteBuffer() + buf.mode = mode + buf.omode = omode + buf.write(content) + write_bufs[filename] = buf + + exists_mock(mocker.ARGS) + self.mocker.count(0, None) + self.mocker.result(False) + + load_mock(mocker.ARGS) + self.mocker.count(0, None) + self.mocker.result('') + + for i in range(0, 3): + write_mock(mocker.ARGS) + self.mocker.call(replace_write) + + self.mocker.replay() + rh_distro.apply_network(BASE_NET_CFG, False) + + self.assertEquals(len(write_bufs), 3) + self.assertIn('/etc/sysconfig/network-scripts/ifcfg-lo', write_bufs) + write_buf = write_bufs['/etc/sysconfig/network-scripts/ifcfg-lo'] + expected_buf = ''' +# Created by cloud-init +DEVICE="lo" +ONBOOT=yes +''' + self.assertEquals(str(write_buf).strip(), expected_buf.strip()) + self.assertEquals(write_buf.mode, 0644) + + self.assertIn('/etc/sysconfig/network-scripts/ifcfg-eth0', write_bufs) + write_buf = write_bufs['/etc/sysconfig/network-scripts/ifcfg-eth0'] + expected_buf = ''' +# Created by cloud-init +DEVICE="eth0" +BOOTPROTO="static" +NETMASK="255.255.255.0" +IPADDR="192.168.1.5" +ONBOOT=yes +GATEWAY="192.168.1.254" +BROADCAST="192.168.1.0" +''' + self.assertEquals(str(write_buf).strip(), expected_buf.strip()) + self.assertEquals(write_buf.mode, 0644) + + self.assertIn('/etc/sysconfig/network-scripts/ifcfg-eth1', write_bufs) + write_buf = write_bufs['/etc/sysconfig/network-scripts/ifcfg-eth1'] + expected_buf = ''' +# Created by cloud-init +DEVICE="eth1" +BOOTPROTO="dhcp" +ONBOOT=yes +''' + self.assertEquals(str(write_buf).strip(), expected_buf.strip()) + self.assertEquals(write_buf.mode, 0644) -- cgit v1.2.3 From a092e6e2eaa5dc848d71f16671c61fa6014ce0b2 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Mon, 24 Sep 2012 19:27:40 -0700 Subject: Fix pylint issues created. --- tests/unittests/test_distros/test_netconfig.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'tests/unittests/test_distros') diff --git a/tests/unittests/test_distros/test_netconfig.py b/tests/unittests/test_distros/test_netconfig.py index f2cac2fe..083ae34a 100644 --- a/tests/unittests/test_distros/test_netconfig.py +++ b/tests/unittests/test_distros/test_netconfig.py @@ -12,7 +12,7 @@ from cloudinit import util from StringIO import StringIO -BASE_NET_CFG =''' +BASE_NET_CFG = ''' auto lo iface lo inet loopback @@ -53,8 +53,10 @@ class TestNetCfgDistro(MockerTestCase): def test_simple_write_ub(self): ub_distro = self._get_distro('ubuntu') - util_mock = self.mocker.replace(util.write_file, spec=False, passthrough=False) - exists_mock = self.mocker.replace(os.path.isfile, spec=False, passthrough=False) + util_mock = self.mocker.replace(util.write_file, + spec=False, passthrough=False) + exists_mock = self.mocker.replace(os.path.isfile, + spec=False, passthrough=False) exists_mock(mocker.ARGS) self.mocker.count(0, None) @@ -81,9 +83,12 @@ class TestNetCfgDistro(MockerTestCase): def test_simple_write_rh(self): rh_distro = self._get_distro('rhel') - write_mock = self.mocker.replace(util.write_file, spec=False, passthrough=False) - load_mock = self.mocker.replace(util.load_file, spec=False, passthrough=False) - exists_mock = self.mocker.replace(os.path.isfile, spec=False, passthrough=False) + write_mock = self.mocker.replace(util.write_file, + spec=False, passthrough=False) + load_mock = self.mocker.replace(util.load_file, + spec=False, passthrough=False) + exists_mock = self.mocker.replace(os.path.isfile, + spec=False, passthrough=False) write_bufs = {} def replace_write(filename, content, mode=0644, omode="wb"): @@ -101,7 +106,7 @@ class TestNetCfgDistro(MockerTestCase): self.mocker.count(0, None) self.mocker.result('') - for i in range(0, 3): + for _i in range(0, 3): write_mock(mocker.ARGS) self.mocker.call(replace_write) -- cgit v1.2.3 From 94ff94e299257d22c0f45f980ce1a24b569b0b61 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Tue, 25 Sep 2012 13:56:31 -0700 Subject: Fix tests after resync with head. --- tests/unittests/test_distros/test_netconfig.py | 40 ++++++++++++++++++++------ 1 file changed, 32 insertions(+), 8 deletions(-) (limited to 'tests/unittests/test_distros') diff --git a/tests/unittests/test_distros/test_netconfig.py b/tests/unittests/test_distros/test_netconfig.py index 083ae34a..9954841b 100644 --- a/tests/unittests/test_distros/test_netconfig.py +++ b/tests/unittests/test_distros/test_netconfig.py @@ -37,7 +37,7 @@ class WriteBuffer(object): def write(self, text): self.buffer.write(text) - + def __str__(self): return self.buffer.getvalue() @@ -63,6 +63,7 @@ class TestNetCfgDistro(MockerTestCase): self.mocker.result(False) write_bufs = {} + def replace_write(filename, content, mode=0644, omode="wb"): buf = WriteBuffer() buf.mode = mode @@ -81,6 +82,18 @@ class TestNetCfgDistro(MockerTestCase): self.assertEquals(str(write_buf).strip(), BASE_NET_CFG.strip()) self.assertEquals(write_buf.mode, 0644) + def assertCfgEquals(self, blob1, blob2): + cfg_tester = distros.rhel.QuotingConfigObj + b1 = dict(cfg_tester(blob1.strip().splitlines())) + b2 = dict(cfg_tester(blob2.strip().splitlines())) + self.assertEquals(b1, b2) + for (k, v) in b1.items(): + self.assertIn(k, b2) + for (k, v) in b2.items(): + self.assertIn(k, b1) + for (k, v) in b1.items(): + self.assertEquals(v, b2[k]) + def test_simple_write_rh(self): rh_distro = self._get_distro('rhel') write_mock = self.mocker.replace(util.write_file, @@ -91,6 +104,7 @@ class TestNetCfgDistro(MockerTestCase): spec=False, passthrough=False) write_bufs = {} + def replace_write(filename, content, mode=0644, omode="wb"): buf = WriteBuffer() buf.mode = mode @@ -109,25 +123,27 @@ class TestNetCfgDistro(MockerTestCase): for _i in range(0, 3): write_mock(mocker.ARGS) self.mocker.call(replace_write) + + write_mock(mocker.ARGS) + self.mocker.call(replace_write) self.mocker.replay() rh_distro.apply_network(BASE_NET_CFG, False) - self.assertEquals(len(write_bufs), 3) + + self.assertEquals(len(write_bufs), 4) self.assertIn('/etc/sysconfig/network-scripts/ifcfg-lo', write_bufs) write_buf = write_bufs['/etc/sysconfig/network-scripts/ifcfg-lo'] expected_buf = ''' -# Created by cloud-init DEVICE="lo" ONBOOT=yes ''' - self.assertEquals(str(write_buf).strip(), expected_buf.strip()) + self.assertCfgEquals(expected_buf, str(write_buf)) self.assertEquals(write_buf.mode, 0644) self.assertIn('/etc/sysconfig/network-scripts/ifcfg-eth0', write_bufs) write_buf = write_bufs['/etc/sysconfig/network-scripts/ifcfg-eth0'] expected_buf = ''' -# Created by cloud-init DEVICE="eth0" BOOTPROTO="static" NETMASK="255.255.255.0" @@ -136,16 +152,24 @@ ONBOOT=yes GATEWAY="192.168.1.254" BROADCAST="192.168.1.0" ''' - self.assertEquals(str(write_buf).strip(), expected_buf.strip()) + self.assertCfgEquals(expected_buf, str(write_buf)) self.assertEquals(write_buf.mode, 0644) self.assertIn('/etc/sysconfig/network-scripts/ifcfg-eth1', write_bufs) write_buf = write_bufs['/etc/sysconfig/network-scripts/ifcfg-eth1'] expected_buf = ''' -# Created by cloud-init DEVICE="eth1" BOOTPROTO="dhcp" ONBOOT=yes ''' - self.assertEquals(str(write_buf).strip(), expected_buf.strip()) + self.assertCfgEquals(expected_buf, str(write_buf)) + self.assertEquals(write_buf.mode, 0644) + + self.assertIn('/etc/sysconfig/network', write_bufs) + write_buf = write_bufs['/etc/sysconfig/network'] + expected_buf = ''' +# Created by cloud-init v. 0.7 +NETWORKING=yes +''' + self.assertCfgEquals(expected_buf, str(write_buf)) self.assertEquals(write_buf.mode, 0644) -- cgit v1.2.3