403Webshell
Server IP : 123.56.80.60  /  Your IP : 216.73.216.78
Web Server : Apache/2.4.54 (Win32) OpenSSL/1.1.1s PHP/7.4.33 mod_fcgid/2.3.10-dev
System : Windows NT iZhx3sob14hnz7Z 10.0 build 14393 (Windows Server 2016) i586
User : SYSTEM ( 0)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Program Files/python/Lib/site-packages/pymemcache/test/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Program Files/python/Lib/site-packages/pymemcache/test/test_rendezvous.py
from pymemcache.client.rendezvous import RendezvousHash
import pytest


@pytest.mark.unit()
def test_init_no_options():
    rendezvous = RendezvousHash()
    assert 0 == len(rendezvous.nodes)
    assert 1361238019 == rendezvous.hash_function('6666')


@pytest.mark.unit()
def test_init():
    nodes = ['0', '1', '2']
    rendezvous = RendezvousHash(nodes=nodes)
    assert 3 == len(rendezvous.nodes)
    assert 1361238019 == rendezvous.hash_function('6666')


@pytest.mark.unit()
def test_seed():
    rendezvous = RendezvousHash(seed=10)
    assert 2981722772 == rendezvous.hash_function('6666')


@pytest.mark.unit()
def test_add_node():
    rendezvous = RendezvousHash()
    rendezvous.add_node('1')

    assert 1 == len(rendezvous.nodes)
    rendezvous.add_node('1')

    assert 1 == len(rendezvous.nodes)
    rendezvous.add_node('2')

    assert 2 == len(rendezvous.nodes)
    rendezvous.add_node('1')

    assert 2 == len(rendezvous.nodes)


@pytest.mark.unit()
def test_remove_node():
    nodes = ['0', '1', '2']
    rendezvous = RendezvousHash(nodes=nodes)
    rendezvous.remove_node('2')

    assert 2 == len(rendezvous.nodes)

    with pytest.raises(ValueError):
        rendezvous.remove_node('2')

    assert 2 == len(rendezvous.nodes)

    rendezvous.remove_node('1')
    assert 1 == len(rendezvous.nodes)

    rendezvous.remove_node('0')
    assert 0 == len(rendezvous.nodes)


@pytest.mark.unit()
def test_get_node():
    nodes = ['0', '1', '2']
    rendezvous = RendezvousHash(nodes=nodes)
    assert '0' == rendezvous.get_node('ok')
    assert '1' == rendezvous.get_node('mykey')
    assert '2' == rendezvous.get_node('wat')


@pytest.mark.unit()
def test_get_node_after_removal():
    nodes = ['0', '1', '2']
    rendezvous = RendezvousHash(nodes=nodes)
    rendezvous.remove_node('1')

    assert '0' == rendezvous.get_node('ok')
    assert '0' == rendezvous.get_node('mykey')
    assert '2' == rendezvous.get_node('wat')


@pytest.mark.unit()
def test_get_node_after_addition():
    nodes = ['0', '1', '2']
    rendezvous = RendezvousHash(nodes=nodes)
    assert '0' == rendezvous.get_node('ok')
    assert '1' == rendezvous.get_node('mykey')
    assert '2' == rendezvous.get_node('wat')
    assert '2' == rendezvous.get_node('lol')
    rendezvous.add_node('3')

    assert '0' == rendezvous.get_node('ok')
    assert '1' == rendezvous.get_node('mykey')
    assert '2' == rendezvous.get_node('wat')
    assert '3' == rendezvous.get_node('lol')


@pytest.mark.unit()
def test_grow():
    rendezvous = RendezvousHash()

    placements = {}

    for i in range(10):
        rendezvous.add_node(str(i))
        placements[str(i)] = []

    for i in range(1000):
        node = rendezvous.get_node(str(i))
        placements[node].append(i)

    new_placements = {}

    for i in range(20):
        rendezvous.add_node(str(i))
        new_placements[str(i)] = []

    for i in range(1000):
        node = rendezvous.get_node(str(i))
        new_placements[node].append(i)

    keys = [k for sublist in placements.values() for k in sublist]
    new_keys = [k for sublist in new_placements.values() for k in sublist]
    assert sorted(keys) == sorted(new_keys)

    added = 0
    removed = 0

    for node, assignments in new_placements.items():
        after = set(assignments)
        before = set(placements.get(node, []))
        removed += len(before.difference(after))
        added += len(after.difference(before))

    assert added == removed
    assert 1062 == (added + removed)


@pytest.mark.unit()
def test_shrink():
    rendezvous = RendezvousHash()

    placements = {}
    for i in range(10):
        rendezvous.add_node(str(i))
        placements[str(i)] = []

    for i in range(1000):
        node = rendezvous.get_node(str(i))
        placements[node].append(i)

    rendezvous.remove_node('9')
    new_placements = {}
    for i in range(9):
        new_placements[str(i)] = []

    for i in range(1000):
        node = rendezvous.get_node(str(i))
        new_placements[node].append(i)

    keys = [k for sublist in placements.values() for k in sublist]
    new_keys = [k for sublist in new_placements.values() for k in sublist]
    assert sorted(keys) == sorted(new_keys)

    added = 0
    removed = 0
    for node, assignments in placements.items():
        after = set(assignments)
        before = set(new_placements.get(node, []))
        removed += len(before.difference(after))
        added += len(after.difference(before))

    assert added == removed
    assert 202 == (added + removed)


def collide(key, seed):
    return 1337


@pytest.mark.unit()
def test_rendezvous_collision():
    nodes = ['c', 'b', 'a']
    rendezvous = RendezvousHash(nodes, hash_function=collide)

    for i in range(1000):
        assert 'c' == rendezvous.get_node(i)


@pytest.mark.unit()
def test_rendezvous_names():
    nodes = [1, 2, 3, 'a', 'b', 'lol.wat.com']
    rendezvous = RendezvousHash(nodes, hash_function=collide)

    for i in range(10):
        assert 'lol.wat.com' == rendezvous.get_node(i)

    nodes = [1, 'a', '0']
    rendezvous = RendezvousHash(nodes, hash_function=collide)

    for i in range(10):
        assert 'a' == rendezvous.get_node(i)

Youez - 2016 - github.com/yon3zu
LinuXploit