def test_pre_start_no_reinitialization(self): """ Given a node that's restarted, pre_start should not try to re-initialize the node. """ os.mkdir(os.path.join(self.node.mysql.datadir, 'mysql')) self.node.consul.has_snapshot.return_value = True manage.pre_start(self.node) self.assertFalse(self.node.consul.has_snapshot.called)
def test_pre_start_first_node(self): """ The first node will not attempt to download a snapshot from Manta. """ self.node.consul.has_snapshot.return_value = False manage.pre_start(self.node) self.node.consul.has_snapshot.assert_called_once() self.node.mysql.initialize_db.assert_called_once() self.assertFalse(self.node.snaps.get_backup.called) self.assertFalse(self.node.mysql.restore_from_snapshot.called)
def test_pre_start_first_node(self): """ The first node will not attempt to download a snapshot from Manta. """ self.node.consul.has_snapshot.return_value = False manage.pre_start(self.node) self.node.consul.has_snapshot.assert_called_once() self.node.mysql.initialize_db.assert_called_once() self.assertFalse(self.node.manta.get_backup.called) self.assertFalse(self.node.mysql.restore_from_snapshot.called)
def test_pre_start_snapshot_complete(self): """ Given a successful snapshot by the first node, a new node will download the snapshot from Manta """ self.node.consul.has_snapshot.return_value = True manage.pre_start(self.node) self.node.consul.has_snapshot.assert_called_once() self.node.snaps.get_backup.assert_called_once() self.node.mysql.restore_from_snapshot.assert_called_once() self.assertFalse(self.node.mysql.initialize_db.called)
def test_pre_start_snapshot_complete(self): """ Given a successful snapshot by the first node, a new node will download the snapshot from Manta """ self.node.consul.has_snapshot.return_value = True manage.pre_start(self.node) self.node.consul.has_snapshot.assert_called_once() self.node.manta.get_backup.assert_called_once() self.node.mysql.restore_from_snapshot.assert_called_once() self.assertFalse(self.node.mysql.initialize_db.called)
def test_pre_start_snapshot_incomplete(self): """ Given a snapshot that has been marked successful but not completed, a new node will wait and not crash. """ self.node.consul = Consul(get_environ()) self.node.consul.client = mock.MagicMock() def kv_gets(*args, **kwargs): yield pyconsul.ConsulException() yield [0, {'Value': '{"id": "xxxx", "dt": "yyyyy"}'}] self.node.consul.client.kv.get.side_effect = kv_gets() manage.pre_start(self.node) self.node.snaps.get_backup.assert_called_once() self.assertEqual(self.node.consul.client.kv.get.call_count, 2) self.node.mysql.restore_from_snapshot.assert_called_once() self.assertFalse(self.node.mysql.initialize_db.called)
def test_pre_start_snapshot_incomplete(self): """ Given a snapshot that has been marked successful but not completed, a new node will wait and not crash. """ self.node.consul = Consul(get_environ()) self.node.consul.client = mock.MagicMock() def kv_gets(*args, **kwargs): yield pyconsul.ConsulException() yield [0, {'Value': '{"id": "xxxx", "dt": "yyyyy"}'}] self.node.consul.client.kv.get.side_effect = kv_gets() manage.pre_start(self.node) self.node.manta.get_backup.assert_called_once() self.assertEqual(self.node.consul.client.kv.get.call_count, 2) self.node.mysql.restore_from_snapshot.assert_called_once() self.assertFalse(self.node.mysql.initialize_db.called)