def test_prepare_on_ignored_hosts(self): cluster = Cluster(protocol_version=PROTOCOL_VERSION, load_balancing_policy=self.ignore_node_3_policy) session = cluster.connect() cluster.reprepare_on_up, cluster.prepare_on_all_hosts = True, False hosts = cluster.metadata.all_hosts() session.execute( "CREATE KEYSPACE clustertests " "WITH replication = " "{'class': 'SimpleStrategy', 'replication_factor': '1'}") session.execute( "CREATE TABLE clustertests.tab (a text, PRIMARY KEY (a))") # assign to an unused variable so cluster._prepared_statements retains # reference _ = session.prepare( "INSERT INTO clustertests.tab (a) VALUES ('a')") # noqa cluster.connection_factory = Mock(wraps=cluster.connection_factory) unignored_address = '127.0.0.1' unignored_host = next(h for h in hosts if h.address == unignored_address) ignored_host = next(h for h in hosts if h.address in self.ignored_addresses) unignored_host.is_up = ignored_host.is_up = False cluster.on_up(unignored_host) cluster.on_up(ignored_host) # the length of mock_calls will vary, but all should use the unignored # address for c in cluster.connection_factory.mock_calls: self.assertEqual(call(unignored_address), c)
def test_prepare_on_ignored_hosts(self): cluster = Cluster(protocol_version=PROTOCOL_VERSION, load_balancing_policy=self.ignore_node_3_policy) session = cluster.connect() cluster.reprepare_on_up, cluster.prepare_on_all_hosts = True, False hosts = cluster.metadata.all_hosts() session.execute("CREATE KEYSPACE clustertests " "WITH replication = " "{'class': 'SimpleStrategy', 'replication_factor': '1'}") session.execute("CREATE TABLE clustertests.tab (a text, PRIMARY KEY (a))") # assign to an unused variable so cluster._prepared_statements retains # reference _ = session.prepare("INSERT INTO clustertests.tab (a) VALUES ('a')") # noqa cluster.connection_factory = Mock(wraps=cluster.connection_factory) unignored_address = '127.0.0.1' unignored_host = next(h for h in hosts if h.address == unignored_address) ignored_host = next(h for h in hosts if h.address in self.ignored_addresses) unignored_host.is_up = ignored_host.is_up = False cluster.on_up(unignored_host) cluster.on_up(ignored_host) # the length of mock_calls will vary, but all should use the unignored # address for c in cluster.connection_factory.mock_calls: self.assertEqual(call(unignored_address), c) cluster.shutdown()
def test_on_down_and_up(self): cluster = Cluster() session = cluster.connect() host = cluster.metadata.all_hosts()[0] host.monitor.signal_connection_failure(None) cluster.on_down(host) self.assertNotIn(host, session._pools) host_reconnector = host._reconnection_handler self.assertNotEqual(None, host_reconnector) host.monitor.is_up = True cluster.on_up(host) self.assertEqual(None, host._reconnection_handler) self.assertTrue(host_reconnector._cancelled) self.assertIn(host, session._pools)