37
37
def test_machine_and_container_ids_list(self, status_mock):
38
38
"""Test getting all machine and container IDs"""
39
39
# First test on a status that doesn't have containers
40
with mock.patch('mojo.juju.status.major_version', new=2):
41
self.status = mojo.juju.status.Juju2Status()
40
42
status_mock.return_value = self._testdata_from_file('juju2-idle.yaml')
41
43
self.assertEqual(self.status.machine_ids_list(), ['2', '3'])
42
44
self.assertEqual(self.status.machine_and_container_ids_list(), ['2', '3'])
43
45
# And now test on a status that does have containers
46
with mock.patch('mojo.juju.status.major_version', new=2):
47
self.status = mojo.juju.status.Juju2Status()
44
48
status_mock.return_value = self._testdata_from_file('juju2-openstack-with-containers.yaml')
45
49
self.assertEqual(self.status.machine_ids_list(), ['0', '1', '2', '3', '4', '5', '6', '7', '8'])
46
50
self.assertEqual(self.status.machine_and_container_ids_list(),
69
73
@mock.patch('time.sleep')
70
74
def test_check_and_wait(self, _sleep, _check_output, status_mock):
71
75
# Confirm we don't raise a JujuStatusError
76
with mock.patch('mojo.juju.status.major_version', new=2):
77
self.status = mojo.juju.status.Juju2Status()
72
78
status_mock.return_value = self._testdata_from_file('juju2-idle.yaml')
73
79
self.status.check_and_wait()
75
81
# Wait for steady state timeouts
82
with mock.patch('mojo.juju.status.major_version', new=2):
83
self.status = mojo.juju.status.Juju2Status()
76
84
status_mock.return_value = self._testdata_from_file('juju2-busy.yaml')
77
85
with self.assertRaises(mojo.juju.JujuWaitException):
78
86
self.status.check_and_wait(wait_for_steady=True, timeout=1)
87
with mock.patch('mojo.juju.status.major_version', new=2):
88
self.status = mojo.juju.status.Juju2Status()
79
89
status_mock.return_value = self._testdata_from_file('juju2-subordinate-busy.yaml')
80
90
with self.assertRaises(mojo.juju.JujuWaitException):
81
91
self.status.check_and_wait(wait_for_steady=True, timeout=1)
94
with mock.patch('mojo.juju.status.major_version', new=2):
95
self.status = mojo.juju.status.Juju2Status()
84
96
status_mock.return_value = self._testdata_from_file('juju2-fail.yaml')
85
97
with self.assertRaises(mojo.juju.JujuStatusError):
86
98
self.status.check_and_wait()
99
with mock.patch('mojo.juju.status.major_version', new=2):
100
self.status = mojo.juju.status.Juju2Status()
87
101
status_mock.return_value = self._testdata_from_file('juju2-subordinate-fail.yaml')
88
102
with self.assertRaises(mojo.juju.JujuStatusError):
89
103
self.status.check_and_wait()
92
106
# state if we pass the right additional_error_states
93
107
with mock.patch('mojo.juju.status.major_version', new=2):
94
108
self.status = mojo.juju.status.Juju2Status(additional_ready_states=['maintenance', 'executing'])
109
with mock.patch('mojo.juju.status.major_version', new=2):
110
self.status = mojo.juju.status.Juju2Status()
95
111
self.status._raw_status = self._testdata_from_file('juju2-busy.yaml')
112
with mock.patch('mojo.juju.status.major_version', new=2):
113
self.status = mojo.juju.status.Juju2Status()
96
114
status_mock.return_value = self._testdata_from_file('juju2-busy.yaml')
97
115
with mock.patch('mojo.juju.status.wait', new=lambda max_wait: None):
98
116
self.status.check_and_wait(wait_for_steady=True, timeout=1)
100
118
@mock.patch('subprocess.check_output')
101
119
def test_controller_version(self, mock_check_output):
120
with mock.patch('mojo.juju.status.major_version', new=2):
121
self.status = mojo.juju.status.Juju2Status()
102
122
mock_check_output.return_value = self._testdata_from_file('juju2-controllers.yaml')
103
123
self.assertEqual('2.0-rc1', self.status.controller_version())
220
240
'since': '16 Sep 2016 15:23:55Z'},
221
241
'relations': {'juju-info': ['apache2', 'prometheus']},
222
242
'subordinate-to': ['apache2', 'prometheus']}}}
223
self.assertEqual(self.status.yaml_status(), expected)
243
self.assertEqual(self.status.yaml_status(force_update=True), expected)
226
246
class Juju2CheckOutputWithTimeoutTestException(Exception):