~andrewjbeach/juju-ci-tools/make-local-patcher

« back to all changes in this revision

Viewing changes to tests/test_assess_heterogeneous_control.py

  • Committer: Curtis Hovey
  • Date: 2016-04-10 15:23:18 UTC
  • Revision ID: curtis@canonical.com-20160410152318-ntfymsv9eiw63vt2
Addedd daily streams to get_amy.py get_ami.py tests/test_get_ami.py

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
from mock import (
6
6
    MagicMock,
7
7
    patch,
8
 
)
 
8
    )
9
9
 
10
10
from assess_heterogeneous_control import (
11
11
    assess_heterogeneous,
12
 
    check_series,
13
12
    get_clients,
14
13
    parse_args,
15
14
    test_control_heterogeneous,
16
 
)
17
 
from fakejuju import (
18
 
    fake_juju_client,
19
 
    fake_juju_client_optional_jes,
20
 
)
 
15
    )
21
16
from jujupy import (
22
17
    _temp_env,
23
 
)
 
18
    )
24
19
from tests.test_deploy_stack import FakeBootstrapManager
 
20
from tests.test_jujupy import FakeJujuClient
 
21
 
25
22
 
26
23
__metaclass__ = type
27
24
 
94
91
                                                           True, 'quxx')
95
92
        self.assertIs(initial, teardown)
96
93
 
97
 
    def test_old_released(self):
98
 
        boo = {
99
 
            ('foo', '--version'): '2.1',
100
 
            ('bar', '--version'): '2.0',
101
 
            ('juju', '--version'): '1.18',
102
 
            ('which', 'juju'): '/usr/bun/juju'
103
 
            }
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',
108
 
                                                           True, 'quxx')
109
 
        self.assertIs(initial, teardown)
110
 
 
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):
146
129
 
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')
160
142
 
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)
171
 
 
172
 
 
173
 
class TestCheckSeries(TestCase):
174
 
 
175
 
    def test_check_series(self):
176
 
        client = fake_juju_client()
177
 
        client.bootstrap()
178
 
        check_series(client)
179
 
 
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')
184
 
 
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')
191
 
 
192
 
    def test_check_series_exceptionl(self):
193
 
        client = fake_juju_client()
194
 
        client.bootstrap()
195
 
        with self.assertRaisesRegexp(
196
 
                AssertionError, 'Series is angsty, not xenial'):
197
 
            check_series(client, '0', 'xenial')