Example #1
0
    def test_create_cluster(self, mock_dv, mock_ds, mock_find_all,
                            mock_all_instances_ready, mock_load, mock_ip,
                            mock_password, mock_guest, mock_create_shard,
                            mock_reset_task):
        mock_find_all.return_value.all.return_value = [
            self.dbinst1, self.dbinst2, self.dbinst3, self.dbinst4
        ]
        mock_all_instances_ready.return_value = True
        member1 = BaseInstance(Mock(), self.dbinst1, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        member2 = BaseInstance(Mock(), self.dbinst2, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        query_router = BaseInstance(Mock(), self.dbinst3, Mock(),
                                    InstanceServiceStatus(ServiceStatuses.NEW))
        config_server = BaseInstance(
            Mock(), self.dbinst4, Mock(),
            InstanceServiceStatus(ServiceStatuses.NEW))
        mock_load.side_effect = [member1, member2, query_router, config_server]
        mock_ip.side_effect = ["10.0.0.5"]
        mock_create_shard.return_value = True

        self.clustertasks.create_cluster(Mock(), self.cluster_id)

        mock_guest().add_config_servers.assert_called_with(["10.0.0.5"])
        mock_guest().create_admin_user.assert_called_with("pwd")
        mock_create_shard.assert_called_with(query_router, [member1, member2])
        self.assertEqual(4, mock_guest().cluster_complete.call_count)
        mock_reset_task.assert_called_with()
Example #2
0
    def test_create_replica_set(self, mock_dv, mock_ds, mock_ip, mock_guest):
        member1 = BaseInstance(Mock(), self.dbinst1, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        member2 = BaseInstance(Mock(), self.dbinst2, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        members = [member1, member2]
        mock_ip.return_value = "10.0.0.2"
        mock_guest.return_value.add_members.return_value = Mock()

        ret_val = self.clustertasks._create_replica_set(members,
                                                        self.cluster_id,
                                                        shard_id="shard-1")
        mock_guest.return_value.add_members.assert_called_with(["10.0.0.2"])
        self.assertEqual(True, ret_val)
Example #3
0
    def test_grow_cluster_query_router(self, mock_dv, mock_ds, mock_load,
                                       mock_ip, mock_add_query_router):
        query_router = BaseInstance(Mock(), self.dbinst3, Mock(),
                                    InstanceServiceStatus(ServiceStatuses.NEW))
        config_server = BaseInstance(
            Mock(), self.dbinst4, Mock(),
            InstanceServiceStatus(ServiceStatuses.NEW))
        mock_load.side_effect = [query_router, config_server]
        mock_ip.return_value = '10.0.0.5'
        mock_add_query_router.return_value = True

        self._run_grow_cluster(new_instances_ids=[query_router.id])

        mock_add_query_router.assert_called_with([query_router], ['10.0.0.5'])
Example #4
0
    def test_init_replica_set(self, mock_dv, mock_ds, mock_ip, mock_guest):
        member1 = BaseInstance(Mock(), self.dbinst1, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        member2 = BaseInstance(Mock(), self.dbinst2, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        primary_member = member1
        other_members = [member2]
        mock_ip.side_effect = ["10.0.0.3"]
        mock_guest().prep_primary.return_value = Mock()
        mock_guest().add_members.return_value = Mock()

        ret_val = self.clustertasks._init_replica_set(primary_member,
                                                      other_members)
        mock_guest.return_value.add_members.assert_called_with(["10.0.0.3"])
        self.assertEqual(True, ret_val)
Example #5
0
    def test_grow_cluster_shard(self, mock_dv, mock_ds, mock_running_qr_id,
                                mock_load, mock_create_shard):
        mock_running_qr_id.return_value = '3'
        member1 = BaseInstance(Mock(), self.dbinst1, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        member2 = BaseInstance(Mock(), self.dbinst2, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        query_router = BaseInstance(Mock(), self.dbinst3, Mock(),
                                    InstanceServiceStatus(ServiceStatuses.NEW))
        mock_load.side_effect = [member1, member2, query_router]
        mock_create_shard.return_value = True

        self._run_grow_cluster(new_instances_ids=[member1.id, member2.id])

        mock_create_shard.assert_called_with(query_router, [member1, member2])
Example #6
0
    def test_create_replica_set_failure(self, mock_dv, mock_ds, mock_ip,
                                        mock_guest, mock_update):
        mock_ip.return_value = "10.0.0.2"
        member1 = BaseInstance(Mock(), self.dbinst1, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        member2 = BaseInstance(Mock(), self.dbinst2, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        members = [member1, member2]

        mock_guest.return_value.add_members = Mock(
            side_effect=Exception("Boom!"))
        ret_val = self.clustertasks._create_replica_set(members,
                                                        self.cluster_id,
                                                        shard_id="shard-1")
        mock_guest.return_value.add_members.assert_called_with(["10.0.0.2"])
        mock_update.assert_called_with(self.cluster_id, 'shard-1')
        self.assertEqual(False, ret_val)
Example #7
0
 def test_create_cluster_instance_not_ready(self, mock_dv, mock_ds,
                                            mock_find_all, mock_load,
                                            mock_ready, mock_reset_task):
     mock_find_all.return_value.all.return_value = [self.dbinst1]
     mock_load.return_value = BaseInstance(
         Mock(), self.dbinst1, Mock(),
         InstanceServiceStatus(ServiceStatuses.NEW))
     self.clustertasks.create_cluster(Mock(), self.cluster_id)
     mock_reset_task.assert_called_with()
Example #8
0
 def test_create_shard(self, mock_dv, mock_ds, mock_ip, mock_guest):
     member1 = BaseInstance(Mock(), self.dbinst1, Mock(),
                            InstanceServiceStatus(ServiceStatuses.NEW))
     member2 = BaseInstance(Mock(), self.dbinst2, Mock(),
                            InstanceServiceStatus(ServiceStatuses.NEW))
     members = [member1, member2]
     query_routers = [
         BaseInstance(Mock(), self.dbinst3, Mock(),
                      InstanceServiceStatus(ServiceStatuses.NEW))
     ]
     mock_ip.return_value = "10.0.0.2"
     mock_guest.return_value.add_shard.return_value = Mock()
     ret_val = self.clustertasks._create_shard(query_routers,
                                               "rs1",
                                               members,
                                               self.cluster_id,
                                               shard_id="shard-1")
     mock_guest.return_value.add_shard.assert_called_with("rs1", "10.0.0.2")
     self.assertEqual(True, ret_val)
Example #9
0
    def test_add_query_routers_failure(self, mock_logging, mock_dv, mock_ds,
                                       mock_password, mock_guest, mock_update):
        query_router = BaseInstance(Mock(), self.dbinst3, Mock(),
                                    InstanceServiceStatus(ServiceStatuses.NEW))
        mock_guest.side_effect = Exception("Boom!")

        ret_val = self.clustertasks._add_query_routers([query_router],
                                                       ['10.0.0.5'])
        mock_update.assert_called_with(self.cluster_id)
        self.assertEqual(False, ret_val)
Example #10
0
    def test_init_replica_set_failure(self, mock_logging, mock_dv, mock_ds,
                                      mock_ip, mock_guest, mock_update):
        member1 = BaseInstance(Mock(), self.dbinst1, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        member2 = BaseInstance(Mock(), self.dbinst2, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        primary_member = member1
        other_members = [member2]
        mock_ip.side_effect = ["10.0.0.3"]
        mock_guest().prep_primary.return_value = Mock()
        mock_guest().add_members.return_value = Mock()

        mock_guest.return_value.add_members = Mock(
            side_effect=Exception("Boom!"))

        ret_val = self.clustertasks._init_replica_set(primary_member,
                                                      other_members)

        mock_update.assert_called_with(self.cluster_id, shard_id='shard-1')
        self.assertEqual(False, ret_val)
Example #11
0
 def test_create_cluster(self, mock_dv, mock_ds, mock_find_all, mock_load,
                         mock_ready, mock_ip, mock_guest, mock_reset_task):
     mock_find_all.return_value.all.return_value = [self.dbinst1]
     mock_load.return_value = BaseInstance(
         Mock(), self.dbinst1, Mock(),
         InstanceServiceStatus(ServiceStatuses.NEW))
     mock_ip.return_value = "10.0.0.2"
     self.clustertasks.create_cluster(Mock(), self.cluster_id)
     mock_guest.return_value.install_cluster.assert_called_with(
         ['10.0.0.2'])
     mock_reset_task.assert_called()
     mock_guest.return_value.cluster_complete.assert_called()
Example #12
0
    def test_add_query_routers(self, mock_dv, mock_ds, mock_password,
                               mock_guest):
        query_router = BaseInstance(Mock(), self.dbinst3, Mock(),
                                    InstanceServiceStatus(ServiceStatuses.NEW))
        mock_password.return_value = 'pwd'

        ret_val = self.clustertasks._add_query_routers([query_router],
                                                       ['10.0.0.5'])
        mock_guest.assert_called_with(query_router)
        mock_guest().add_config_servers.assert_called_with(['10.0.0.5'])
        mock_guest().store_admin_password.assert_called_with('pwd')
        self.assertEqual(True, ret_val)
Example #13
0
    def test_add_query_routers(self, mock_dv, mock_ds, mock_guest):
        password = '******'
        query_router = BaseInstance(Mock(), self.dbinst3, Mock(),
                                    InstanceServiceStatus(ServiceStatuses.NEW))

        ret_val = self.clustertasks._add_query_routers([query_router],
                                                       ['10.0.0.5'],
                                                       admin_password=password)
        mock_guest.assert_called_with(query_router)
        mock_guest().add_config_servers.assert_called_with(['10.0.0.5'])
        mock_guest().store_admin_password.assert_called_with(password)
        self.assertTrue(ret_val)
    def test_create_shard_failure(self, mock_dv, mock_ds, mock_ip, mock_guest,
                                  mock_init_rs, mock_update):
        member1 = BaseInstance(Mock(), self.dbinst1, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        member2 = BaseInstance(Mock(), self.dbinst2, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        members = [member1, member2]
        mock_ip.side_effect = ["10.0.0.2"]

        query_router = [
            BaseInstance(Mock(), self.dbinst3, Mock(),
                         InstanceServiceStatus(ServiceStatuses.NEW))
        ]
        mock_guest().get_replica_set_name.return_value = 'testrs'
        mock_add_shard = Mock(side_effect=Exception("Boom!"))
        mock_guest().add_shard = mock_add_shard

        ret_val = self.clustertasks._create_shard(query_router, members)

        mock_init_rs.assert_called_with(member1, [member2])
        mock_update.assert_called_with(self.cluster_id, shard_id="shard-1")
        self.assertEqual(False, ret_val)
Example #15
0
 def test_create_shard_failure(self, mock_dv, mock_ds, mock_ip, mock_guest,
                               mock_update):
     member1 = BaseInstance(Mock(), self.dbinst1, Mock(),
                            InstanceServiceStatus(ServiceStatuses.NEW))
     member2 = BaseInstance(Mock(), self.dbinst2, Mock(),
                            InstanceServiceStatus(ServiceStatuses.NEW))
     members = [member1, member2]
     query_routers = [
         BaseInstance(Mock(), self.dbinst3, Mock(),
                      InstanceServiceStatus(ServiceStatuses.NEW))
     ]
     mock_ip.return_value = "10.0.0.2"
     mock_guest.return_value.add_shard = Mock(
         side_effect=Exception("Boom!"))
     ret_val = self.clustertasks._create_shard(query_routers,
                                               "rs1",
                                               members,
                                               self.cluster_id,
                                               shard_id="shard-1")
     mock_guest.return_value.add_shard.assert_called_with("rs1", "10.0.0.2")
     mock_update.assert_called_with(self.cluster_id, "shard-1")
     self.assertEqual(False, ret_val)
Example #16
0
    def test_create_shard(self, mock_dv, mock_ds, mock_ip, mock_guest,
                          mock_init_rs):
        member1 = BaseInstance(Mock(), self.dbinst1, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        member2 = BaseInstance(Mock(), self.dbinst2, Mock(),
                               InstanceServiceStatus(ServiceStatuses.NEW))
        members = [member1, member2]
        mock_ip.side_effect = ["10.0.0.2"]

        query_router = [
            BaseInstance(Mock(), self.dbinst3, Mock(),
                         InstanceServiceStatus(ServiceStatuses.NEW))
        ]
        mock_guest().get_replica_set_name.return_value = 'testrs'
        mock_add_shard = Mock()
        mock_guest().add_shard = mock_add_shard

        ret_val = self.clustertasks._create_shard(query_router, members)

        mock_init_rs.assert_called_with(member1, [member2])
        mock_add_shard.assert_called_with("testrs", "10.0.0.2")
        self.assertEqual(True, ret_val)
Example #17
0
 def test_create_cluster_fail(self, mock_logging, mock_dv, mock_ds,
                              mock_find_all, mock_load, mock_ready, mock_ip,
                              mock_reset_task, mock_update_status):
     mock_find_all.return_value.all.return_value = [self.dbinst1]
     mock_load.return_value = BaseInstance(
         Mock(), self.dbinst1, Mock(),
         InstanceServiceStatus(ServiceStatuses.NEW))
     mock_ip.return_value = "10.0.0.2"
     guest_client = Mock()
     guest_client.install_cluster = Mock(side_effect=GuestError("Error"))
     with patch.object(ClusterTasks, 'get_guest',
                       return_value=guest_client):
         self.clustertasks.create_cluster(Mock(), self.cluster_id)
         mock_update_status.assert_called_with('1232')
         mock_reset_task.assert_called_with()
Example #18
0
 def test_add_shard_cluster(self, mock_find_all, mock_all_instances_ready,
                            mock_load, mock_dv, mock_ds, mock_add_shard,
                            mock_guest, mock_reset_task):
     mock_find_all.return_value.all.return_value = [
         self.dbinst1, self.dbinst2, self.dbinst3, self.dbinst4
     ]
     mock_load.return_value = BaseInstance(
         Mock(), self.dbinst1, Mock(),
         InstanceServiceStatus(ServiceStatuses.NEW))
     mock_all_instances_ready.return_value = True
     mock_add_shard.return_value = True
     mock_guest.return_value.cluster_complete.return_value = Mock()
     self.clustertasks.add_shard_cluster(Mock(), self.cluster_id, "shard-1",
                                         "rs1")
     mock_guest.return_value.cluster_complete.assert_called_with()
     mock_reset_task.assert_called_with()