Ejemplo n.º 1
0
    def test_hashring2(self):
        memcache_servers1 = [
            '192.168.0.246:11212', '192.168.0.247:11212',
            '192.168.0.249:11212', '192.168.0.250:11212',
            '192.168.0.251:11212', '192.168.0.252:11212',
            '192.168.0.253:11212', '192.168.0.254:11212',
            '192.168.0.255:11212', '192.168.0.256:11212'
        ]

        ring1 = HashRing(memcache_servers1)
        my_key = "zhanchenjinssssss"
        ring1.get_node("aaaa")
        my_value1 = ring1.get_node(my_key)

        memcache_servers2 = [
            '192.168.0.246:11212', '192.168.0.247:11212',
            '192.168.0.249:11212', '192.168.0.250:11212',
            '192.168.0.251:11212', '192.168.0.252:11212',
            '192.168.0.253:11212', '192.168.0.254:11212',
            '192.168.0.255:11212', '192.168.0.256:11212'
        ]

        ring2 = HashRing(memcache_servers2)
        ring2.get_node("aaaa")
        my_value2 = ring2.get_node(my_key)
        self.assertTrue(my_value1 == my_value2)
Ejemplo n.º 2
0
    def test_hashring_self_next_node(self):
        """
    判断是否有屏蔽到自己的下一个节点
        """

        memcache_servers = ['192.168.0.246:11212']

        ring = HashRing(memcache_servers, replicas=1)
        test_str = random_str()

        select_node = ring.get_node(test_str)
        next_nodes = ring.next_nodes(select_node)
        self.assertTrue(not next_nodes)
Ejemplo n.º 3
0
    def test_hashring1(self):
        memcache_servers = [
            '192.168.0.246:11212', '192.168.0.247:11212', '192.168.0.249:11212'
        ]

        ring = HashRing(memcache_servers)
        my_key = "zhanchenjinssssss"
        self.assertTrue(
            ring.get_node(my_key) == ring.get_node(my_key) == ring.get_node(
                my_key) == ring.get_node(my_key))

        my_key = "gggggggggggggg"
        self.assertTrue(
            ring.get_node(my_key) == ring.get_node(my_key) == ring.get_node(
                my_key) == ring.get_node(my_key))
Ejemplo n.º 4
0
    def test_hashring_has_node(self):
        """
    判断是否有节点
        """

        memcache_servers = ['192.168.0.246:11212']

        ring = HashRing(memcache_servers, replicas=1)
        self.assertTrue(ring.has_node('192.168.0.246:11212'))

        new_node = '192.168.0.247:11212'
        ring.add_node(new_node)
        self.assertTrue(ring.has_node(new_node))

        ilexist_node = '192.168.0.248:11212'
        self.assertTrue(not ring.has_node(ilexist_node))
Ejemplo n.º 5
0
    def test_hashring_next_nodes(self):
        """
    判断某个节点删除以后,HashRing给某个相同字符串的定位节点是否和HashRing的next_nodes函数取得的节点一致
        """

        memcache_servers = [
            '192.168.0.246:11212', '192.168.0.247:11212',
            '192.168.0.248:11212', '192.168.0.249:11212'
        ]

        text_cont = 30
        for i in xrange(text_cont):
            ring = HashRing(memcache_servers, replicas=1)

            test_str = random_str(i)

            select_node = ring.get_node(test_str)
            next_nodes = ring.next_nodes(select_node)
            ring.remove_node(select_node)
            reselect_node = ring.get_node(test_str)
            self.assertTrue(reselect_node in next_nodes)
Ejemplo n.º 6
0
 def __init__(self):
     # 虚拟节点必须只有1个,如果多个的话,虽然增加了分布式,但是同时该节点故障的话,也影响多个虚拟节点,进而影响多个实体节点的数据更新
     self.__hash_ring = HashRing(replicas=1)
Ejemplo n.º 7
0
 def test_hashring_none(self):
     ring1 = HashRing([])
     my_key = "zhanchenjinssssss"
     self.assertTrue(ring1.get_node(my_key) == None)