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())