Пример #1
0
 def test_count_targets(self):
     c = chash.CHash()
     self.failUnlessEqual(c.count_targets(), 0)
     self.failUnlessEqual(c.add_target("192.168.0.1"), None)
     self.failUnlessEqual(c.count_targets(), 1)
     self.failUnlessEqual(c.add_target("192.168.0.2"), None)
     self.failUnlessEqual(c.count_targets(), 2)
Пример #2
0
 def test_clear_targets(self):
     c = chash.CHash()
     c.add_target("192.168.0.1")
     c.add_target("192.168.0.2")
     c.add_target("192.168.0.3")
     self.failUnlessEqual(c.count_targets(), 3)
     self.failUnlessEqual(c.clear_targets(), None)
     self.failUnlessEqual(c.count_targets(), 0)
Пример #3
0
    def test_serialize_file(self):
        csf = "test.cs"

        c = chash.CHash()
        c.add_target("192.168.0.1")
        c.add_target("192.168.0.2")
        c.add_target("192.168.0.3")
        c.add_target("192.168.0.4")
        cs = c.serialize_to_file(csf)
        self.failUnlessEqual(os.path.exists(csf), True)

        c2 = chash.CHash()
        c2.unserialize_from_file(csf)
        os.remove(csf)
        self.failUnlessEqual(c2.count_targets(), 4)
        self.failUnlessEqual(c2.lookup_balance("1"), "192.168.0.1")
        self.failUnlessEqual(c2.lookup_balance("2"), "192.168.0.1")
        self.failUnlessEqual(c2.lookup_balance("3"), "192.168.0.4")
        self.failUnlessEqual(c2.lookup_balance("4"), "192.168.0.4")
Пример #4
0
    def test_serialize(self):
        c = chash.CHash()
        c.add_target("192.168.0.1")
        c.add_target("192.168.0.2")
        c.add_target("192.168.0.3")
        c.add_target("192.168.0.4")
        cs = c.serialize()

        self.assertEqual(len(cs), 3138)
        self.assertEqual(
            md5(cs).hexdigest(), '975639a999ade73bd4fc64f3486ea093')

        c2 = chash.CHash()
        c2.unserialize(cs)
        self.failUnlessEqual(c2.count_targets(), 4)
        self.failUnlessEqual(c2.lookup_balance("1"), "192.168.0.1")
        self.failUnlessEqual(c2.lookup_balance("2"), "192.168.0.1")
        self.failUnlessEqual(c2.lookup_balance("3"), "192.168.0.4")
        self.failUnlessEqual(c2.lookup_balance("4"), "192.168.0.4")
Пример #5
0
    def test_lookup_balance(self):
        c = chash.CHash()
        c.add_target("192.168.0.1")
        c.add_target("192.168.0.2")
        c.add_target("192.168.0.3")
        c.add_target("192.168.0.4")

        self.failUnlessEqual(c.lookup_balance("1"), "192.168.0.1")
        # FIXME
        #        self.failUnlessEqual(c.lookup_balance("1", 1), "192.168.0.1")
        #        self.failUnlessEqual(c.lookup_balance("1", 2), "192.168.0.3")
        #        self.failUnlessEqual(c.lookup_balance("1", 3), "192.168.0.2")
        self.failUnlessEqual(c.lookup_balance("2"), "192.168.0.1")
        self.failUnlessEqual(c.lookup_balance("3"), "192.168.0.4")
        self.failUnlessEqual(c.lookup_balance("4"), "192.168.0.4")
Пример #6
0
    def test_lookup_list(self):
        c = chash.CHash()
        c.add_target("192.168.0.1")
        c.add_target("192.168.0.2")
        c.add_target("192.168.0.3")
        c.add_target("192.168.0.4")

        self.failUnlessEqual(c.lookup_list("1"), ["192.168.0.1"])
        self.failUnlessEqual(c.lookup_list("1", 1), ["192.168.0.1"])
        self.failUnlessEqual(c.lookup_list("1", 2),
                             ["192.168.0.1", "192.168.0.3"])
        self.failUnlessEqual(c.lookup_list("1", 3),
                             ["192.168.0.1", "192.168.0.3", "192.168.0.2"])
        self.failUnlessEqual(c.lookup_list("2"), ["192.168.0.1"])
        self.failUnlessEqual(c.lookup_list("3"), ["192.168.0.4"])
        self.failUnlessEqual(c.lookup_list("4"), ["192.168.0.4"])
Пример #7
0
 def test_remove_target(self):
     c = chash.CHash()
     c.add_target("192.168.0.1")
     c.add_target("192.168.0.2")
     c.add_target("192.168.0.3")
     self.failUnlessEqual(c.count_targets(), 3)
     self.failUnlessEqual(c.remove_target("192.168.0.1"), None)
     self.failUnlessEqual(c.count_targets(), 2)
     self.failUnlessRaises(chash.CHashError, c.remove_target, "192.168.0.1")
     self.failUnlessEqual(c.count_targets(), 2)
     self.failUnlessEqual(c.remove_target("192.168.0.2"), None)
     self.failUnlessEqual(c.count_targets(), 1)
     self.failUnlessRaises(chash.CHashError, c.remove_target, "192.168.0.2")
     self.failUnlessEqual(c.count_targets(), 1)
     self.failUnlessEqual(c.remove_target("192.168.0.3"), None)
     self.failUnlessEqual(c.count_targets(), 0)
Пример #8
0
    def test_set_targets(self):
        c = chash.CHash()
        self.failUnlessEqual(
            c.set_targets({
                "192.168.0.1": 2,
                "192.168.0.2": 2,
                "192.168.0.3": 2,
            }), 3)
        self.failUnlessEqual(c.count_targets(), 3)

        self.failUnlessRaises(TypeError, c.set_targets, "9")

        self.failUnlessRaises(TypeError, c.set_targets, {
            3: 2,
            "192.168.0.2": 2,
            "192.168.0.3": 2,
        })
Пример #9
0
    def test_usage(self):
        c = chash.CHash()
        c.add_target("192.168.0.1")
        c.add_target("192.168.0.2")
        self.failUnlessEqual(c.lookup_balance("1"), "192.168.0.1")

        c.add_target("192.168.0.3")
        self.failUnlessEqual(c.lookup_balance("9"), "192.168.0.3")

        c.remove_target("192.168.0.3")
        self.failUnlessEqual(c.lookup_balance("9"), "192.168.0.1")

        c.remove_target("192.168.0.1")
        self.failUnlessEqual(c.lookup_balance("9"), "192.168.0.2")

        c.remove_target("192.168.0.2")
        self.failUnlessRaises(chash.CHashError, c.lookup_balance, "9")

        c.add_target("192.168.0.2")
        c.add_target("192.168.0.1")
        self.failUnlessEqual(c.lookup_balance("9"), "192.168.0.1")