LEFT | RIGHT |
(no file at all) | |
1 import os | 1 import os |
2 import stat | 2 import stat |
3 | 3 |
4 | 4 |
5 from juju.errors import CloudInitError | 5 from juju.errors import CloudInitError |
6 from juju.lib import serializer | 6 from juju.lib import serializer |
7 from juju.lib.testing import TestCase | 7 from juju.lib.testing import TestCase |
8 from juju.machine.tests.test_constraints import dummy_cs | 8 from juju.machine.tests.test_constraints import dummy_cs |
9 from juju.providers.common.cloudinit import ( | 9 from juju.providers.common.cloudinit import ( |
10 CloudInit, parse_juju_origin, get_default_origin) | 10 CloudInit, parse_juju_origin, get_default_origin) |
(...skipping 27 matching lines...) Expand all Loading... |
38 cloud_init.set_zookeeper_secret("seekrit") | 38 cloud_init.set_zookeeper_secret("seekrit") |
39 cloud_init.set_constraints( | 39 cloud_init.set_constraints( |
40 dummy_cs.parse(["cpu=20"]).with_series("astonishing")) | 40 dummy_cs.parse(["cpu=20"]).with_series("astonishing")) |
41 cloud_init.set_juju_source(distro=True) | 41 cloud_init.set_juju_source(distro=True) |
42 if with_zookeepers: | 42 if with_zookeepers: |
43 cloud_init.set_zookeeper_machines([ | 43 cloud_init.set_zookeeper_machines([ |
44 DummyMachine("blah", "blah", "cotswold"), | 44 DummyMachine("blah", "blah", "cotswold"), |
45 DummyMachine("blah", "blah", "longleat")]) | 45 DummyMachine("blah", "blah", "longleat")]) |
46 return cloud_init | 46 return cloud_init |
47 | 47 |
48 def assert_render(self, cloud_init, name): | 48 def assert_render(self, cloud_init, name, update=False): |
49 with open(os.path.join(DATA_DIR, name)) as f: | 49 with open(os.path.join(DATA_DIR, name)) as f: |
50 expected = serializer.load(f.read()) | 50 expected = serializer.load(f.read()) |
51 rendered = cloud_init.render() | 51 rendered = cloud_init.render() |
| 52 if update: |
| 53 with open(os.path.join(DATA_DIR, name), 'w') as fh: |
| 54 fh.write(rendered) |
52 self.assertTrue(rendered.startswith("#cloud-config")) | 55 self.assertTrue(rendered.startswith("#cloud-config")) |
53 self.assertEquals(serializer.load(rendered), expected) | 56 self.assertEquals(serializer.load(rendered), expected) |
54 | 57 |
55 def test_render_validate_normal(self): | 58 def test_render_validate_normal(self): |
56 cloud_init = CloudInit() | 59 cloud_init = CloudInit() |
57 error = self.assertRaises(CloudInitError, cloud_init.render) | 60 error = self.assertRaises(CloudInitError, cloud_init.render) |
58 self.assertEquals( | 61 self.assertEquals( |
59 str(error), | 62 str(error), |
60 "Incomplete cloud-init: you need to call add_ssh_key, " | 63 "Incomplete cloud-init: you need to call add_ssh_key, " |
61 "set_zookeeper_machines") | 64 "set_zookeeper_machines") |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 self.assert_render(cloud_init, "cloud_init_branch") | 131 self.assert_render(cloud_init, "cloud_init_branch") |
129 | 132 |
130 def test_render_branch_source_if_not_installed(self): | 133 def test_render_branch_source_if_not_installed(self): |
131 self.patch(juju, "__file__", "/not/installed/under/usr") | 134 self.patch(juju, "__file__", "/not/installed/under/usr") |
132 cloud_init = self.construct_normal() | 135 cloud_init = self.construct_normal() |
133 self.assert_render(cloud_init, "cloud_init_branch_trunk") | 136 self.assert_render(cloud_init, "cloud_init_branch_trunk") |
134 | 137 |
135 def test_render_bootstrap(self): | 138 def test_render_bootstrap(self): |
136 self.assert_render(self.construct_bootstrap(), "cloud_init_bootstrap") | 139 self.assert_render(self.construct_bootstrap(), "cloud_init_bootstrap") |
137 | 140 |
| 141 def test_render_bootstrap_testing(self): |
| 142 self.change_environment(JUJU_TESTING="fast") |
| 143 self.assert_render( |
| 144 self.construct_bootstrap(), "cloud_init_bootstrap_testing") |
| 145 |
138 def test_render_bootstrap_with_zookeepers(self): | 146 def test_render_bootstrap_with_zookeepers(self): |
139 self.assert_render( | 147 self.assert_render( |
140 self.construct_bootstrap(True), "cloud_init_bootstrap_zookeepers") | 148 self.construct_bootstrap(True), "cloud_init_bootstrap_zookeepers") |
141 | 149 |
142 def test_render_no_machine_id(self): | 150 def test_render_no_machine_id(self): |
143 self.patch(juju, "__file__", "/not/installed/under/usr") | 151 self.patch(juju, "__file__", "/not/installed/under/usr") |
144 cloud_init = CloudInit() | 152 cloud_init = CloudInit() |
145 cloud_init.add_ssh_key("chubb") | 153 cloud_init.add_ssh_key("chubb") |
146 cloud_init.set_provider_type("dummy") | 154 cloud_init.set_provider_type("dummy") |
147 cloud_init.set_zookeeper_machines([ | 155 cloud_init.set_zookeeper_machines([ |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 | 331 |
324 def test_get_default_origin_apt_cache_not_found(self): | 332 def test_get_default_origin_apt_cache_not_found(self): |
325 """ | 333 """ |
326 If the running logic isn't in /usr, installed version doesn't matter. | 334 If the running logic isn't in /usr, installed version doesn't matter. |
327 """ | 335 """ |
328 bin_dir = self.makeDir() | 336 bin_dir = self.makeDir() |
329 self.change_environment(PATH=bin_dir+":/bin") | 337 self.change_environment(PATH=bin_dir+":/bin") |
330 self.patch(juju, "__file__", | 338 self.patch(juju, "__file__", |
331 "/usr/lib/pymodules/python2.7/juju/__init__.pyc") | 339 "/usr/lib/pymodules/python2.7/juju/__init__.pyc") |
332 self.assertEquals(get_default_origin(), ("distro", None)) | 340 self.assertEquals(get_default_origin(), ("distro", None)) |
LEFT | RIGHT |