def test_clean_up_failed_segments_no_segs_to_cleanup(self):
        failed2 = self.create_primary(dbid='3', status='d')
        failover2 = self.create_primary(dbid='3', status='d')
        live2 = self.create_mirror(dbid='4')

        failed4 = self.create_primary(dbid='5')
        live4 = self.create_mirror(dbid='7')

        not_inplace_full = GpMirrorToBuild(failed2, live2, failover2, True)
        inplace_not_full = GpMirrorToBuild(failed4, live4, None, False)

        buildMirrorSegs_obj = GpMirrorListToBuild(
            toBuild=[not_inplace_full, inplace_not_full],
            pool=None,
            quiet=True,
            parallelDegree=0,
            logger=self.mock_logger,
            forceoverwrite=True)
        buildMirrorSegs_obj._GpMirrorListToBuild__runWaitAndCheckWorkerPoolForErrorsAndClear = Mock(
        )

        buildMirrorSegs_obj._clean_up_failed_segments()
        self.assertEqual(0, self.mock_get_segments_by_hostname.call_count)
        self.assertEqual(0, self.mock_logger.info.call_count)
    def test_clean_up_failed_segments(self):
        failed1 = self.create_primary(status='d')
        live1 = self.create_mirror()

        failed2 = self.create_primary(dbid='3', status='d')
        failover2 = self.create_primary(dbid='3', status='d')
        live2 = self.create_mirror(dbid='4')

        failed3 = self.create_primary(dbid='5')
        live3 = self.create_mirror(dbid='6')

        failed4 = self.create_primary(dbid='5')
        live4 = self.create_mirror(dbid='7')

        inplace_full1 = GpMirrorToBuild(failed1, live1, None, True)
        not_inplace_full = GpMirrorToBuild(failed2, live2, failover2, True)
        inplace_full2 = GpMirrorToBuild(failed3, live3, None, True)
        inplace_not_full = GpMirrorToBuild(failed4, live4, None, False)

        buildMirrorSegs_obj = GpMirrorListToBuild(toBuild=[
            inplace_full1, not_inplace_full, inplace_full2, inplace_not_full
        ],
                                                  pool=None,
                                                  quiet=True,
                                                  parallelDegree=0,
                                                  logger=self.mock_logger,
                                                  forceoverwrite=True)
        buildMirrorSegs_obj._GpMirrorListToBuild__runWaitAndCheckWorkerPoolForErrorsAndClear = Mock(
        )

        buildMirrorSegs_obj._clean_up_failed_segments()

        self.mock_get_segments_by_hostname.assert_called_once_with(
            [failed1, failed3])
        self.mock_logger.info.called_once_with(
            '"Cleaning files from 2 segment(s)')