95
92
self.assertIs(initial, teardown)
97
def test_old_released(self):
99
('foo', '--version'): '2.1',
100
('bar', '--version'): '2.0',
101
('juju', '--version'): '1.18',
102
('which', 'juju'): '/usr/bun/juju'
104
with _temp_env({'environments': {'baz': {}}}):
105
with patch('subprocess.check_output', lambda x: boo[x]):
106
with patch('jujupy.JujuData.load_yaml'):
107
initial, other, teardown = get_clients('foo', 'bar', 'baz',
109
self.assertIs(initial, teardown)
111
94
def test_get_clients_no_agent(self):
112
95
with _temp_env({'environments': {'baz': {}}}):
113
96
with patch('subprocess.check_output', return_value='1.18.73'):
145
128
class TestTestControlHeterogeneous(TestCase):
147
130
def test_test_control_heterogeneous(self):
148
client = fake_juju_client_optional_jes(jes_enabled=False)
131
client = FakeJujuClient()
149
132
bs_manager = FakeBootstrapManager(client)
150
133
# Prevent teardown
151
134
bs_manager.tear_down_client = MagicMock()
152
135
bs_manager.tear_down_client.destroy_environment.return_value = 0
153
with patch.object(client, 'kill_controller'):
136
with patch.object(client, 'destroy_environment', return_value=0):
154
137
test_control_heterogeneous(bs_manager, client, True)
155
models = client._backend.controller_state.models
156
model_state = models[client.model_name]
157
self.assertEqual(model_state.exposed, {'sink2', 'dummy-sink'})
158
self.assertEqual(model_state.machines, {'0', '1', '2'})
138
self.assertEqual(client._backing_state.exposed,
139
{'sink2', 'dummy-sink'})
140
self.assertEqual(client._backing_state.machines, {'0', '1', '2'})
159
141
self.assertEqual(client.env.juju_home, 'foo')
161
143
def test_same_home(self):
162
initial_client = fake_juju_client(version='1.25')
163
other_client = fake_juju_client(
164
env=initial_client.env,
165
_backend=initial_client._backend.clone(version='2.0.0'))
144
initial_client = FakeJujuClient()
145
other_client = FakeJujuClient(env=initial_client.env)
146
other_client._backing_state = initial_client._backing_state
166
147
bs_manager = FakeBootstrapManager(initial_client)
167
148
bs_manager.permanent = True
168
149
test_control_heterogeneous(bs_manager, other_client, True)
169
150
self.assertEqual(initial_client.env.juju_home,
170
151
other_client.env.juju_home)
173
class TestCheckSeries(TestCase):
175
def test_check_series(self):
176
client = fake_juju_client()
180
def test_check_series_xenial(self):
181
client = MagicMock(spec=["get_juju_output"])
182
client.get_juju_output.return_value = "Codename: xenial"
183
check_series(client, 1, 'xenial')
185
def test_check_series_calls(self):
186
client = MagicMock(spec=["get_juju_output"])
187
with patch.object(client, 'get_juju_output',
188
return_value="Codename: xenial") as gjo_mock:
189
check_series(client, 2, 'xenial')
190
gjo_mock.assert_called_once_with('ssh', 2, 'lsb_release', '-c')
192
def test_check_series_exceptionl(self):
193
client = fake_juju_client()
195
with self.assertRaisesRegexp(
196
AssertionError, 'Series is angsty, not xenial'):
197
check_series(client, '0', 'xenial')