~chris.macnaughton/mojo/py3001

« back to all changes in this revision

Viewing changes to mojo/tests/test_juju2.py

  • Committer: Tom Haddon
  • Date: 2017-12-08 12:17:18 UTC
  • mfrom: (454.1.1 mojo)
  • Revision ID: tom.haddon@canonical.com-20171208121718-izugr3uenf5o16n9
[hloeung,r=mthaddon] Fixed test failures from introduction of juju status caching in r453

Show diffs side-by-side

added added

removed removed

Lines of Context:
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()
74
80
 
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)
82
92
 
83
93
        # error states
 
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)
99
117
 
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())
104
124
 
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)
224
244
 
225
245
 
226
246
class Juju2CheckOutputWithTimeoutTestException(Exception):