mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-25 07:27:18 +01:00
Remove random ports and static ID
This commit is contained in:
parent
05a86f251f
commit
865fe73bfb
1 changed files with 55 additions and 51 deletions
|
@ -26,12 +26,12 @@ import java.io.IOException;
|
||||||
|
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import net.tomp2p.connection.Bindings;
|
import net.tomp2p.connection.Bindings;
|
||||||
import net.tomp2p.connection.ChannelClientConfiguration;
|
import net.tomp2p.connection.ChannelClientConfiguration;
|
||||||
import net.tomp2p.connection.Ports;
|
|
||||||
import net.tomp2p.connection.StandardProtocolFamily;
|
import net.tomp2p.connection.StandardProtocolFamily;
|
||||||
import net.tomp2p.dht.FutureGet;
|
import net.tomp2p.dht.FutureGet;
|
||||||
import net.tomp2p.dht.FuturePut;
|
import net.tomp2p.dht.FuturePut;
|
||||||
|
@ -84,7 +84,7 @@ public class TomP2PTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If you want to test in one specific connection mode define it directly, otherwise use UNKNOWN
|
// If you want to test in one specific connection mode define it directly, otherwise use UNKNOWN
|
||||||
private static final ConnectionType FORCED_CONNECTION_TYPE = ConnectionType.NAT;
|
private static final ConnectionType FORCED_CONNECTION_TYPE = ConnectionType.DIRECT;
|
||||||
|
|
||||||
// Typically you run the seed node in localhost to test direct connection.
|
// Typically you run the seed node in localhost to test direct connection.
|
||||||
// If you have a setup where you are not behind a router you can also use a WAN side seed node.
|
// If you have a setup where you are not behind a router you can also use a WAN side seed node.
|
||||||
|
@ -107,6 +107,7 @@ public class TomP2PTests {
|
||||||
// Use to stress tests by repeating them
|
// Use to stress tests by repeating them
|
||||||
private static final int STRESS_TEST_COUNT = 1;
|
private static final int STRESS_TEST_COUNT = 1;
|
||||||
|
|
||||||
|
private Peer peer;
|
||||||
private PeerDHT peer1DHT;
|
private PeerDHT peer1DHT;
|
||||||
private PeerDHT peer2DHT;
|
private PeerDHT peer2DHT;
|
||||||
private int client1Port;
|
private int client1Port;
|
||||||
|
@ -116,52 +117,66 @@ public class TomP2PTests {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
client1Port = getNewRandomPort();
|
client1Port = 7777;
|
||||||
client2Port = getNewRandomPort();
|
client2Port = 7778;
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void tearDown() {
|
public void tearDown() {
|
||||||
if (peer1DHT != null) {
|
if (peer1DHT != null) {
|
||||||
peer1DHT.shutdown().awaitUninterruptibly();
|
peer1DHT.shutdown().awaitUninterruptibly();
|
||||||
|
peer1DHT.shutdown().awaitListenersUninterruptibly();
|
||||||
}
|
}
|
||||||
if (peer2DHT != null) {
|
if (peer2DHT != null) {
|
||||||
peer2DHT.shutdown().awaitUninterruptibly();
|
peer2DHT.shutdown().awaitUninterruptibly();
|
||||||
|
peer2DHT.shutdown().awaitListenersUninterruptibly();
|
||||||
|
}
|
||||||
|
if (peer != null) {
|
||||||
|
peer.shutdown().awaitUninterruptibly();
|
||||||
|
peer.shutdown().awaitListenersUninterruptibly();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Repeat(STRESS_TEST_COUNT)
|
@Repeat(STRESS_TEST_COUNT)
|
||||||
public void bootstrapInUnknownMode() throws Exception {
|
public void bootstrapInUnknownMode() throws Exception {
|
||||||
if (FORCED_CONNECTION_TYPE == ConnectionType.UNKNOWN)
|
if (FORCED_CONNECTION_TYPE == ConnectionType.UNKNOWN) {
|
||||||
assertNotNull(bootstrapInUnknownMode("node_1", client1Port));
|
peer = bootstrapInUnknownMode(client1Port);
|
||||||
|
assertNotNull(peer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Repeat(STRESS_TEST_COUNT)
|
@Repeat(STRESS_TEST_COUNT)
|
||||||
public void testBootstrapDirectConnection() throws Exception {
|
public void testBootstrapDirectConnection() throws Exception {
|
||||||
if (FORCED_CONNECTION_TYPE == ConnectionType.DIRECT)
|
if (FORCED_CONNECTION_TYPE == ConnectionType.DIRECT) {
|
||||||
assertNotNull(bootstrapDirectConnection("node_1", client1Port));
|
peer = bootstrapDirectConnection(client1Port);
|
||||||
|
assertNotNull(peer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Repeat(STRESS_TEST_COUNT)
|
@Repeat(STRESS_TEST_COUNT)
|
||||||
public void testBootstrapWithPortForwarding() throws Exception {
|
public void testBootstrapWithPortForwarding() throws Exception {
|
||||||
if (FORCED_CONNECTION_TYPE == ConnectionType.NAT)
|
if (FORCED_CONNECTION_TYPE == ConnectionType.NAT) {
|
||||||
assertNotNull(bootstrapWithPortForwarding("node_1", client1Port));
|
peer = bootstrapWithPortForwarding(client1Port);
|
||||||
|
assertNotNull(peer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Repeat(STRESS_TEST_COUNT)
|
@Repeat(STRESS_TEST_COUNT)
|
||||||
public void testBootstrapInRelayMode() throws Exception {
|
public void testBootstrapInRelayMode() throws Exception {
|
||||||
if (FORCED_CONNECTION_TYPE == ConnectionType.RELAY)
|
if (FORCED_CONNECTION_TYPE == ConnectionType.RELAY) {
|
||||||
assertNotNull(bootstrapInRelayMode("node_1", client1Port));
|
peer = bootstrapInRelayMode(client1Port);
|
||||||
|
assertNotNull(peer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Repeat(STRESS_TEST_COUNT)
|
@Repeat(STRESS_TEST_COUNT)
|
||||||
public void testPut() throws Exception {
|
public void testPut() throws Exception {
|
||||||
peer1DHT = getDHTPeer("node_1", client1Port);
|
peer1DHT = getDHTPeer(client1Port);
|
||||||
FuturePut futurePut = peer1DHT.put(Number160.createHash("key")).data(new Data("hallo")).start();
|
FuturePut futurePut = peer1DHT.put(Number160.createHash("key")).data(new Data("hallo")).start();
|
||||||
futurePut.awaitUninterruptibly();
|
futurePut.awaitUninterruptibly();
|
||||||
assertTrue(futurePut.isSuccess());
|
assertTrue(futurePut.isSuccess());
|
||||||
|
@ -170,12 +185,12 @@ public class TomP2PTests {
|
||||||
@Test
|
@Test
|
||||||
@Repeat(STRESS_TEST_COUNT)
|
@Repeat(STRESS_TEST_COUNT)
|
||||||
public void testPutGet() throws Exception {
|
public void testPutGet() throws Exception {
|
||||||
peer1DHT = getDHTPeer("node_1", client1Port);
|
peer1DHT = getDHTPeer(client1Port);
|
||||||
FuturePut futurePut = peer1DHT.put(Number160.createHash("key")).data(new Data("hallo")).start();
|
FuturePut futurePut = peer1DHT.put(Number160.createHash("key")).data(new Data("hallo")).start();
|
||||||
futurePut.awaitUninterruptibly();
|
futurePut.awaitUninterruptibly();
|
||||||
assertTrue(futurePut.isSuccess());
|
assertTrue(futurePut.isSuccess());
|
||||||
|
|
||||||
peer2DHT = getDHTPeer("node_2", client2Port);
|
peer2DHT = getDHTPeer(client2Port);
|
||||||
FutureGet futureGet = peer2DHT.get(Number160.createHash("key")).start();
|
FutureGet futureGet = peer2DHT.get(Number160.createHash("key")).start();
|
||||||
futureGet.awaitUninterruptibly();
|
futureGet.awaitUninterruptibly();
|
||||||
assertTrue(futureGet.isSuccess());
|
assertTrue(futureGet.isSuccess());
|
||||||
|
@ -185,7 +200,7 @@ public class TomP2PTests {
|
||||||
@Test
|
@Test
|
||||||
@Repeat(STRESS_TEST_COUNT)
|
@Repeat(STRESS_TEST_COUNT)
|
||||||
public void testAdd() throws Exception {
|
public void testAdd() throws Exception {
|
||||||
peer1DHT = getDHTPeer("node_1", client1Port);
|
peer1DHT = getDHTPeer(client1Port);
|
||||||
FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1")).start();
|
FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1")).start();
|
||||||
futurePut1.awaitUninterruptibly();
|
futurePut1.awaitUninterruptibly();
|
||||||
assertTrue(futurePut1.isSuccess());
|
assertTrue(futurePut1.isSuccess());
|
||||||
|
@ -194,7 +209,7 @@ public class TomP2PTests {
|
||||||
@Test
|
@Test
|
||||||
@Repeat(STRESS_TEST_COUNT)
|
@Repeat(STRESS_TEST_COUNT)
|
||||||
public void testAddGet() throws Exception {
|
public void testAddGet() throws Exception {
|
||||||
peer1DHT = getDHTPeer("node_1", client1Port);
|
peer1DHT = getDHTPeer(client1Port);
|
||||||
FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1"))
|
FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1"))
|
||||||
.start();
|
.start();
|
||||||
futurePut1.awaitUninterruptibly();
|
futurePut1.awaitUninterruptibly();
|
||||||
|
@ -206,7 +221,7 @@ public class TomP2PTests {
|
||||||
assertTrue(futurePut2.isSuccess());
|
assertTrue(futurePut2.isSuccess());
|
||||||
|
|
||||||
|
|
||||||
peer2DHT = getDHTPeer("node_2", client2Port);
|
peer2DHT = getDHTPeer(client2Port);
|
||||||
FutureGet futureGet = peer2DHT.get(Number160.createHash("locationKey")).all().start();
|
FutureGet futureGet = peer2DHT.get(Number160.createHash("locationKey")).all().start();
|
||||||
futureGet.awaitUninterruptibly();
|
futureGet.awaitUninterruptibly();
|
||||||
assertTrue(futureGet.isSuccess());
|
assertTrue(futureGet.isSuccess());
|
||||||
|
@ -219,7 +234,7 @@ public class TomP2PTests {
|
||||||
@Test
|
@Test
|
||||||
@Repeat(STRESS_TEST_COUNT)
|
@Repeat(STRESS_TEST_COUNT)
|
||||||
public void testAddRemove() throws Exception {
|
public void testAddRemove() throws Exception {
|
||||||
peer1DHT = getDHTPeer("node_1", client1Port);
|
peer1DHT = getDHTPeer(client1Port);
|
||||||
FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1")).start();
|
FuturePut futurePut1 = peer1DHT.add(Number160.createHash("locationKey")).data(new Data("hallo1")).start();
|
||||||
futurePut1.awaitUninterruptibly();
|
futurePut1.awaitUninterruptibly();
|
||||||
futurePut1.awaitListenersUninterruptibly();
|
futurePut1.awaitListenersUninterruptibly();
|
||||||
|
@ -231,7 +246,7 @@ public class TomP2PTests {
|
||||||
assertTrue(futurePut2.isSuccess());
|
assertTrue(futurePut2.isSuccess());
|
||||||
|
|
||||||
|
|
||||||
peer2DHT = getDHTPeer("node_2", client2Port);
|
peer2DHT = getDHTPeer(client2Port);
|
||||||
Number160 contentKey = new Data("hallo1").hash();
|
Number160 contentKey = new Data("hallo1").hash();
|
||||||
FutureRemove futureRemove = peer2DHT.remove(Number160.createHash("locationKey")).contentKey(contentKey).start();
|
FutureRemove futureRemove = peer2DHT.remove(Number160.createHash("locationKey")).contentKey(contentKey).start();
|
||||||
futureRemove.awaitUninterruptibly();
|
futureRemove.awaitUninterruptibly();
|
||||||
|
@ -262,8 +277,8 @@ public class TomP2PTests {
|
||||||
@Repeat(STRESS_TEST_COUNT)
|
@Repeat(STRESS_TEST_COUNT)
|
||||||
public void testSendDirectBetweenLocalPeers() throws Exception {
|
public void testSendDirectBetweenLocalPeers() throws Exception {
|
||||||
if (FORCED_CONNECTION_TYPE != ConnectionType.NAT && resolvedConnectionType != ConnectionType.RELAY) {
|
if (FORCED_CONNECTION_TYPE != ConnectionType.NAT && resolvedConnectionType != ConnectionType.RELAY) {
|
||||||
peer1DHT = getDHTPeer("node_1", client1Port);
|
peer1DHT = getDHTPeer(client1Port);
|
||||||
peer2DHT = getDHTPeer("node_2", client2Port);
|
peer2DHT = getDHTPeer(client2Port);
|
||||||
|
|
||||||
final CountDownLatch countDownLatch = new CountDownLatch(1);
|
final CountDownLatch countDownLatch = new CountDownLatch(1);
|
||||||
|
|
||||||
|
@ -295,7 +310,7 @@ public class TomP2PTests {
|
||||||
@Test
|
@Test
|
||||||
@Repeat(STRESS_TEST_COUNT)
|
@Repeat(STRESS_TEST_COUNT)
|
||||||
public void testSendDirectToSeedNode() throws Exception {
|
public void testSendDirectToSeedNode() throws Exception {
|
||||||
peer1DHT = getDHTPeer("node_1", client1Port);
|
peer1DHT = getDHTPeer(client1Port);
|
||||||
FuturePeerConnection futurePeerConnection =
|
FuturePeerConnection futurePeerConnection =
|
||||||
peer1DHT.peer().createPeerConnection(BOOTSTRAP_NODE_ADDRESS, 500);
|
peer1DHT.peer().createPeerConnection(BOOTSTRAP_NODE_ADDRESS, 500);
|
||||||
FutureDirect futureDirect = peer1DHT.peer().sendDirect(futurePeerConnection).object("hallo").start();
|
FutureDirect futureDirect = peer1DHT.peer().sendDirect(futurePeerConnection).object("hallo").start();
|
||||||
|
@ -304,11 +319,10 @@ public class TomP2PTests {
|
||||||
assertEquals("pong", futureDirect.object());
|
assertEquals("pong", futureDirect.object());
|
||||||
}
|
}
|
||||||
|
|
||||||
private Peer bootstrapDirectConnection(String clientId, int clientPort) {
|
private Peer bootstrapDirectConnection(int clientPort) {
|
||||||
final String id = clientId + clientPort;
|
|
||||||
Peer peer = null;
|
Peer peer = null;
|
||||||
try {
|
try {
|
||||||
Number160 peerId = Number160.createHash(clientId);
|
Number160 peerId = new Number160(new Random(43L));
|
||||||
PeerMapConfiguration pmc = new PeerMapConfiguration(peerId).peerNoVerification();
|
PeerMapConfiguration pmc = new PeerMapConfiguration(peerId).peerNoVerification();
|
||||||
PeerMap pm = new PeerMap(pmc);
|
PeerMap pm = new PeerMap(pmc);
|
||||||
ChannelClientConfiguration cc = PeerBuilder.createDefaultChannelClientConfiguration();
|
ChannelClientConfiguration cc = PeerBuilder.createDefaultChannelClientConfiguration();
|
||||||
|
@ -347,11 +361,11 @@ public class TomP2PTests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Peer bootstrapWithPortForwarding(String clientId, int clientPort) {
|
private Peer bootstrapWithPortForwarding(int clientPort) {
|
||||||
final String id = clientId + clientPort;
|
Number160 peerId = new Number160(new Random(43L));
|
||||||
Peer peer = null;
|
Peer peer = null;
|
||||||
try {
|
try {
|
||||||
peer = new PeerBuilder(Number160.createHash(clientId)).bindings(getBindings()).behindFirewall()
|
peer = new PeerBuilder(peerId).bindings(getBindings()).behindFirewall()
|
||||||
.ports(clientPort).start();
|
.ports(clientPort).start();
|
||||||
|
|
||||||
PeerNAT peerNAT = new PeerBuilderNAT(peer).start();
|
PeerNAT peerNAT = new PeerBuilderNAT(peer).start();
|
||||||
|
@ -401,12 +415,11 @@ public class TomP2PTests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Peer bootstrapInRelayMode(String clientId, int clientPort) {
|
private Peer bootstrapInRelayMode(int clientPort) {
|
||||||
final String id = clientId + clientPort;
|
Number160 peerId = new Number160(new Random(43L));
|
||||||
|
|
||||||
Peer peer = null;
|
Peer peer = null;
|
||||||
try {
|
try {
|
||||||
peer = new PeerBuilder(Number160.createHash(clientId)).bindings(getBindings()).behindFirewall()
|
peer = new PeerBuilder(peerId).bindings(getBindings()).behindFirewall()
|
||||||
.ports(clientPort).start();
|
.ports(clientPort).start();
|
||||||
|
|
||||||
PeerNAT peerNAT = new PeerBuilderNAT(peer).start();
|
PeerNAT peerNAT = new PeerBuilderNAT(peer).start();
|
||||||
|
@ -444,19 +457,19 @@ public class TomP2PTests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Peer bootstrapInUnknownMode(String clientId, int clientPort) {
|
private Peer bootstrapInUnknownMode(int clientPort) {
|
||||||
resolvedConnectionType = ConnectionType.DIRECT;
|
resolvedConnectionType = ConnectionType.DIRECT;
|
||||||
Peer peer = bootstrapDirectConnection(clientId, clientPort);
|
Peer peer = bootstrapDirectConnection(clientPort);
|
||||||
if (peer != null)
|
if (peer != null)
|
||||||
return peer;
|
return peer;
|
||||||
|
|
||||||
resolvedConnectionType = ConnectionType.NAT;
|
resolvedConnectionType = ConnectionType.NAT;
|
||||||
peer = bootstrapWithPortForwarding(clientId, clientPort);
|
peer = bootstrapWithPortForwarding(clientPort);
|
||||||
if (peer != null)
|
if (peer != null)
|
||||||
return peer;
|
return peer;
|
||||||
|
|
||||||
resolvedConnectionType = ConnectionType.RELAY;
|
resolvedConnectionType = ConnectionType.RELAY;
|
||||||
peer = bootstrapInRelayMode(clientId, clientPort);
|
peer = bootstrapInRelayMode(clientPort);
|
||||||
if (peer != null)
|
if (peer != null)
|
||||||
return peer;
|
return peer;
|
||||||
else
|
else
|
||||||
|
@ -466,19 +479,19 @@ public class TomP2PTests {
|
||||||
return peer;
|
return peer;
|
||||||
}
|
}
|
||||||
|
|
||||||
private PeerDHT getDHTPeer(String clientId, int clientPort) {
|
private PeerDHT getDHTPeer(int clientPort) {
|
||||||
Peer peer;
|
Peer peer;
|
||||||
if (FORCED_CONNECTION_TYPE == ConnectionType.DIRECT) {
|
if (FORCED_CONNECTION_TYPE == ConnectionType.DIRECT) {
|
||||||
peer = bootstrapDirectConnection(clientId, clientPort);
|
peer = bootstrapDirectConnection(clientPort);
|
||||||
}
|
}
|
||||||
else if (FORCED_CONNECTION_TYPE == ConnectionType.NAT) {
|
else if (FORCED_CONNECTION_TYPE == ConnectionType.NAT) {
|
||||||
peer = bootstrapWithPortForwarding(clientId, clientPort);
|
peer = bootstrapWithPortForwarding(clientPort);
|
||||||
}
|
}
|
||||||
else if (FORCED_CONNECTION_TYPE == ConnectionType.RELAY) {
|
else if (FORCED_CONNECTION_TYPE == ConnectionType.RELAY) {
|
||||||
peer = bootstrapInRelayMode(clientId, clientPort);
|
peer = bootstrapInRelayMode(clientPort);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
peer = bootstrapInUnknownMode(clientId, clientPort);
|
peer = bootstrapInUnknownMode(clientPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (peer == null)
|
if (peer == null)
|
||||||
|
@ -490,15 +503,6 @@ public class TomP2PTests {
|
||||||
return new PeerBuilderDHT(peer).start();
|
return new PeerBuilderDHT(peer).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getNewRandomPort() {
|
|
||||||
// new Ports().tcpPort() returns a random port
|
|
||||||
int newPort = new Ports().tcpPort();
|
|
||||||
while (newPort == client1Port || newPort == client2Port)
|
|
||||||
newPort = new Ports().tcpPort();
|
|
||||||
|
|
||||||
return newPort;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Bindings getBindings() {
|
private Bindings getBindings() {
|
||||||
Bindings bindings = new Bindings();
|
Bindings bindings = new Bindings();
|
||||||
bindings.addProtocol(StandardProtocolFamily.INET);
|
bindings.addProtocol(StandardProtocolFamily.INET);
|
||||||
|
|
Loading…
Add table
Reference in a new issue