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

« back to all changes in this revision

Viewing changes to tests/test_assess_recovery.py

  • Committer: Aaron Bentley
  • Date: 2016-03-17 21:17:09 UTC
  • mfrom: (1321.1.1 assess_recovery_admin)
  • Revision ID: aaron.bentley@canonical.com-20160317211709-0asbnut8jm3no9en
assess_recovery: perform all state-server operations in admin model

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
from argparse import Namespace
 
2
from contextlib import contextmanager
2
3
from mock import (
3
4
    call,
4
5
    patch,
 
6
    Mock,
5
7
)
6
8
 
7
9
from assess_recovery import (
 
10
    assess_recovery,
8
11
    delete_controller_members,
9
12
    main,
10
13
    make_client_from_args,
20
23
    FakeHomeTestCase,
21
24
    TestCase,
22
25
)
 
26
from tests.test_jujupy import FakeJujuClient
23
27
 
24
28
 
25
29
class TestParseArgs(TestCase):
93
97
    patch.object(client, 'kill_controller', autospec=True).start()
94
98
    patch.object(client, 'is_jes_enabled', autospec=True,
95
99
                 return_value=True).start()
96
 
    patch.object(client, 'get_admin_client', autospec=True).start()
 
100
    patch.object(client, 'get_admin_client', autospec=True,
 
101
                 return_value=client).start()
97
102
    patch.object(client, 'iter_model_clients', autospec=True,
98
103
                 return_value=[client]).start()
99
104
    return client
100
105
 
101
106
 
 
107
class TestAssessRecovery(TestCase):
 
108
 
 
109
    @contextmanager
 
110
    def assess_recovery_cxt(self, client):
 
111
        client.bootstrap()
 
112
 
 
113
        def terminate(env, instance_ids):
 
114
            for instance_id in instance_ids:
 
115
                admin_model = client._backing_state.controller.admin_model
 
116
                admin_model.remove_state_server(instance_id)
 
117
 
 
118
        with patch('assess_recovery.terminate_instances',
 
119
                   side_effect=terminate):
 
120
            with patch('deploy_stack.wait_for_port', autospec=True):
 
121
                yield
 
122
 
 
123
    def test_backup(self):
 
124
        client = FakeJujuClient()
 
125
        bs_manager = Mock(client=client, known_hosts={})
 
126
        with self.assess_recovery_cxt(client):
 
127
            assess_recovery(bs_manager, 'backup', 'trusty')
 
128
 
 
129
    def test_ha(self):
 
130
        client = FakeJujuClient()
 
131
        bs_manager = Mock(client=client, known_hosts={})
 
132
        with self.assess_recovery_cxt(client):
 
133
            assess_recovery(bs_manager, 'ha', 'trusty')
 
134
 
 
135
    def test_ha_backup(self):
 
136
        client = FakeJujuClient()
 
137
        bs_manager = Mock(client=client, known_hosts={})
 
138
        with self.assess_recovery_cxt(client):
 
139
            assess_recovery(bs_manager, 'ha-backup', 'trusty')
 
140
 
 
141
    def test_admin_model_backup(self):
 
142
        client = FakeJujuClient(jes_enabled=True)
 
143
        bs_manager = Mock(client=client, known_hosts={})
 
144
        with self.assess_recovery_cxt(client):
 
145
            assess_recovery(bs_manager, 'backup', 'trusty')
 
146
 
 
147
    def test_admin_model_ha(self):
 
148
        client = FakeJujuClient(jes_enabled=True)
 
149
        bs_manager = Mock(client=client, known_hosts={})
 
150
        with self.assess_recovery_cxt(client):
 
151
            assess_recovery(bs_manager, 'ha', 'trusty')
 
152
 
 
153
    def test_admin_model_ha_backup(self):
 
154
        client = FakeJujuClient(jes_enabled=True)
 
155
        bs_manager = Mock(client=client, known_hosts={})
 
156
        with self.assess_recovery_cxt(client):
 
157
            assess_recovery(bs_manager, 'ha-backup', 'trusty')
 
158
 
 
159
 
102
160
@patch('assess_recovery.BootstrapManager.dump_all_logs', autospec=True)
103
161
@patch('assess_recovery.parse_new_state_server_from_error', autospec=True,
104
162
       return_value='new_host')