(self, token_klass)
| 421 | |
| 422 | class GetReplicasTest(unittest.TestCase): |
| 423 | def _get_replicas(self, token_klass): |
| 424 | tokens = [token_klass(i) for i in range(0, (2 ** 127 - 1), 2 ** 125)] |
| 425 | hosts = [Host("ip%d" % i, SimpleConvictionPolicy) for i in range(len(tokens))] |
| 426 | token_to_primary_replica = dict(zip(tokens, hosts)) |
| 427 | keyspace = KeyspaceMetadata("ks", True, "SimpleStrategy", {"replication_factor": "1"}) |
| 428 | metadata = Mock(spec=Metadata, keyspaces={'ks': keyspace}) |
| 429 | token_map = TokenMap(token_klass, token_to_primary_replica, tokens, metadata) |
| 430 | |
| 431 | # tokens match node tokens exactly |
| 432 | for token, expected_host in zip(tokens, hosts): |
| 433 | replicas = token_map.get_replicas("ks", token) |
| 434 | self.assertEqual(set(replicas), {expected_host}) |
| 435 | |
| 436 | # shift the tokens back by one |
| 437 | for token, expected_host in zip(tokens, hosts): |
| 438 | replicas = token_map.get_replicas("ks", token_klass(token.value - 1)) |
| 439 | self.assertEqual(set(replicas), {expected_host}) |
| 440 | |
| 441 | # shift the tokens forward by one |
| 442 | for i, token in enumerate(tokens): |
| 443 | replicas = token_map.get_replicas("ks", token_klass(token.value + 1)) |
| 444 | expected_host = hosts[(i + 1) % len(hosts)] |
| 445 | self.assertEqual(set(replicas), {expected_host}) |
| 446 | |
| 447 | def test_murmur3_tokens(self): |
| 448 | self._get_replicas(Murmur3Token) |
no test coverage detected