Verified Commit ce9f6318 authored by Cecylia Bocovich's avatar Cecylia Bocovich 💬
Browse files

Remove bridge fingerprint from sortedKeys as well as map

parent d266794a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -187,6 +187,8 @@ class BridgeRing(object):
        pos = self.hmac(bridge.identity)
        if pos in self.bridges:
            del self.bridges[pos]
        if pos in self.sortedKeys:
            self.sortedKeys.remove(pos)

    def insert(self, bridge):
        """Add a **bridge** to this hashring.
+14 −0
Original line number Diff line number Diff line
@@ -87,6 +87,20 @@ class BridgeRingTests(unittest.TestCase):

        self.assertGreaterEqual(len(bridges), 1)

    def test_remove(self):
        """Remove should remove the bridge from the map and sortedKeys"""
        bridges = copy.deepcopy(util.generateFakeBridges())

        [self.ring.insert(bridge) for bridge in bridges]
        pos0 = self.ring.hmac(bridges[0].identity)
        pos1 = self.ring.hmac(bridges[1].identity)

        self.ring.remove(bridges[0])
        self.assertIn(pos1, self.ring.sortedKeys)
        self.assertNotIn(pos0, self.ring.sortedKeys)
        self.assertIn(pos1, self.ring.bridges)
        self.assertNotIn(pos0, self.ring.bridges)

    def test_clear(self):
        """Clear should get rid of all the inserted bridges."""
        self.addRandomBridges()