Skip to content

Commit c381c19

Browse files
tests/unit: Provide host_id when initializing Host
1 parent eb1cfb2 commit c381c19

File tree

7 files changed

+97
-91
lines changed

7 files changed

+97
-91
lines changed

tests/unit/advanced/test_policies.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
# limitations under the License.
1414
import unittest
1515
from unittest.mock import Mock
16+
import uuid
1617

1718
from cassandra.pool import Host
1819
from cassandra.policies import RoundRobinPolicy
@@ -72,7 +73,7 @@ def test_target_no_host(self):
7273

7374
def test_target_host_down(self):
7475
node_count = 4
75-
hosts = [Host(i, Mock()) for i in range(node_count)]
76+
hosts = [Host(i, Mock(), host_id=uuid.uuid4()) for i in range(node_count)]
7677
target_host = hosts[1]
7778

7879
policy = DSELoadBalancingPolicy(RoundRobinPolicy())
@@ -87,7 +88,7 @@ def test_target_host_down(self):
8788

8889
def test_target_host_nominal(self):
8990
node_count = 4
90-
hosts = [Host(i, Mock()) for i in range(node_count)]
91+
hosts = [Host(i, Mock(), host_id=uuid.uuid4()) for i in range(node_count)]
9192
target_host = hosts[1]
9293
target_host.is_up = True
9394

tests/unit/test_cluster.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import socket
1818

1919
from unittest.mock import patch, Mock
20+
import uuid
2021

2122
from cassandra import ConsistencyLevel, DriverException, Timeout, Unavailable, RequestExecutionException, ReadTimeout, WriteTimeout, CoordinationFailure, ReadFailure, WriteFailure, FunctionFailure, AlreadyExists,\
2223
InvalidRequest, Unauthorized, AuthenticationFailed, OperationTimedOut, UnsupportedOperation, RequestValidationException, ConfigurationException, ProtocolVersion
@@ -200,7 +201,7 @@ def test_default_serial_consistency_level_ep(self, *_):
200201
PR #510
201202
"""
202203
c = Cluster(protocol_version=4)
203-
s = Session(c, [Host("127.0.0.1", SimpleConvictionPolicy)])
204+
s = Session(c, [Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
204205
c.connection_class.initialize_reactor()
205206

206207
# default is None
@@ -229,7 +230,7 @@ def test_default_serial_consistency_level_legacy(self, *_):
229230
PR #510
230231
"""
231232
c = Cluster(protocol_version=4)
232-
s = Session(c, [Host("127.0.0.1", SimpleConvictionPolicy)])
233+
s = Session(c, [Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
233234
c.connection_class.initialize_reactor()
234235
# default is None
235236
assert s.default_serial_consistency_level is None
@@ -286,7 +287,7 @@ def test_default_exec_parameters(self):
286287
assert cluster.profile_manager.default.load_balancing_policy.__class__ == default_lbp_factory().__class__
287288
assert cluster.default_retry_policy.__class__ == RetryPolicy
288289
assert cluster.profile_manager.default.retry_policy.__class__ == RetryPolicy
289-
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy)])
290+
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
290291
assert session.default_timeout == 10.0
291292
assert cluster.profile_manager.default.request_timeout == 10.0
292293
assert session.default_consistency_level == ConsistencyLevel.LOCAL_ONE
@@ -300,7 +301,7 @@ def test_default_exec_parameters(self):
300301
def test_default_legacy(self):
301302
cluster = Cluster(load_balancing_policy=RoundRobinPolicy(), default_retry_policy=DowngradingConsistencyRetryPolicy())
302303
assert cluster._config_mode == _ConfigMode.LEGACY
303-
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy)])
304+
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
304305
session.default_timeout = 3.7
305306
session.default_consistency_level = ConsistencyLevel.ALL
306307
session.default_serial_consistency_level = ConsistencyLevel.SERIAL
@@ -314,7 +315,7 @@ def test_default_legacy(self):
314315
def test_default_profile(self):
315316
non_default_profile = ExecutionProfile(RoundRobinPolicy(), *[object() for _ in range(2)])
316317
cluster = Cluster(execution_profiles={'non-default': non_default_profile})
317-
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy)])
318+
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
318319

319320
assert cluster._config_mode == _ConfigMode.PROFILES
320321

@@ -347,7 +348,7 @@ def test_serial_consistency_level_validation(self):
347348
def test_statement_params_override_legacy(self):
348349
cluster = Cluster(load_balancing_policy=RoundRobinPolicy(), default_retry_policy=DowngradingConsistencyRetryPolicy())
349350
assert cluster._config_mode == _ConfigMode.LEGACY
350-
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy)])
351+
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
351352

352353
ss = SimpleStatement("query", retry_policy=DowngradingConsistencyRetryPolicy(),
353354
consistency_level=ConsistencyLevel.ALL, serial_consistency_level=ConsistencyLevel.SERIAL)
@@ -368,7 +369,7 @@ def test_statement_params_override_legacy(self):
368369
def test_statement_params_override_profile(self):
369370
non_default_profile = ExecutionProfile(RoundRobinPolicy(), *[object() for _ in range(2)])
370371
cluster = Cluster(execution_profiles={'non-default': non_default_profile})
371-
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy)])
372+
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
372373

373374
assert cluster._config_mode == _ConfigMode.PROFILES
374375

@@ -406,7 +407,7 @@ def test_no_profile_with_legacy(self):
406407

407408
# session settings lock out profiles
408409
cluster = Cluster()
409-
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy)])
410+
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
410411
for attr, value in (('default_timeout', 1),
411412
('default_consistency_level', ConsistencyLevel.ANY),
412413
('default_serial_consistency_level', ConsistencyLevel.SERIAL),
@@ -432,7 +433,7 @@ def test_no_legacy_with_profile(self):
432433
('load_balancing_policy', default_lbp_factory())):
433434
with pytest.raises(ValueError):
434435
setattr(cluster, attr, value)
435-
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy)])
436+
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
436437
for attr, value in (('default_timeout', 1),
437438
('default_consistency_level', ConsistencyLevel.ANY),
438439
('default_serial_consistency_level', ConsistencyLevel.SERIAL),
@@ -445,7 +446,7 @@ def test_profile_name_value(self):
445446

446447
internalized_profile = ExecutionProfile(RoundRobinPolicy(), *[object() for _ in range(2)])
447448
cluster = Cluster(execution_profiles={'by-name': internalized_profile})
448-
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy)])
449+
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
449450
assert cluster._config_mode == _ConfigMode.PROFILES
450451

451452
rf = session.execute_async("query", execution_profile='by-name')
@@ -459,7 +460,7 @@ def test_profile_name_value(self):
459460
def test_exec_profile_clone(self):
460461

461462
cluster = Cluster(execution_profiles={EXEC_PROFILE_DEFAULT: ExecutionProfile(), 'one': ExecutionProfile()})
462-
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy)])
463+
session = Session(cluster, hosts=[Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
463464

464465
profile_attrs = {'request_timeout': 1,
465466
'consistency_level': ConsistencyLevel.ANY,

tests/unit/test_concurrent.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from queue import PriorityQueue
2323
import sys
2424
import platform
25+
import uuid
2526

2627
from cassandra.cluster import Cluster, Session
2728
from cassandra.concurrent import execute_concurrent, execute_concurrent_with_args
@@ -248,7 +249,7 @@ def test_recursion_limited(self):
248249
PYTHON-585
249250
"""
250251
max_recursion = sys.getrecursionlimit()
251-
s = Session(Cluster(), [Host("127.0.0.1", SimpleConvictionPolicy)])
252+
s = Session(Cluster(), [Host("127.0.0.1", SimpleConvictionPolicy, host_id=uuid.uuid4())])
252253
with pytest.raises(TypeError):
253254
execute_concurrent_with_args(s, "doesn't matter", [('param',)] * max_recursion, raise_on_first_error=True)
254255

tests/unit/test_host_connection_pool.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from concurrent.futures import ThreadPoolExecutor
1515
import logging
1616
import time
17+
import uuid
1718
from cassandra.protocol_features import ProtocolFeatures
1819

1920
from cassandra.shard_info import _ShardingInfo
@@ -205,20 +206,20 @@ def test_host_instantiations(self):
205206
"""
206207

207208
with pytest.raises(ValueError):
208-
Host(None, None)
209+
Host(None, None, host_id=uuid.uuid4())
209210
with pytest.raises(ValueError):
210-
Host('127.0.0.1', None)
211+
Host('127.0.0.1', None, host_id=uuid.uuid4())
211212
with pytest.raises(ValueError):
212-
Host(None, SimpleConvictionPolicy)
213+
Host(None, SimpleConvictionPolicy, host_id=uuid.uuid4())
213214

214215
def test_host_equality(self):
215216
"""
216217
Test host equality has correct logic
217218
"""
218219

219-
a = Host('127.0.0.1', SimpleConvictionPolicy)
220-
b = Host('127.0.0.1', SimpleConvictionPolicy)
221-
c = Host('127.0.0.2', SimpleConvictionPolicy)
220+
a = Host('127.0.0.1', SimpleConvictionPolicy, host_id=uuid.uuid4())
221+
b = Host('127.0.0.1', SimpleConvictionPolicy, host_id=uuid.uuid4())
222+
c = Host('127.0.0.2', SimpleConvictionPolicy, host_id=uuid.uuid4())
222223

223224
assert a == b, 'Two Host instances should be equal when sharing.'
224225
assert a != c, 'Two Host instances should NOT be equal when using two different addresses.'
@@ -253,7 +254,7 @@ def mock_connection_factory(self, *args, **kwargs):
253254
connection.is_shutdown = False
254255
connection.is_defunct = False
255256
connection.is_closed = False
256-
connection.features = ProtocolFeatures(shard_id=self.connection_counter,
257+
connection.features = ProtocolFeatures(shard_id=self.connection_counter,
257258
sharding_info=_ShardingInfo(shard_id=1, shards_count=14,
258259
partitioner="", sharding_algorithm="", sharding_ignore_msb=0,
259260
shard_aware_port="", shard_aware_port_ssl=""))

tests/unit/test_metadata.py

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from unittest.mock import Mock
1919
import os
2020
import timeit
21+
import uuid
2122

2223
import cassandra
2324
from cassandra.cqltypes import strip_frozen
@@ -121,7 +122,7 @@ def test_simple_replication_type_parsing(self):
121122

122123
# make token replica map
123124
ring = [MD5Token(0), MD5Token(1), MD5Token(2)]
124-
hosts = [Host('dc1.{}'.format(host), SimpleConvictionPolicy) for host in range(3)]
125+
hosts = [Host('dc1.{}'.format(host), SimpleConvictionPolicy, host_id=uuid.uuid4()) for host in range(3)]
125126
token_to_host = dict(zip(ring, hosts))
126127
assert simple_int.make_token_replica_map(token_to_host, ring) == simple_str.make_token_replica_map(token_to_host, ring)
127128

@@ -139,7 +140,7 @@ def test_transient_replication_parsing(self):
139140

140141
# make token replica map
141142
ring = [MD5Token(0), MD5Token(1), MD5Token(2)]
142-
hosts = [Host('dc1.{}'.format(host), SimpleConvictionPolicy) for host in range(3)]
143+
hosts = [Host('dc1.{}'.format(host), SimpleConvictionPolicy, host_id=uuid.uuid4()) for host in range(3)]
143144
token_to_host = dict(zip(ring, hosts))
144145
assert simple_transient.make_token_replica_map(token_to_host, ring) == simple_str.make_token_replica_map(token_to_host, ring)
145146

@@ -160,7 +161,7 @@ def test_nts_replication_parsing(self):
160161

161162
# make token replica map
162163
ring = [MD5Token(0), MD5Token(1), MD5Token(2)]
163-
hosts = [Host('dc1.{}'.format(host), SimpleConvictionPolicy) for host in range(3)]
164+
hosts = [Host('dc1.{}'.format(host), SimpleConvictionPolicy, host_id=uuid.uuid4()) for host in range(3)]
164165
token_to_host = dict(zip(ring, hosts))
165166
assert nts_int.make_token_replica_map(token_to_host, ring) == nts_str.make_token_replica_map(token_to_host, ring)
166167

@@ -180,30 +181,30 @@ def test_nts_transient_parsing(self):
180181

181182
# make token replica map
182183
ring = [MD5Token(0), MD5Token(1), MD5Token(2)]
183-
hosts = [Host('dc1.{}'.format(host), SimpleConvictionPolicy) for host in range(3)]
184+
hosts = [Host('dc1.{}'.format(host), SimpleConvictionPolicy, host_id=uuid.uuid4()) for host in range(3)]
184185
token_to_host = dict(zip(ring, hosts))
185186
assert nts_transient.make_token_replica_map(token_to_host, ring) == nts_str.make_token_replica_map(token_to_host, ring)
186187

187188
def test_nts_make_token_replica_map(self):
188189
token_to_host_owner = {}
189190

190-
dc1_1 = Host('dc1.1', SimpleConvictionPolicy)
191-
dc1_2 = Host('dc1.2', SimpleConvictionPolicy)
192-
dc1_3 = Host('dc1.3', SimpleConvictionPolicy)
191+
dc1_1 = Host('dc1.1', SimpleConvictionPolicy, host_id=uuid.uuid4())
192+
dc1_2 = Host('dc1.2', SimpleConvictionPolicy, host_id=uuid.uuid4())
193+
dc1_3 = Host('dc1.3', SimpleConvictionPolicy, host_id=uuid.uuid4())
193194
for host in (dc1_1, dc1_2, dc1_3):
194195
host.set_location_info('dc1', 'rack1')
195196
token_to_host_owner[MD5Token(0)] = dc1_1
196197
token_to_host_owner[MD5Token(100)] = dc1_2
197198
token_to_host_owner[MD5Token(200)] = dc1_3
198199

199-
dc2_1 = Host('dc2.1', SimpleConvictionPolicy)
200-
dc2_2 = Host('dc2.2', SimpleConvictionPolicy)
200+
dc2_1 = Host('dc2.1', SimpleConvictionPolicy, host_id=uuid.uuid4())
201+
dc2_2 = Host('dc2.2', SimpleConvictionPolicy, host_id=uuid.uuid4())
201202
dc2_1.set_location_info('dc2', 'rack1')
202203
dc2_2.set_location_info('dc2', 'rack1')
203204
token_to_host_owner[MD5Token(1)] = dc2_1
204205
token_to_host_owner[MD5Token(101)] = dc2_2
205206

206-
dc3_1 = Host('dc3.1', SimpleConvictionPolicy)
207+
dc3_1 = Host('dc3.1', SimpleConvictionPolicy, host_id=uuid.uuid4())
207208
dc3_1.set_location_info('dc3', 'rack3')
208209
token_to_host_owner[MD5Token(2)] = dc3_1
209210

@@ -238,7 +239,7 @@ def test_nts_token_performance(self):
238239
vnodes_per_host = 500
239240
for i in range(dc1hostnum):
240241

241-
host = Host('dc1.{0}'.format(i), SimpleConvictionPolicy)
242+
host = Host('dc1.{0}'.format(i), SimpleConvictionPolicy, host_id=uuid.uuid4())
242243
host.set_location_info('dc1', "rack1")
243244
for vnode_num in range(vnodes_per_host):
244245
md5_token = MD5Token(current_token+vnode_num)
@@ -262,10 +263,10 @@ def test_nts_make_token_replica_map_multi_rack(self):
262263
token_to_host_owner = {}
263264

264265
# (A) not enough distinct racks, first skipped is used
265-
dc1_1 = Host('dc1.1', SimpleConvictionPolicy)
266-
dc1_2 = Host('dc1.2', SimpleConvictionPolicy)
267-
dc1_3 = Host('dc1.3', SimpleConvictionPolicy)
268-
dc1_4 = Host('dc1.4', SimpleConvictionPolicy)
266+
dc1_1 = Host('dc1.1', SimpleConvictionPolicy, host_id=uuid.uuid4())
267+
dc1_2 = Host('dc1.2', SimpleConvictionPolicy, host_id=uuid.uuid4())
268+
dc1_3 = Host('dc1.3', SimpleConvictionPolicy, host_id=uuid.uuid4())
269+
dc1_4 = Host('dc1.4', SimpleConvictionPolicy, host_id=uuid.uuid4())
269270
dc1_1.set_location_info('dc1', 'rack1')
270271
dc1_2.set_location_info('dc1', 'rack1')
271272
dc1_3.set_location_info('dc1', 'rack2')
@@ -276,9 +277,9 @@ def test_nts_make_token_replica_map_multi_rack(self):
276277
token_to_host_owner[MD5Token(300)] = dc1_4
277278

278279
# (B) distinct racks, but not contiguous
279-
dc2_1 = Host('dc2.1', SimpleConvictionPolicy)
280-
dc2_2 = Host('dc2.2', SimpleConvictionPolicy)
281-
dc2_3 = Host('dc2.3', SimpleConvictionPolicy)
280+
dc2_1 = Host('dc2.1', SimpleConvictionPolicy, host_id=uuid.uuid4())
281+
dc2_2 = Host('dc2.2', SimpleConvictionPolicy, host_id=uuid.uuid4())
282+
dc2_3 = Host('dc2.3', SimpleConvictionPolicy, host_id=uuid.uuid4())
282283
dc2_1.set_location_info('dc2', 'rack1')
283284
dc2_2.set_location_info('dc2', 'rack1')
284285
dc2_3.set_location_info('dc2', 'rack2')
@@ -301,7 +302,7 @@ def test_nts_make_token_replica_map_multi_rack(self):
301302
assertCountEqual(token_replicas, (dc1_1, dc1_2, dc1_3, dc2_1, dc2_3))
302303

303304
def test_nts_make_token_replica_map_empty_dc(self):
304-
host = Host('1', SimpleConvictionPolicy)
305+
host = Host('1', SimpleConvictionPolicy, host_id=uuid.uuid4())
305306
host.set_location_info('dc1', 'rack1')
306307
token_to_host_owner = {MD5Token(0): host}
307308
ring = [MD5Token(0)]
@@ -315,9 +316,9 @@ def test_nts_export_for_schema(self):
315316
assert "{'class': 'NetworkTopologyStrategy', 'dc1': '1', 'dc2': '2'}" == strategy.export_for_schema()
316317

317318
def test_simple_strategy_make_token_replica_map(self):
318-
host1 = Host('1', SimpleConvictionPolicy)
319-
host2 = Host('2', SimpleConvictionPolicy)
320-
host3 = Host('3', SimpleConvictionPolicy)
319+
host1 = Host('1', SimpleConvictionPolicy, host_id=uuid.uuid4())
320+
host2 = Host('2', SimpleConvictionPolicy, host_id=uuid.uuid4())
321+
host3 = Host('3', SimpleConvictionPolicy, host_id=uuid.uuid4())
321322
token_to_host_owner = {
322323
MD5Token(0): host1,
323324
MD5Token(100): host2,
@@ -406,7 +407,7 @@ def test_is_valid_name(self):
406407
class GetReplicasTest(unittest.TestCase):
407408
def _get_replicas(self, token_klass):
408409
tokens = [token_klass(i) for i in range(0, (2 ** 127 - 1), 2 ** 125)]
409-
hosts = [Host("ip%d" % i, SimpleConvictionPolicy) for i in range(len(tokens))]
410+
hosts = [Host("ip%d" % i, SimpleConvictionPolicy, host_id=uuid.uuid4()) for i in range(len(tokens))]
410411
token_to_primary_replica = dict(zip(tokens, hosts))
411412
keyspace = KeyspaceMetadata("ks", True, "SimpleStrategy", {"replication_factor": "1"})
412413
metadata = Mock(spec=Metadata, keyspaces={'ks': keyspace})
@@ -784,8 +785,8 @@ def test_iterate_all_hosts_and_modify(self):
784785
PYTHON-572
785786
"""
786787
metadata = Metadata()
787-
metadata.add_or_return_host(Host('dc1.1', SimpleConvictionPolicy))
788-
metadata.add_or_return_host(Host('dc1.2', SimpleConvictionPolicy))
788+
metadata.add_or_return_host(Host('dc1.1', SimpleConvictionPolicy, host_id=uuid.uuid4()))
789+
metadata.add_or_return_host(Host('dc1.2', SimpleConvictionPolicy, host_id=uuid.uuid4()))
789790

790791
assert len(metadata.all_hosts()) == 2
791792

0 commit comments

Comments
 (0)