예제 #1
0
 def test_no_given_address(self):
     addresses = get_possible_addresses([])
     six.assertCountEqual(self, addresses, [
         Address("127.0.0.1", 5701),
         Address("127.0.0.1", 5702),
         Address("127.0.0.1", 5703)
     ])
    def test_single_given_address_with_no_port(self):
        addresses = ["127.0.0.1"]

        addresses = get_possible_addresses(addresses)

        self.assertItemsEqual(addresses,
                              [Address("127.0.0.1", 5701), Address("127.0.0.1", 5702), Address("127.0.0.1", 5703)])
    def _connect_to_cluster(self):
        addresses = get_possible_addresses(
            self._config.network_config.addresses, self.members)

        current_attempt = 1
        attempt_limit = self._config.network_config.connection_attempt_limit
        retry_delay = self._config.network_config.connection_attempt_period
        while current_attempt <= attempt_limit:
            for address in addresses:
                try:
                    self.logger.info("Connecting to %s", address)
                    self._connect_to_address(address)
                    return
                except:
                    self.logger.warning("Error connecting to %s ",
                                        address,
                                        exc_info=True)

            if current_attempt >= attempt_limit:
                self.logger.warning(
                    "Unable to get alive cluster connection, attempt %d of %d",
                    current_attempt, attempt_limit)
                break

            self.logger.warning(
                "Unable to get alive cluster connection, attempt %d of %d, trying again in %d seconds",
                current_attempt, attempt_limit, retry_delay)
            current_attempt += 1
            time.sleep(retry_delay)

        error_msg = "Could not connect to any of %s after %d tries" % (
            addresses, attempt_limit)
        raise HazelcastError(error_msg)
    def test_addresses_and_members(self):
        addresses = ["127.0.0.1:5701"]
        member_list = [Member(Address("10.0.0.1", 5703), "uuid1"), Member(Address("10.0.0.2", 5701), "uuid2")]

        addresses = get_possible_addresses(addresses, member_list)

        self.assertItemsEqual(addresses,
                              [Address("127.0.0.1", 5701), Address("10.0.0.1", 5703), Address("10.0.0.2", 5701)])
예제 #5
0
    def test_no_given_address(self):
        addresses = get_possible_addresses([])

        self.assertItemsEqual(addresses, [
            Address("127.0.0.1", 5701),
            Address("127.0.0.1", 5702),
            Address("127.0.0.1", 5703)
        ])
    def test_multiple_addresses(self):
        addresses = ["127.0.0.1:5701", "10.0.0.1"]

        addresses = get_possible_addresses(addresses)

        self.assertItemsEqual(addresses,
                              [Address("127.0.0.1", 5701), Address("10.0.0.1", 5701), Address("10.0.0.1", 5702),
                               Address("10.0.0.1", 5703)])
예제 #7
0
 def test_no_given_address(self):
     self.network_config.addresses = []
     provider_addresses = get_provider_addresses([self.address_provider])
     addresses = get_possible_addresses(provider_addresses)
     six.assertCountEqual(self, addresses, [
         Address("127.0.0.1", 5701),
         Address("127.0.0.1", 5702),
         Address("127.0.0.1", 5703)
     ])
예제 #8
0
    def test_single_given_address_with_no_port(self):
        addresses = ["127.0.0.1"]

        addresses = get_possible_addresses(addresses)

        self.assertItemsEqual(addresses, [
            Address("127.0.0.1", 5701),
            Address("127.0.0.1", 5702),
            Address("127.0.0.1", 5703)
        ])
    def test_multiple_providers_with_empty_network_config_addresses(self):
        default_address_provider = DefaultAddressProvider(self.network_config)

        providers = [default_address_provider, self.cloud_address_provider]
        provider_addresses = get_provider_addresses(providers)
        six.assertCountEqual(self, provider_addresses,
                             [Address("10.0.0.1", 5701)])

        addresses = get_possible_addresses(provider_addresses)
        six.assertCountEqual(self, addresses, [Address("10.0.0.1", 5701)])
예제 #10
0
    def test_multiple_addresses(self):
        addresses = ["127.0.0.1:5701", "10.0.0.1"]

        addresses = get_possible_addresses(addresses)

        self.assertItemsEqual(addresses, [
            Address("127.0.0.1", 5701),
            Address("10.0.0.1", 5701),
            Address("10.0.0.1", 5702),
            Address("10.0.0.1", 5703)
        ])
예제 #11
0
    def test_addresses_and_members(self):
        addresses = ["127.0.0.1:5701"]
        member_list = [
            Member(Address("10.0.0.1", 5703), "uuid1"),
            Member(Address("10.0.0.2", 5701), "uuid2")
        ]

        addresses = get_possible_addresses(addresses, member_list)

        self.assertItemsEqual(addresses, [
            Address("127.0.0.1", 5701),
            Address("10.0.0.1", 5703),
            Address("10.0.0.2", 5701)
        ])
예제 #12
0
    def test_addresses_and_members(self):
        self.network_config.addresses = ["127.0.0.1:5701"]
        member_list = [
            Member(Address("10.0.0.1", 5703), "uuid1"),
            Member(Address("10.0.0.2", 5701), "uuid2")
        ]
        provider_addresses = get_provider_addresses([self.address_provider])
        addresses = get_possible_addresses(provider_addresses, member_list)

        six.assertCountEqual(self, addresses, [
            Address("127.0.0.1", 5701),
            Address("10.0.0.1", 5703),
            Address("10.0.0.2", 5701)
        ])
    def test_multiple_providers_with_empty_load_addresses(self):
        default_address_provider = DefaultAddressProvider(self.network_config)
        self.cloud_address_provider.load_addresses = lambda: []

        providers = [default_address_provider, self.cloud_address_provider]
        provider_addresses = get_provider_addresses(providers)
        six.assertCountEqual(self, provider_addresses, [])

        addresses = get_possible_addresses(provider_addresses)
        six.assertCountEqual(self, addresses, [
            Address("127.0.0.1", 5701),
            Address("127.0.0.1", 5702),
            Address("127.0.0.1", 5703)
        ])
    def test_multiple_providers_with_duplicate_network_config_addresses(self):
        self.network_config.addresses.append("127.0.0.1:5701")
        self.network_config.addresses.append("127.0.0.1:5701")
        default_address_provider = DefaultAddressProvider(self.network_config)

        providers = [default_address_provider, self.cloud_address_provider]
        provider_addresses = get_provider_addresses(providers)
        six.assertCountEqual(self, provider_addresses, [
            Address("10.0.0.1", 5701),
            Address("127.0.0.1", 5701),
            Address("127.0.0.1", 5701)
        ])

        addresses = get_possible_addresses(provider_addresses)
        six.assertCountEqual(
            self, addresses,
            [Address("10.0.0.1", 5701),
             Address("127.0.0.1", 5701)])
예제 #15
0
    def _connect_to_cluster(self):  # TODO: can be made async
        addresses = get_possible_addresses(self._config.network_config.addresses, self.members)

        current_attempt = 1
        attempt_limit = self._config.network_config.connection_attempt_limit
        retry_delay = self._config.network_config.connection_attempt_period
        while current_attempt <= self._config.network_config.connection_attempt_limit:
            for address in addresses:
                try:
                    self.logger.info("Connecting to %s", address)
                    self._connect_to_address(address)
                    return
                except:
                    self.logger.warning("Error connecting to %s, attempt %d of %d, trying again in %d seconds",
                                        address, current_attempt, attempt_limit, retry_delay, exc_info=True)
                    time.sleep(retry_delay)
            current_attempt += 1

        error_msg = "Could not connect to any of %s after %d tries" % (addresses, attempt_limit)
        raise HazelcastError(error_msg)
예제 #16
0
    def test_single_address_and_port(self):
        addresses = ["127.0.0.1:5701"]

        addresses = get_possible_addresses(addresses)

        six.assertCountEqual(self, addresses, [Address("127.0.0.1", 5701)])
예제 #17
0
    def test_multiple_addresses_non_unique(self):
        self.network_config.addresses = ["127.0.0.1:5701", "127.0.0.1:5701"]
        provider_addresses = get_provider_addresses([self.address_provider])
        addresses = get_possible_addresses(provider_addresses)

        six.assertCountEqual(self, addresses, [Address("127.0.0.1", 5701)])
예제 #18
0
    def test_single_address_and_port(self):
        addresses = ["127.0.0.1:5701"]

        addresses = get_possible_addresses(addresses)

        self.assertItemsEqual(addresses, [Address("127.0.0.1", 5701)])
예제 #19
0
    def test_single_address_and_port(self):
        self.network_config.addresses = ["127.0.0.1:5701"]
        provider_addresses = get_provider_addresses([self.address_provider])
        addresses = get_possible_addresses(provider_addresses)

        six.assertCountEqual(self, addresses, [Address("127.0.0.1", 5701)])
예제 #20
0
    def test_multiple_addresses_non_unique(self):
        addresses = ["127.0.0.1:5701", "127.0.0.1:5701"]

        addresses = get_possible_addresses(addresses)

        self.assertItemsEqual(addresses, [Address("127.0.0.1", 5701)])
    def test_no_given_address(self):
        addresses = get_possible_addresses([])

        self.assertItemsEqual(addresses,
                              [Address("127.0.0.1", 5701), Address("127.0.0.1", 5702), Address("127.0.0.1", 5703)])
    def test_single_address_and_port(self):
        addresses = ["127.0.0.1:5701"]

        addresses = get_possible_addresses(addresses)

        self.assertItemsEqual(addresses, [Address("127.0.0.1", 5701)])
    def test_multiple_addresses_non_unique(self):
        addresses = ["127.0.0.1:5701", "127.0.0.1:5701"]

        addresses = get_possible_addresses(addresses)

        self.assertItemsEqual(addresses, [Address("127.0.0.1", 5701)])