From 98e21cdba0b45cca57ff2bf3ddda3f1a8c6f1342 Mon Sep 17 00:00:00 2001 From: Jack Robison <jackrobison@lbry.io> Date: Thu, 24 May 2018 12:57:20 -0400 Subject: [PATCH] test re-join dht --- .../functional/dht/test_contact_expiration.py | 24 ------- .../functional/dht/test_contact_rejoin.py | 70 +++++++++++++++++++ 2 files changed, 70 insertions(+), 24 deletions(-) create mode 100644 lbrynet/tests/functional/dht/test_contact_rejoin.py diff --git a/lbrynet/tests/functional/dht/test_contact_expiration.py b/lbrynet/tests/functional/dht/test_contact_expiration.py index f67b457bc..44d20d98c 100644 --- a/lbrynet/tests/functional/dht/test_contact_expiration.py +++ b/lbrynet/tests/functional/dht/test_contact_expiration.py @@ -39,27 +39,3 @@ class TestPeerExpiration(TestKademliaBase): self.assertTrue(len(get_nodes_with_stale_contacts()) == 0) self.verify_all_nodes_are_routable() self.verify_all_nodes_are_pingable() - - -class TestReJoinExpiredPeer(TestKademliaBase): - network_size = 40 - - @defer.inlineCallbacks - def test_re_join_expired_peer(self): - - removed_node = self.nodes[0] - self.nodes.remove(removed_node) - yield self.run_reactor(1, [removed_node.stop()]) - - # run the network for an hour, which should expire the removed node - for _ in range(60): - self.pump_clock(60) - self.verify_all_nodes_are_routable() - self.verify_all_nodes_are_pingable() - self.nodes.append(removed_node) - yield self.run_reactor( - 31, [removed_node.start([(seed_name, 4444) for seed_name in sorted(self.seed_dns.keys())])] - ) - self.pump_clock(901) - self.verify_all_nodes_are_routable() - self.verify_all_nodes_are_pingable() diff --git a/lbrynet/tests/functional/dht/test_contact_rejoin.py b/lbrynet/tests/functional/dht/test_contact_rejoin.py new file mode 100644 index 000000000..72cb939fc --- /dev/null +++ b/lbrynet/tests/functional/dht/test_contact_rejoin.py @@ -0,0 +1,70 @@ +import logging +from twisted.internet import defer +from dht_test_environment import TestKademliaBase + +log = logging.getLogger() + + +class TestReJoin(TestKademliaBase): + network_size = 40 + + @defer.inlineCallbacks + def test_re_join(self): + + removed_node = self.nodes[0] + self.nodes.remove(removed_node) + yield self.run_reactor(1, [removed_node.stop()]) + + # run the network for an hour, which should expire the removed node + self.pump_clock(3600) + self.verify_all_nodes_are_routable() + self.verify_all_nodes_are_pingable() + self.nodes.append(removed_node) + yield self.run_reactor( + 31, [removed_node.start([(seed_name, 4444) for seed_name in sorted(self.seed_dns.keys())])] + ) + self.pump_clock(901) + self.verify_all_nodes_are_routable() + self.verify_all_nodes_are_pingable() + + @defer.inlineCallbacks + def test_re_join_with_new_ip(self): + + removed_node = self.nodes[0] + self.nodes.remove(removed_node) + yield self.run_reactor(1, [removed_node.stop()]) + + # run the network for an hour, which should expire the removed node + for _ in range(60): + self.pump_clock(60) + self.verify_all_nodes_are_routable() + self.verify_all_nodes_are_pingable() + removed_node.externalIP = "10.43.43.43" + self.nodes.append(removed_node) + yield self.run_reactor( + 31, [removed_node.start([(seed_name, 4444) for seed_name in sorted(self.seed_dns.keys())])] + ) + self.pump_clock(901) + self.verify_all_nodes_are_routable() + self.verify_all_nodes_are_pingable() + + @defer.inlineCallbacks + def test_re_join_with_new_node_id(self): + + removed_node = self.nodes[0] + self.nodes.remove(removed_node) + yield self.run_reactor(1, [removed_node.stop()]) + + # run the network for an hour, which should expire the removed node + for _ in range(60): + self.pump_clock(60) + self.verify_all_nodes_are_routable() + self.verify_all_nodes_are_pingable() + removed_node.node_id = removed_node._generateID() + self.nodes.append(removed_node) + yield self.run_reactor( + 31, [removed_node.start([(seed_name, 4444) for seed_name in sorted(self.seed_dns.keys())])] + ) + self.pump_clock(901) + self.verify_all_nodes_are_routable() + self.verify_all_nodes_are_pingable()