コード例 #1
0
ファイル: test.py プロジェクト: autopilotpattern/mysql
 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)
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
ファイル: test.py プロジェクト: autopilotpattern/mysql
 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)
コード例 #5
0
 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)
コード例 #6
0
ファイル: test.py プロジェクト: autopilotpattern/mysql
 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)
コード例 #7
0
    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)
コード例 #8
0
ファイル: test.py プロジェクト: autopilotpattern/mysql
    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)