Merged branch PYTHON-759 tests into master
This commit is contained in:
		@@ -504,20 +504,16 @@ class HostFilterPolicy(LoadBalancingPolicy):
 | 
			
		||||
        self._predicate = predicate
 | 
			
		||||
 | 
			
		||||
    def on_up(self, host, *args, **kwargs):
 | 
			
		||||
        if self.predicate(host):
 | 
			
		||||
            return self._child_policy.on_up(host, *args, **kwargs)
 | 
			
		||||
        return self._child_policy.on_up(host, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
    def on_down(self, host, *args, **kwargs):
 | 
			
		||||
        if self.predicate(host):
 | 
			
		||||
            return self._child_policy.on_down(host, *args, **kwargs)
 | 
			
		||||
        return self._child_policy.on_down(host, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
    def on_add(self, host, *args, **kwargs):
 | 
			
		||||
        if self.predicate(host):
 | 
			
		||||
            return self._child_policy.on_add(host, *args, **kwargs)
 | 
			
		||||
        return self._child_policy.on_add(host, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
    def on_remove(self, host, *args, **kwargs):
 | 
			
		||||
        if self.predicate(host):
 | 
			
		||||
            return self._child_policy.on_remove(host, *args, **kwargs)
 | 
			
		||||
        return self._child_policy.on_remove(host, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def predicate(self):
 | 
			
		||||
@@ -545,10 +541,7 @@ class HostFilterPolicy(LoadBalancingPolicy):
 | 
			
		||||
            return HostDistance.IGNORED
 | 
			
		||||
 | 
			
		||||
    def populate(self, cluster, hosts):
 | 
			
		||||
        self._child_policy.populate(
 | 
			
		||||
            cluster=cluster,
 | 
			
		||||
            hosts=[h for h in hosts if self.predicate(h)]
 | 
			
		||||
        )
 | 
			
		||||
        self._child_policy.populate(cluster=cluster, hosts=hosts)
 | 
			
		||||
 | 
			
		||||
    def make_query_plan(self, working_keyspace=None, query=None):
 | 
			
		||||
        """
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ import sys,logging, traceback, time, re
 | 
			
		||||
from cassandra import (ConsistencyLevel, OperationTimedOut, ReadTimeout, WriteTimeout, ReadFailure, WriteFailure,
 | 
			
		||||
                       FunctionFailure, ProtocolVersion)
 | 
			
		||||
from cassandra.cluster import Cluster, NoHostAvailable, ExecutionProfile, EXEC_PROFILE_DEFAULT
 | 
			
		||||
from cassandra.policies import WhiteListRoundRobinPolicy
 | 
			
		||||
from cassandra.policies import HostFilterPolicy, RoundRobinPolicy
 | 
			
		||||
from cassandra.concurrent import execute_concurrent_with_args
 | 
			
		||||
from cassandra.query import SimpleStatement
 | 
			
		||||
from tests.integration import use_singledc, PROTOCOL_VERSION, get_cluster, setup_keyspace, remove_cluster, get_node
 | 
			
		||||
@@ -327,7 +327,9 @@ class TimeoutTimerTest(unittest.TestCase):
 | 
			
		||||
        # self.node1, self.node2, self.node3 = get_cluster().nodes.values()
 | 
			
		||||
 | 
			
		||||
        node1 = ExecutionProfile(
 | 
			
		||||
            load_balancing_policy=WhiteListRoundRobinPolicy(['127.0.0.1'])
 | 
			
		||||
            load_balancing_policy=HostFilterPolicy(
 | 
			
		||||
                RoundRobinPolicy(), lambda host: host.address == "127.0.0.1"
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
        self.cluster = Cluster(protocol_version=PROTOCOL_VERSION, execution_profiles={EXEC_PROFILE_DEFAULT: node1})
 | 
			
		||||
        self.session = self.cluster.connect(wait_for_all_pools=True)
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,8 @@ from cassandra.cluster import Cluster, Session, NoHostAvailable, ExecutionProfil
 | 
			
		||||
from cassandra.concurrent import execute_concurrent
 | 
			
		||||
from cassandra.policies import (RoundRobinPolicy, ExponentialReconnectionPolicy,
 | 
			
		||||
                                RetryPolicy, SimpleConvictionPolicy, HostDistance,
 | 
			
		||||
                                WhiteListRoundRobinPolicy, AddressTranslator, TokenAwarePolicy, HostFilterPolicy)
 | 
			
		||||
                                AddressTranslator, TokenAwarePolicy, HostFilterPolicy)
 | 
			
		||||
 | 
			
		||||
from cassandra.pool import Host
 | 
			
		||||
from cassandra.query import SimpleStatement, TraceUnavailable, tuple_factory
 | 
			
		||||
 | 
			
		||||
@@ -478,7 +479,10 @@ class ClusterTests(unittest.TestCase):
 | 
			
		||||
    def test_refresh_schema_no_wait(self):
 | 
			
		||||
        contact_points = [CASSANDRA_IP]
 | 
			
		||||
        cluster = Cluster(protocol_version=PROTOCOL_VERSION, max_schema_agreement_wait=10,
 | 
			
		||||
                          contact_points=contact_points, load_balancing_policy=WhiteListRoundRobinPolicy(contact_points))
 | 
			
		||||
                          contact_points=contact_points,
 | 
			
		||||
                          load_balancing_policy=HostFilterPolicy(
 | 
			
		||||
                              RoundRobinPolicy(), lambda host: host.address == CASSANDRA_IP
 | 
			
		||||
                          ))
 | 
			
		||||
        session = cluster.connect()
 | 
			
		||||
 | 
			
		||||
        schema_ver = session.execute("SELECT schema_version FROM system.local WHERE key='local'")[0][0]
 | 
			
		||||
@@ -619,7 +623,7 @@ class ClusterTests(unittest.TestCase):
 | 
			
		||||
            try:
 | 
			
		||||
                result = future.get_query_trace(-1.0)
 | 
			
		||||
                # In case the result has time to come back before this timeout due to a race condition
 | 
			
		||||
                check_trace(result)
 | 
			
		||||
                self.check_trace(result)
 | 
			
		||||
            except TraceUnavailable:
 | 
			
		||||
                break
 | 
			
		||||
        else:
 | 
			
		||||
@@ -631,7 +635,7 @@ class ClusterTests(unittest.TestCase):
 | 
			
		||||
            try:
 | 
			
		||||
                result = future.get_query_trace(max_wait=120)
 | 
			
		||||
                # In case the result has been set check the trace
 | 
			
		||||
                check_trace(result)
 | 
			
		||||
                self.check_trace(result)
 | 
			
		||||
            except TraceUnavailable:
 | 
			
		||||
                break
 | 
			
		||||
        else:
 | 
			
		||||
@@ -775,7 +779,11 @@ class ClusterTests(unittest.TestCase):
 | 
			
		||||
        @test_category config_profiles
 | 
			
		||||
        """
 | 
			
		||||
        query = "select release_version from system.local"
 | 
			
		||||
        node1 = ExecutionProfile(load_balancing_policy=WhiteListRoundRobinPolicy([CASSANDRA_IP]))
 | 
			
		||||
        node1 = ExecutionProfile(
 | 
			
		||||
            load_balancing_policy=HostFilterPolicy(
 | 
			
		||||
                RoundRobinPolicy(), lambda host: host.address == CASSANDRA_IP
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
        with Cluster(execution_profiles={'node1': node1}) as cluster:
 | 
			
		||||
            session = cluster.connect(wait_for_all_pools=True)
 | 
			
		||||
 | 
			
		||||
@@ -926,8 +934,16 @@ class ClusterTests(unittest.TestCase):
 | 
			
		||||
        @test_category config_profiles
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        node1 = ExecutionProfile(load_balancing_policy=WhiteListRoundRobinPolicy(['127.0.0.1']))
 | 
			
		||||
        node2 = ExecutionProfile(load_balancing_policy=WhiteListRoundRobinPolicy(['127.0.0.2']))
 | 
			
		||||
        node1 = ExecutionProfile(
 | 
			
		||||
            load_balancing_policy=HostFilterPolicy(
 | 
			
		||||
                RoundRobinPolicy(), lambda host: host.address == "127.0.0.1"
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
        node2 = ExecutionProfile(
 | 
			
		||||
            load_balancing_policy=HostFilterPolicy(
 | 
			
		||||
                RoundRobinPolicy(), lambda host: host.address == "127.0.0.2"
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
        with Cluster(execution_profiles={EXEC_PROFILE_DEFAULT: node1, 'node2': node2}) as cluster:
 | 
			
		||||
            session = cluster.connect(wait_for_all_pools=True)
 | 
			
		||||
            pools = session.get_pool_state()
 | 
			
		||||
@@ -936,7 +952,11 @@ class ClusterTests(unittest.TestCase):
 | 
			
		||||
            self.assertEqual(set(h.address for h in pools), set(('127.0.0.1', '127.0.0.2')))
 | 
			
		||||
 | 
			
		||||
            # dynamically update pools on add
 | 
			
		||||
            node3 = ExecutionProfile(load_balancing_policy=WhiteListRoundRobinPolicy(['127.0.0.3']))
 | 
			
		||||
            node3 = ExecutionProfile(
 | 
			
		||||
                load_balancing_policy=HostFilterPolicy(
 | 
			
		||||
                    RoundRobinPolicy(), lambda host: host.address == "127.0.0.3"
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
            cluster.add_execution_profile('node3', node3)
 | 
			
		||||
            pools = session.get_pool_state()
 | 
			
		||||
            self.assertEqual(set(h.address for h in pools), set(('127.0.0.1', '127.0.0.2', '127.0.0.3')))
 | 
			
		||||
@@ -954,14 +974,22 @@ class ClusterTests(unittest.TestCase):
 | 
			
		||||
        """
 | 
			
		||||
        max_retry_count = 10
 | 
			
		||||
        for i in range(max_retry_count):
 | 
			
		||||
            node1 = ExecutionProfile(load_balancing_policy=WhiteListRoundRobinPolicy(['127.0.0.1']))
 | 
			
		||||
            node1 = ExecutionProfile(
 | 
			
		||||
                load_balancing_policy=HostFilterPolicy(
 | 
			
		||||
                    RoundRobinPolicy(), lambda host: host.address == "127.0.0.1"
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
            with Cluster(execution_profiles={EXEC_PROFILE_DEFAULT: node1}) as cluster:
 | 
			
		||||
                session = cluster.connect(wait_for_all_pools=True)
 | 
			
		||||
                pools = session.get_pool_state()
 | 
			
		||||
                self.assertGreater(len(cluster.metadata.all_hosts()), 2)
 | 
			
		||||
                self.assertEqual(set(h.address for h in pools), set(('127.0.0.1',)))
 | 
			
		||||
 | 
			
		||||
                node2 = ExecutionProfile(load_balancing_policy=WhiteListRoundRobinPolicy(['127.0.0.2', '127.0.0.3']))
 | 
			
		||||
                node2 = ExecutionProfile(
 | 
			
		||||
                    load_balancing_policy=HostFilterPolicy(
 | 
			
		||||
                        RoundRobinPolicy(), lambda host: host.address in ["127.0.0.2", "127.0.0.3"]
 | 
			
		||||
                    )
 | 
			
		||||
                )
 | 
			
		||||
 | 
			
		||||
                start = time.time()
 | 
			
		||||
                try:
 | 
			
		||||
@@ -1089,7 +1117,9 @@ class TestAddressTranslation(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
@local
 | 
			
		||||
class ContextManagementTest(unittest.TestCase):
 | 
			
		||||
    load_balancing_policy = WhiteListRoundRobinPolicy([CASSANDRA_IP])
 | 
			
		||||
    load_balancing_policy = HostFilterPolicy(
 | 
			
		||||
        RoundRobinPolicy(), lambda host: host.address == CASSANDRA_IP
 | 
			
		||||
    )
 | 
			
		||||
    cluster_kwargs = {'execution_profiles': {EXEC_PROFILE_DEFAULT: ExecutionProfile(load_balancing_policy=
 | 
			
		||||
                                                                                    load_balancing_policy)},
 | 
			
		||||
                      'schema_metadata_enabled': False,
 | 
			
		||||
@@ -1209,7 +1239,6 @@ class HostStateTest(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
@local
 | 
			
		||||
class DontPrepareOnIgnoredHostsTest(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    ignored_addresses = ['127.0.0.3']
 | 
			
		||||
    ignore_node_3_policy = IgnoredHostPolicy(ignored_addresses)
 | 
			
		||||
 | 
			
		||||
@@ -1248,7 +1277,8 @@ class DontPrepareOnIgnoredHostsTest(unittest.TestCase):
 | 
			
		||||
@local
 | 
			
		||||
class DuplicateRpcTest(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    load_balancing_policy = WhiteListRoundRobinPolicy(['127.0.0.1'])
 | 
			
		||||
    load_balancing_policy = HostFilterPolicy(RoundRobinPolicy(),
 | 
			
		||||
                                             lambda host: host.address == "127.0.0.1")
 | 
			
		||||
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        self.cluster = Cluster(protocol_version=PROTOCOL_VERSION, load_balancing_policy=self.load_balancing_policy)
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@ from cassandra.cluster import NoHostAvailable, ConnectionShutdown, Cluster
 | 
			
		||||
from cassandra.io.asyncorereactor import AsyncoreConnection
 | 
			
		||||
from cassandra.protocol import QueryMessage
 | 
			
		||||
from cassandra.connection import Connection
 | 
			
		||||
from cassandra.policies import WhiteListRoundRobinPolicy, HostStateListener
 | 
			
		||||
from cassandra.policies import HostFilterPolicy, RoundRobinPolicy, HostStateListener
 | 
			
		||||
from cassandra.pool import HostConnectionPool
 | 
			
		||||
 | 
			
		||||
from tests import is_monkey_patched, notwindows
 | 
			
		||||
@@ -50,8 +50,12 @@ class ConnectionTimeoutTest(unittest.TestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        self.defaultInFlight = Connection.max_in_flight
 | 
			
		||||
        Connection.max_in_flight = 2
 | 
			
		||||
        self.cluster = Cluster(protocol_version=PROTOCOL_VERSION, load_balancing_policy=
 | 
			
		||||
                            WhiteListRoundRobinPolicy([CASSANDRA_IP]))
 | 
			
		||||
        self.cluster = Cluster(
 | 
			
		||||
            protocol_version=PROTOCOL_VERSION,
 | 
			
		||||
            load_balancing_policy=HostFilterPolicy(
 | 
			
		||||
                RoundRobinPolicy(), predicate=lambda host: host.address == CASSANDRA_IP
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
        self.session = self.cluster.connect()
 | 
			
		||||
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 | 
			
		||||
import time
 | 
			
		||||
 | 
			
		||||
from cassandra.policies import WhiteListRoundRobinPolicy, FallthroughRetryPolicy
 | 
			
		||||
from cassandra.policies import HostFilterPolicy, RoundRobinPolicy, FallthroughRetryPolicy
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    import unittest2 as unittest
 | 
			
		||||
@@ -39,7 +39,9 @@ class MetricsTests(unittest.TestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        contact_point = ['127.0.0.2']
 | 
			
		||||
        self.cluster = Cluster(contact_points=contact_point, metrics_enabled=True, protocol_version=PROTOCOL_VERSION,
 | 
			
		||||
                               load_balancing_policy=WhiteListRoundRobinPolicy(contact_point),
 | 
			
		||||
                               load_balancing_policy=HostFilterPolicy(
 | 
			
		||||
                                   RoundRobinPolicy(), lambda host: host.address in contact_point
 | 
			
		||||
                               ),
 | 
			
		||||
                               default_retry_policy=FallthroughRetryPolicy())
 | 
			
		||||
        self.session = self.cluster.connect("test3rf", wait_for_all_pools=True)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user