Esempio n. 1
0
 def test_reload_config_use_local_context(self):
     self.mock_socket.return_value = 'mdw'
     sys.argv = ["gpstop", "-u"]
     parser = self.subject.GpStop.createParser()
     options, args = parser.parse_args()
     self.mock_gparray.return_value = GpArray([self.master, self.primary0, self.primary1])
     gpstop = self.subject.GpStop.createProgram(options, args)
     gpstop.gparray = GpArray([self.master, self.primary0, self.primary1])
     gpstop._sighup_cluster()
     self.assertEquals(3, self.mock_workerpool.addCommand.call_count)
     self.assertEquals(None, self.mock_workerpool.addCommand.call_args_list[0][0][0].remoteHost)
     self.assertEquals("sdw1", self.mock_workerpool.addCommand.call_args_list[1][0][0].remoteHost)
     self.assertEquals("sdw1", self.mock_workerpool.addCommand.call_args_list[2][0][0].remoteHost)
Esempio n. 2
0
    def test_host_option_segment_down_is_skipped_succeeds(self):
        sys.argv = ["gpstop", "-a", "--host", "sdw1"]
        parser = self.subject.GpStop.createParser()
        options, args = parser.parse_args()

        self.primary0 = Segment.initFromString(
            "2|0|m|p|s|d|sdw1|sdw1|40000|/data/primary0")
        self.mirror0 = Segment.initFromString(
            "6|0|p|m|c|u|sdw2|sdw2|50000|/data/mirror0")
        self.mock_gparray.return_value = GpArray([
            self.master, self.primary0, self.primary1, self.primary2,
            self.primary3, self.mirror0, self.mirror1, self.mirror2,
            self.mirror3
        ])

        gpstop = self.subject.GpStop.createProgram(options, args)
        gpstop.run()
        log_messages = self.get_info_messages()

        self.assertEquals(2, self.mock_GpSegStopCmdInit.call_count)
        self.assertIn(
            "Targeting dbid %s for shutdown" % [
                self.primary1.getSegmentDbId(),
                self.mirror2.getSegmentDbId(),
                self.mirror3.getSegmentDbId()
            ], log_messages)
        self.assertIn("Successfully shutdown 3 of 8 segment instances ",
                      log_messages)
Esempio n. 3
0
 def _setup_gparray(self, hostlist, interface_list, primary_list, primary_portbase, mirror_type,
                    mirror_list, mirror_portbase, dir_prefix):
     master = Segment(content = -1,
                 preferred_role = 'p',
                 dbid = 0,
                 role = 'p',
                 mode = 's',
                 status = 'u',
                 hostname = 'masterhost',
                 address = 'masterhost-1',
                 port = 5432,
                 datadir = '/masterdir')
     allrows = []
     allrows.append(master)                 
     rows =  createSegmentRows(hostlist, interface_list, primary_list, primary_portbase, mirror_type,
                               mirror_list, mirror_portbase, dir_prefix)
     
     
     for row in rows:
         newrow = Segment(content = row.content,
                       preferred_role = 'p' if convert_bool(row.isprimary) else 'm',
                       dbid = row.dbid,
                       role = 'p' if convert_bool(row.isprimary) else 'm',
                       mode = 's',
                       status = 'u',
                       hostname = row.host,
                       address = row.address,
                       port = row.port,
                       datadir = row.fulldir)
         allrows.append(newrow)
     
     gparray = GpArray(allrows)
     return gparray
Esempio n. 4
0
    def test_prepare_segment_start_returns_up_and_down_segments(self):
        # Boilerplate: create a gpstart object
        parser = self.subject.GpStart.createParser()
        options, args = parser.parse_args([])
        gpstart = self.subject.GpStart.createProgram(options, args)

        # Up segments
        master = Segment.initFromString(
            "1|-1|p|p|n|u|mdw|mdw|5432|/data/master")
        primary1 = Segment.initFromString(
            "3|1|p|p|n|u|sdw2|sdw2|40001|/data/primary1")
        mirror0 = Segment.initFromString(
            "4|0|m|m|n|u|sdw2|sdw2|50000|/data/mirror0")

        # Down segments
        primary0 = Segment.initFromString(
            "2|0|p|p|n|d|sdw1|sdw1|40000|/data/primary0")
        mirror1 = Segment.initFromString(
            "5|1|m|m|n|d|sdw1|sdw1|50001|/data/mirror1")
        standby = Segment.initFromString(
            "6|-1|m|m|n|d|sdw3|sdw3|5433|/data/standby")

        gpstart.gparray = GpArray(
            [master, primary0, primary1, mirror0, mirror1, standby])

        up, down = gpstart._prepare_segment_start()

        # The master and standby should not be accounted for in these lists.
        self.assertCountEqual(up, [primary1, mirror0])
        self.assertCountEqual(down, [primary0, mirror1])
Esempio n. 5
0
    def createGpArrayWith4Primary4Mirrors(self):
        self.master = Segment.initFromString(
            "1|-1|p|p|s|u|mdw|mdw|5432|/data/master")

        self.primary0 = Segment.initFromString(
            "2|0|p|p|s|u|sdw1|sdw1|40000|/data/primary0")
        self.primary1 = Segment.initFromString(
            "3|1|p|p|s|u|sdw1|sdw1|40001|/data/primary1")
        self.primary2 = Segment.initFromString(
            "4|2|p|p|s|u|sdw2|sdw2|40002|/data/primary2")
        self.primary3 = Segment.initFromString(
            "5|3|p|p|s|u|sdw2|sdw2|40003|/data/primary3")

        self.mirror0 = Segment.initFromString(
            "6|0|m|m|s|u|sdw2|sdw2|50000|/data/mirror0")
        self.mirror1 = Segment.initFromString(
            "7|1|m|m|s|u|sdw2|sdw2|50001|/data/mirror1")
        self.mirror2 = Segment.initFromString(
            "8|2|m|m|s|u|sdw1|sdw1|50002|/data/mirror2")
        self.mirror3 = Segment.initFromString(
            "9|3|m|m|s|u|sdw1|sdw1|50003|/data/mirror3")
        return GpArray([
            self.master, self.primary0, self.primary1, self.primary2,
            self.primary3, self.mirror0, self.mirror1, self.mirror2,
            self.mirror3
        ])
    def test_checkForPortAndDirectoryConflicts__given_the_same_host_checks_ports_differ(self):
        self.coordinator.hostname = "samehost"
        self.primary.hostname = "samehost"

        self.coordinator.port = 1111
        self.primary.port = 1111

        gpArray = GpArray([self.coordinator, self.primary])

        with self.assertRaisesRegex(Exception, r"Segment dbid's 2 and 1 on host samehost cannot have the same port 1111"):
            self.buildMirrorSegs.checkForPortAndDirectoryConflicts(gpArray)
Esempio n. 7
0
def setup_fake_gparray():
    master = Segment.initFromString("1|-1|p|p|s|u|mdw|mdw|5432|/data/master")
    primary0 = Segment.initFromString(
        "2|0|p|p|s|u|sdw1|sdw1|40000|/data/primary0")
    primary1 = Segment.initFromString(
        "3|1|p|p|s|u|sdw2|sdw2|40001|/data/primary1")
    mirror0 = Segment.initFromString(
        "4|0|m|m|s|u|sdw2|sdw2|50000|/data/mirror0")
    mirror1 = Segment.initFromString(
        "5|1|m|m|s|u|sdw1|sdw1|50001|/data/mirror1")
    return GpArray([master, primary0, primary1, mirror0, mirror1])
Esempio n. 8
0
    def test_checkForPortAndDirectoryConflicts__given_the_same_host_checks_data_directories_differ(self):
        self.master.hostname = "samehost"
        self.primary.hostname = "samehost"

        self.master.datadir = "/data"
        self.primary.datadir = "/data"

        gpArray = GpArray([self.master, self.primary])

        with self.assertRaisesRegex(Exception, r"Segment dbid's 2 and 1 on host samehost cannot have the same data directory '/data'"):
            self.buildMirrorSegs.checkForPortAndDirectoryConflicts(gpArray)
Esempio n. 9
0
 def _create_gparray_with_2_primary_2_mirrors(self):
     master = Segment.initFromString(
         "1|-1|p|p|s|u|mdw|mdw|5432|/data/master")
     self.primary0 = Segment.initFromString(
         "2|0|p|p|s|u|sdw1|sdw1|40000|/data/primary0")
     primary1 = Segment.initFromString(
         "3|1|p|p|s|u|sdw2|sdw2|40001|/data/primary1")
     self.mirror0 = Segment.initFromString(
         "4|0|m|m|s|u|sdw2|sdw2|50000|/data/mirror0")
     mirror1 = Segment.initFromString(
         "5|1|m|m|s|u|sdw1|sdw1|50001|/data/mirror1")
     return GpArray([master, self.primary0, primary1, self.mirror0, mirror1])
Esempio n. 10
0
 def _create_gparray_with_2_primary_2_mirrors():
     coordinator = Segment.initFromString(
         "1|-1|p|p|s|u|cdw|cdw|5432|/data/coordinator")
     primary0 = Segment.initFromString(
         "2|0|p|p|s|u|sdw1|sdw1|40000|/data/primary0")
     primary1 = Segment.initFromString(
         "3|1|p|p|s|u|sdw2|sdw2|40001|/data/primary1")
     mirror0 = Segment.initFromString(
         "4|0|m|m|s|u|sdw2|sdw2|50000|/data/mirror0")
     mirror1 = Segment.initFromString(
         "5|1|m|m|s|u|sdw1|sdw1|50001|/data/mirror1")
     return GpArray([coordinator, primary0, primary1, mirror0, mirror1])
Esempio n. 11
0
    def _createGpArrayWith2Primary2Mirrors(self):
        self.master = Segment.initFromString(
                "1|-1|p|p|s|u|mdw|mdw|5432|/data/master")
        self.primary0 = Segment.initFromString(
            "2|0|p|p|s|u|sdw1|sdw1|40000|/data/primary0")
        self.primary1 = Segment.initFromString(
            "3|1|p|p|s|u|sdw2|sdw2|40001|/data/primary1")
        mirror0 = Segment.initFromString(
            "4|0|m|m|s|u|sdw2|sdw2|50000|/data/mirror0")
        mirror1 = Segment.initFromString(
            "5|1|m|m|s|u|sdw1|sdw1|50001|/data/mirror1")

        return GpArray([self.master, self.primary0, self.primary1, mirror0, mirror1])
    def setUp(self):
        self.maxDiff = None
        self.configProvider = GpConfigurationProviderUsingGpdbCatalog()
        self.conn = Mock()

        self.coordinator = Segment.initFromString("1|-1|p|p|s|u|cdw|cdw|5432|/data/coordinator")
        self.primary0 = Segment.initFromString("2|0|p|p|s|u|sdw1|sdw1|40000|/data/primary0")
        self.primary1 = Segment.initFromString("3|1|p|p|s|u|sdw2|sdw2|40001|/data/primary1")
        self.mirror0 = Segment.initFromString("4|0|m|m|s|u|sdw2|sdw2|50000|/data/mirror0")
        self.acting_mirror0 = Segment.initFromString("6|0|m|p|d|n|sdw2|sdw2|50002|/data/acting_mirror0")
        self.mirror1 = Segment.initFromString("5|1|m|m|s|u|sdw1|sdw1|50001|/data/mirror1")
        segments = [self.coordinator,self.primary0,self.primary1,self.mirror0,self.mirror1]
        self.gpArray = GpArray(segments)
        self.gpArray.setSegmentsAsLoadedFromDb(segments)
Esempio n. 13
0
 def _createGpArrayWith2Primary2Mirrors(self):
     self.coordinator = Segment.initFromString(
         "1|-1|p|p|s|u|cdw|cdw|5432|/data/coordinator")
     self.primary0 = Segment.initFromString(
         "2|0|p|p|s|u|sdw1|sdw1|40000|/data/primary0")
     self.primary1 = Segment.initFromString(
         "3|1|p|p|s|u|sdw2|sdw2|40001|/data/primary1")
     self.mirror0 = Segment.initFromString(
         "4|0|m|m|s|u|sdw2|sdw2|50000|/data/mirror0")
     self.mirror1 = Segment.initFromString(
         "5|1|m|m|s|u|sdw1|sdw1|50001|/data/mirror1")
     self.standby = Segment.initFromString(
         "6|-1|m|m|s|u|sdw3|sdw3|5433|/data/standby")
     return GpArray([self.coordinator, self.primary0, self.primary1, self.mirror0, self.mirror1])
Esempio n. 14
0
 def _setup_gparray():
     coordinator = Segment.initFromString(
         "1|-1|p|p|s|u|cdw|cdw|5432|/data/coordinator")
     standby = Segment.initFromString(
         "6|-1|m|m|s|u|sdw3|sdw3|5433|/data/standby")
     primary0 = Segment.initFromString(
         "2|0|p|p|s|u|sdw1|sdw1|40000|/data/primary0")
     primary1 = Segment.initFromString(
         "3|1|p|p|s|u|sdw2|sdw2|40001|/data/primary1")
     mirror0 = Segment.initFromString(
         "4|0|m|m|s|u|sdw2|sdw2|50000|/data/mirror0")
     mirror1 = Segment.initFromString(
         "5|1|m|m|s|u|sdw1|sdw1|50001|/data/mirror1")
     return GpArray(
         [coordinator, standby, primary0, primary1, mirror0, mirror1])
    def setUp(self):
        self.maxDiff = None
        self.coordinator = Segment(content=-1,
                                   preferred_role='p',
                                   dbid=1,
                                   role='p',
                                   mode='s',
                                   status='u',
                                   hostname='coordinatorhost',
                                   address='coordinatorhost-1',
                                   port=1111,
                                   datadir='/coordinatordir')

        self.primary = Segment(content=0,
                               preferred_role='p',
                               dbid=20,
                               role='p',
                               mode='s',
                               status='u',
                               hostname='primaryhost',
                               address='primaryhost-1',
                               port=3333,
                               datadir='/primary')
        self.mirror = Segment(content=0,
                              preferred_role='m',
                              dbid=30,
                              role='m',
                              mode='s',
                              status='d',
                              hostname='primaryhost',
                              address='primaryhost-1',
                              port=3333,
                              datadir='/primary')

        gplog.get_unittest_logger()
        self.apply_patches([
            patch(
                'gppylib.operations.buildMirrorSegments.GpArray.getSegmentsByHostName'
            )
        ])
        self.mock_get_segments_by_hostname = self.get_mock_from_apply_patch(
            'getSegmentsByHostName')

        self.action = 'recover'
        self.gpEnv = Mock()
        self.gpArray = GpArray([self.coordinator, self.primary, self.mirror])
        self.mock_logger = Mock(
            spec=['log', 'warn', 'info', 'debug', 'error', 'warning', 'fatal'])
Esempio n. 16
0
    def test_stop_standby_option(self, mock):
        self.standby = Segment.initFromString(
            "10|-1|m|m|s|u|smdw|smdw|5432|/data/standby_master")
        self.gparray = GpArray([self.master, self.primary0, self.primary1, self.primary2, self.primary3, self.mirror0, self.mirror1, self.mirror2, self.mirror3, self.standby])
        self.mock_gparray.return_value = self.gparray

        sys.argv = ["gpstop", "-a", "-y"]
        parser = self.subject.GpStop.createParser()
        options, args = parser.parse_args()

        gpstop = self.subject.GpStop.createProgram(options, args)
        gpstop.run()
        assert not mock.called
        log_message = self.get_info_messages()
        self.assertTrue("Stopping master standby host smdw mode=fast" not in log_message)
        self.assertTrue("No standby master host configured" not in log_message)
Esempio n. 17
0
    def test_standby_activated_raises_StandbyUnreachable_exception_when_fetching_standby_tli_fails(self, mock_fetch_tli):
        def mock_fetch_tli_func(self, data_dir, remote_host=None):
            if "standby" in data_dir:
                raise ExecutionError("oops", None)
            return 10

        mock_fetch_tli.side_effect = mock_fetch_tli_func

        gpstart = self.setup_gpstart()
        gpstart.coordinator_datadir = "/data/coordinator"

        coordinator = Segment.initFromString("1|-1|p|p|n|u|cdw|cdw|5432|/data/coordinator")
        standby = Segment.initFromString("6|-1|m|m|n|d|sdw3|sdw3|5433|/data/standby")
        gpstart.gparray = GpArray([coordinator, standby])

        with self.assertRaises(gpstart.StandbyUnreachable):
            gpstart._standby_activated()
Esempio n. 18
0
def setup_fake_gparray():
    master = GpDB.initFromString(
        "1|-1|p|p|s|u|mdw|mdw|5432|None|/data/master||/data/master/base/10899,/data/master/base/1,/data/master/base/10898,/data/master/base/25780,/data/master/base/34782"
    )
    primary0 = GpDB.initFromString(
        "2|0|p|p|s|u|sdw1|sdw1|40000|41000|/data/primary0||/data/primary0/base/10899,/data/primary0/base/1,/data/primary0/base/10898,/data/primary0/base/25780,/data/primary0/base/34782"
    )
    primary1 = GpDB.initFromString(
        "3|1|p|p|s|u|sdw2|sdw2|40001|41001|/data/primary1||/data/primary1/base/10899,/data/primary1/base/1,/data/primary1/base/10898,/data/primary1/base/25780,/data/primary1/base/34782"
    )
    mirror0 = GpDB.initFromString(
        "4|0|m|m|s|u|sdw2|sdw2|50000|51000|/data/mirror0||/data/mirror0/base/10899,/data/mirror0/base/1,/data/mirror0/base/10898,/data/mirror0/base/25780,/data/mirror0/base/34782"
    )
    mirror1 = GpDB.initFromString(
        "5|1|m|m|s|u|sdw1|sdw1|50001|51001|/data/mirror1||/data/mirror1/base/10899,/data/mirror1/base/1,/data/mirror1/base/10898,/data/mirror1/base/25780,/data/mirror1/base/34782"
    )
    return GpArray([master, primary0, primary1, mirror0, mirror1])
Esempio n. 19
0
    def test_standby_activated_returns_true_when_standby_tli_is_before_primary_tli(self, mock_fetch_tli):
        def mock_fetch_tli_func(self, data_dir, remote_host=None):
            if "coordinator" in data_dir:
                return 1
            if "standby" in data_dir:
                return 2
            return 3

        mock_fetch_tli.side_effect = mock_fetch_tli_func

        gpstart = self.setup_gpstart()
        gpstart.coordinator_datadir = "/data/coordinator"

        coordinator = Segment.initFromString("1|-1|p|p|n|u|cdw|cdw|5432|/data/coordinator")
        standby = Segment.initFromString("6|-1|m|m|n|d|sdw3|sdw3|5433|/data/standby")
        gpstart.gparray = GpArray([coordinator, standby])

        self.assertTrue(gpstart._standby_activated())
Esempio n. 20
0
    def test_host_option_if_master_running_on_the_host_fails(self):
        sys.argv = ["gpstop", "-a", "--host", "mdw"]
        parser = self.subject.GpStop.createParser()
        options, args = parser.parse_args()

        self.master = Segment.initFromString(
            "1|-1|p|p|s|u|mdw|mdw|5432|/data/master")
        self.primary0 = Segment.initFromString(
            "2|0|p|p|s|u|sdw1|sdw1|40000|/data/primary0")
        self.mirror0 = Segment.initFromString(
            "3|0|m|m|s|u|sdw1|sdw1|50000|/data/mirror0")
        self.mock_gparray.return_value = GpArray([self.master, self.primary0, self.mirror0])

        gpstop = self.subject.GpStop.createProgram(options, args)

        with self.assertRaisesRegexp(Exception,"Specified host '%s' has the master or standby master on it. This node can only be stopped as part of a full-cluster gpstop, without '--host'." %
                                     self.master.getSegmentHostName()):
            gpstop.run()
        self.assertEquals(0, self.mock_GpSegStopCmdInit.call_count)
 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)
Esempio n. 22
0
    def test_host_option_segment_on_same_host_with_mirror_fails(self):
        sys.argv = ["gpstop", "-a", "--host", "sdw1"]
        parser = self.subject.GpStop.createParser()
        options, args = parser.parse_args()

        self.master = Segment.initFromString(
            "1|-1|p|p|s|u|mdw|mdw|5432|/data/master")

        self.primary0 = Segment.initFromString(
            "2|0|p|p|s|u|sdw1|sdw1|40000|/data/primary0")
        self.mirror0 = Segment.initFromString(
            "3|0|m|m|s|u|sdw1|sdw1|50000|/data/mirror0")
        self.mock_gparray.return_value = GpArray([self.master, self.primary0, self.mirror0])

        gpstop = self.subject.GpStop.createProgram(options, args)

        with self.assertRaisesRegexp(Exception,"Segment host '%s' has both of corresponding primary '%s' and mirror '%s'. Aborting." % (self.primary0.getSegmentHostName(), self.primary0, self.mirror0)):
            gpstop.run()
        self.assertEquals(0, self.mock_GpSegStopCmdInit.call_count)
Esempio n. 23
0
    def mirrorlayout_test(self, hostlist, interface_list, primary_list,
                          primary_portbase, mirror_type, mirror_list,
                          mirror_portbase, dir_prefix,
                          primary_replication_portbase,
                          mirror_replication_portbase):
        master = GpDB(content=-1,
                      preferred_role='p',
                      dbid=0,
                      role='p',
                      mode='s',
                      status='u',
                      hostname='masterhost',
                      address='masterhost-1',
                      port=5432,
                      datadir='/masterdir',
                      replicationPort=5433)
        allrows = []
        allrows.append(master)
        rows = createSegmentRows(hostlist, interface_list, primary_list,
                                 primary_portbase, mirror_type, mirror_list,
                                 mirror_portbase, dir_prefix,
                                 primary_replication_portbase,
                                 mirror_replication_portbase)

        for row in rows:
            newrow = GpDB(
                content=row.content,
                preferred_role='p' if convert_bool(row.isprimary) else 'm',
                dbid=row.dbid,
                role='p' if convert_bool(row.isprimary) else 'm',
                mode='s',
                status='u',
                hostname=row.host,
                address=row.address,
                port=row.port,
                datadir=row.fulldir,
                replicationPort=row.prPort)
            allrows.append(newrow)

        gparray = GpArray(allrows)

        self._validate_array(gparray)
Esempio n. 24
0
    def test_host_option_segment_in_resynchronizing_mode_fails(self):
        sys.argv = ["gpstop", "-a", "--host", "sdw1"]
        parser = self.subject.GpStop.createParser()
        options, args = parser.parse_args()

        self.primary0 = Segment.initFromString(
            "2|0|p|p|r|u|sdw1|sdw1|40000|/data/primary0")
        self.mirror0 = Segment.initFromString(
            "6|0|m|m|r|u|sdw2|sdw2|50000|/data/mirror0")
        self.mock_gparray.return_value = GpArray([self.master, self.primary0,
                                                  self.primary1, self.primary2,
                                                  self.primary3, self.mirror0,
                                                  self.mirror1, self.mirror2,
                                                  self.mirror3])

        gpstop = self.subject.GpStop.createProgram(options, args)

        with self.assertRaisesRegexp(Exception,"Segment '%s' not synchronized. Aborting." % self.primary0):
            gpstop.run()
        self.assertEquals(0, self.mock_GpSegStopCmdInit.call_count)
Esempio n. 25
0
    def test_host_option_if_no_mirrors_fails(self):
        sys.argv = ["gpstop", "-a", "--host", "sdw2"]
        parser = self.subject.GpStop.createParser()
        options, args = parser.parse_args()

        self.master = Segment.initFromString(
            "1|-1|p|p|s|u|mdw|mdw|5432|/data/master")
        self.standby = Segment.initFromString(
            "2|-1|m|m|s|u|sdw1|sdw1|25432|/data/master")
        self.primary0 = Segment.initFromString(
            "3|0|p|p|s|u|sdw1|sdw1|40000|/data/primary0")
        self.primary1 = Segment.initFromString(
            "4|0|p|p|s|u|sdw2|sdw2|40001|/data/primary1")
        self.mock_gparray.return_value = GpArray([self.master, self.standby, self.primary0, self.primary1])

        gpstop = self.subject.GpStop.createProgram(options, args)

        with self.assertRaisesRegexp(Exception,"Cannot perform host-specific gpstop on a cluster without segment mirroring."):
            gpstop.run()
        self.assertEquals(0, self.mock_GpSegStopCmdInit.call_count)
Esempio n. 26
0
    def test_standby_activated_returns_false_when_primary_tli_is_before_standby_tli(
            self, mock_fetch_tli):
        def mock_fetch_tli_func(self, data_dir, remote_host=None):
            if "master" in data_dir:
                return 3
            if "standby" in data_dir:
                return 2
            return 1

        mock_fetch_tli.side_effect = mock_fetch_tli_func

        gpstart = self.setup_gpstart()
        gpstart.master_datadir = "/data/master"

        master = Segment.initFromString(
            "1|-1|p|p|n|u|mdw|mdw|5432|/data/master")
        standby = Segment.initFromString(
            "6|-1|m|m|n|d|sdw3|sdw3|5433|/data/standby")
        gpstart.gparray = GpArray([master, standby])

        self.assertFalse(gpstart._standby_activated())