def test_buildMirrors_noMirrors(self): buildMirrorSegs_obj = GpMirrorListToBuild(toBuild=[], pool=None, quiet=True, parallelDegree=0, logger=self.mock_logger) self.assertTrue(buildMirrorSegs_obj.buildMirrors(None, None, None)) self.assertTrue( buildMirrorSegs_obj.buildMirrors(self.action, None, None)) self.assertEqual( [call('No segments to None'), call('No segments to recover')], self.mock_logger.info.call_args_list)
def test_buildMirrors_failed_seg_in_gparray_fail(self): tests = [{ "name": "failed_seg_exists_in_gparray1", "failed": self.create_primary(status='d'), "failover": self.create_primary(status='d'), "live": self.create_mirror(), "forceFull": True, "forceoverwrite": False }, { "name": "failed_seg_exists_in_gparray2", "failed": self.create_primary(dbid='3', status='d'), "failover": self.create_primary(dbid='3', status='d'), "live": self.create_mirror(dbid='4'), "forceFull": False, "forceoverwrite": False }, { "name": "failed_seg_exists_in_gparray2", "failed": self.create_primary(dbid='3', status='d'), "failover": self.create_primary(dbid='3', status='d'), "live": self.create_mirror(dbid='4'), "forceFull": False, "forceoverwrite": True }] for test in tests: mirror_to_build = GpMirrorToBuild(test["failed"], test["live"], test["failover"], test["forceFull"]) buildMirrorSegs_obj = GpMirrorListToBuild( toBuild=[ mirror_to_build, ], pool=None, quiet=True, parallelDegree=0, logger=self.mock_logger, forceoverwrite=test['forceoverwrite']) self._setup_mocks(buildMirrorSegs_obj) local_gp_array = GpArray([self.coordinator, test["failed"]]) expected_error = "failed segment should not be in the new configuration if failing over to" with self.subTest(msg=test["name"]): with self.assertRaisesRegex(Exception, expected_error): buildMirrorSegs_obj.buildMirrors(self.action, self.gpEnv, local_gp_array)
def _run_buildMirrors(self, mirrors_to_build): buildMirrorSegs_obj = GpMirrorListToBuild(toBuild=mirrors_to_build, pool=None, quiet=True, parallelDegree=0, logger=self.mock_logger) self._setup_mocks(buildMirrorSegs_obj) self.assertTrue( buildMirrorSegs_obj.buildMirrors(self.action, self.gpEnv, self.gpArray)) return buildMirrorSegs_obj
def test_buildMirrors_forceoverwrite_true(self): failed = self.create_primary(status='d') live = self.create_mirror() failover = self.create_primary(host='sdw3') buildMirrorSegs_obj = GpMirrorListToBuild( toBuild=[GpMirrorToBuild(failed, live, failover, False)], pool=None, quiet=True, parallelDegree=0, logger=self.mock_logger, forceoverwrite=True) self._setup_mocks(buildMirrorSegs_obj) self.assertTrue( buildMirrorSegs_obj.buildMirrors(self.action, self.gpEnv, self.gpArray)) self._common_asserts_with_stop_and_logger( buildMirrorSegs_obj, "Ensuring 1 failed segment(s) are stopped", [failed], [failover], [], {1: True}, 0) self.assertEqual('n', live.getSegmentMode()) self.assertEqual('d', failover.getSegmentStatus()) self.assertEqual('n', failover.getSegmentMode())