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