~sseman/juju-ci-tools/model-change-watcher-py3-2

« back to all changes in this revision

Viewing changes to tests/test_assess_recovery.py

  • Committer: Aaron Bentley
  • Date: 2016-12-05 16:44:59 UTC
  • mfrom: (1787.1.2 ha-backup-logs)
  • Revision ID: aaron.bentley@canonical.com-20161205164459-2bxkh180au7rj5sg
Ensure has_controller is True at appropriate times.

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
    parse_args,
20
20
    restore_missing_state_server,
21
21
    )
 
22
from deploy_stack import BootstrapManager
22
23
from fakejuju import fake_juju_client
23
24
from jujupy import (
24
25
    Machine,
229
230
        self.assertIsFalse(bs_manager.has_controller)
230
231
 
231
232
 
 
233
def make_bs_manager(client):
 
234
    return BootstrapManager('foo', client, client, None, [], None, None, None,
 
235
                            None, None, None, None, None)
 
236
 
 
237
 
232
238
@patch('assess_recovery.wait_for_state_server_to_shutdown', autospec=True)
233
239
@patch('assess_recovery.terminate_instances', autospec=True)
234
240
class TestDeleteControllerMembers(FakeHomeTestCase):
331
337
            "INFO Deleted ['3']\n")
332
338
        self.assertEqual({'1': 'a', '2': 'b'}, bs_manager.known_hosts)
333
339
 
 
340
    def test_leader_only_has_controller(self, ti_mock, wsss_mock):
 
341
        client = fake_juju_client()
 
342
        bs_manager = make_bs_manager(client)
 
343
        client.bootstrap()
 
344
        bs_manager.has_controller = True
 
345
        delete_controller_members(
 
346
            bs_manager, client.get_controller_client(), leader_only=True)
 
347
        self.assertIs(True, bs_manager.has_controller)
 
348
 
 
349
    def test_no_leader_only_has_controller(self, ti_mock, wsss_mock):
 
350
        client = fake_juju_client()
 
351
        bs_manager = make_bs_manager(client)
 
352
        client.bootstrap()
 
353
        bs_manager.has_controller = True
 
354
        delete_controller_members(
 
355
            bs_manager, client.get_controller_client(), leader_only=False)
 
356
        self.assertIs(False, bs_manager.has_controller)
 
357
 
334
358
 
335
359
class TestRestoreMissingStateServer(FakeHomeTestCase):
336
360
 
342
366
                   autospec=True, return_value='Token: Two'):
343
367
            with patch('assess_recovery.show_controller', autospec=True):
344
368
                restore_missing_state_server(
345
 
                    client, controller_client, 'backup_file',
 
369
                    make_bs_manager(client), controller_client, 'backup_file',
346
370
                    check_controller=True)
347
371
        controller_client.restore_backup.assert_called_once_with('backup_file')
348
372
        controller_client.wait_for_started.assert_called_once_with(600)
359
383
                   autospec=True, return_value='Token: Two'):
360
384
            with patch('assess_recovery.show_controller', autospec=True):
361
385
                restore_missing_state_server(
362
 
                    client, controller_client, 'backup_file',
 
386
                    make_bs_manager(client), controller_client, 'backup_file',
363
387
                    check_controller=False)
364
388
        self.assertEqual(0, controller_client.wait_for_started.call_count)
365
389
 
 
390
    def test_set_has_controller(self):
 
391
        client = fake_juju_client()
 
392
        client.bootstrap()
 
393
        client.deploy('dummy-sink')
 
394
        controller_client = client.get_controller_client()
 
395
        bs_manager = make_bs_manager(client)
 
396
        with patch('assess_recovery.get_token_from_status',
 
397
                   return_value='Two'):
 
398
            restore_missing_state_server(bs_manager, controller_client,
 
399
                                         'backup_file')
 
400
        self.assertIs(True, bs_manager.has_controller)
 
401
 
366
402
 
367
403
class TestCheckToken(TestCase):
368
404