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()