From 7eb9f344f41d3b0045a7cec04d2cb368edcf12a2 Mon Sep 17 00:00:00 2001 From: Victor Shyba <victor1984@riseup.net> Date: Fri, 28 Sep 2018 13:47:37 -0300 Subject: [PATCH] test recover from invalid tokens --- tests/functional/dht/test_store.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/functional/dht/test_store.py b/tests/functional/dht/test_store.py index f5dc8a648..2fabd05ab 100644 --- a/tests/functional/dht/test_store.py +++ b/tests/functional/dht/test_store.py @@ -13,6 +13,31 @@ log = logging.getLogger() class TestStoreExpiration(TestKademliaBase): network_size = 40 + @defer.inlineCallbacks + def test_nullify_token(self): + blob_hash = generate_id(1) + announcing_node = self.nodes[20] + # announce the blob + announce_d = announcing_node.announceHaveBlob(blob_hash) + self.pump_clock(5+1) + storing_node_ids = yield announce_d + self.assertEqual(len(storing_node_ids), 8) + + for node in set(self.nodes).union(set(self._seeds)): + # now, everyone has the wrong token + node.change_token() + node.change_token() + + announce_d = announcing_node.announceHaveBlob(blob_hash) + self.pump_clock(5+1) + storing_node_ids = yield announce_d + self.assertEqual(len(storing_node_ids), 0) # cant store, wrong tokens, but they get nullified + + announce_d = announcing_node.announceHaveBlob(blob_hash) + self.pump_clock(5+1) + storing_node_ids = yield announce_d + self.assertEqual(len(storing_node_ids), 8) # next attempt succeeds as it refreshes tokens + @defer.inlineCallbacks def test_store_and_expire(self): blob_hash = generate_id(1)