Beispiel #1
0
    def ring_fast():
        r = HashRing()
        nodes = []
        for i in range(num_nodes):
            nodes.append(HashRingNode(b'test-%i' % i, num_replicas=512))

        r.add_nodes(nodes)
Beispiel #2
0
    def ring_slow():
        r = HashRing()
        nodes = []
        for i in range(num_nodes):
            r.add_node(b'test-%i' % i, num_replicas=512)

        r.add_nodes(nodes)
Beispiel #3
0
def test_ring_find_nodes(benchmark, num_nodes):
    r = HashRing()
    nodes = []
    for i in range(num_nodes):
        r.add_node(b'test-%i' % i, num_replicas=512)

    r.add_nodes(nodes)

    def ring_lookup():
        return r.find_nodes(b'hello', 3)

    assert benchmark(ring_lookup) == r.find_nodes(b'hello', 3)
def test_hash_ring_stress_fast():
    replica_sizes = [2**i for i in range(10)]

    ring = HashRing()
    nodes = []
    total_items = 0
    for i in range(20):
        name = b'test-%i' % i
        num_replicas = replica_sizes[hash(name) % len(replica_sizes)]
        nodes.append(HashRingNode(name=name, num_replicas=num_replicas))
        total_items += num_replicas

    ring.add_nodes(nodes)
    assert ring.get_num_items() == total_items
    random.shuffle(nodes)
    for node in nodes:
        assert ring.remove_node(node.name)
        total_items -= node.num_replicas
        assert ring.get_num_items() == total_items

    assert total_items == 0
def gen_hash_ring_fast(nodes):
    ring = HashRing()
    ring.add_nodes([n[0] for n in nodes])
    return ring