mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-07-26 16:35:18 -04:00
Add bootstrapping methods
This commit is contained in:
parent
568e2782dd
commit
58da80ca2d
1 changed files with 56 additions and 4 deletions
|
@ -30,8 +30,6 @@ import net.tomp2p.dht.FuturePut;
|
||||||
import net.tomp2p.dht.FutureRemove;
|
import net.tomp2p.dht.FutureRemove;
|
||||||
import net.tomp2p.dht.PeerBuilderDHT;
|
import net.tomp2p.dht.PeerBuilderDHT;
|
||||||
import net.tomp2p.dht.PeerDHT;
|
import net.tomp2p.dht.PeerDHT;
|
||||||
import net.tomp2p.dht.StorageLayer;
|
|
||||||
import net.tomp2p.dht.StorageMemory;
|
|
||||||
import net.tomp2p.futures.FutureDirect;
|
import net.tomp2p.futures.FutureDirect;
|
||||||
import net.tomp2p.futures.FutureDiscover;
|
import net.tomp2p.futures.FutureDiscover;
|
||||||
import net.tomp2p.futures.FuturePeerConnection;
|
import net.tomp2p.futures.FuturePeerConnection;
|
||||||
|
@ -85,7 +83,7 @@ public class BasicUsecasesInWANTest {
|
||||||
|
|
||||||
// In port forwarding mode the isSuccess returns false, but the DHT operations succeeded.
|
// In port forwarding mode the isSuccess returns false, but the DHT operations succeeded.
|
||||||
// Needs investigation why.
|
// Needs investigation why.
|
||||||
private boolean ignoreSuccessTests = true;
|
private boolean ignoreSuccessTests = false;
|
||||||
|
|
||||||
// Don't create and bootstrap the nodes at every test but reuse already created ones.
|
// Don't create and bootstrap the nodes at every test but reuse already created ones.
|
||||||
private boolean cacheClients = true;
|
private boolean cacheClients = true;
|
||||||
|
@ -147,6 +145,8 @@ public class BasicUsecasesInWANTest {
|
||||||
futureGet.awaitUninterruptibly();
|
futureGet.awaitUninterruptibly();
|
||||||
if (!ignoreSuccessTests)
|
if (!ignoreSuccessTests)
|
||||||
assertTrue(futureGet.isSuccess());
|
assertTrue(futureGet.isSuccess());
|
||||||
|
log.debug("######## futureGet.data().toString()" + futureGet.data().toString());
|
||||||
|
log.debug("######## futureGet.data().object().toString()" + futureGet.data().object().toString());
|
||||||
assertEquals("hallo", futureGet.data().object());
|
assertEquals("hallo", futureGet.data().object());
|
||||||
if (!ignoreSuccessTests)
|
if (!ignoreSuccessTests)
|
||||||
assertTrue(futurePut.isSuccess());
|
assertTrue(futurePut.isSuccess());
|
||||||
|
@ -312,6 +312,58 @@ public class BasicUsecasesInWANTest {
|
||||||
// Utils
|
// Utils
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
private Peer bootstrapDirectConnection(String clientId, int clientPort, String serverId,
|
||||||
|
String serverIP, int serverPort) throws Exception {
|
||||||
|
Peer peer = new PeerBuilder(Number160.createHash(clientId)).ports(clientPort).behindFirewall().start();
|
||||||
|
|
||||||
|
PeerAddress masterNodeAddress = new PeerAddress(Number160.createHash(serverId), serverIP, serverPort,
|
||||||
|
serverPort);
|
||||||
|
FutureDiscover futureDiscover = peer.discover().peerAddress(masterNodeAddress).start();
|
||||||
|
futureDiscover.awaitUninterruptibly();
|
||||||
|
if (futureDiscover.isSuccess()) {
|
||||||
|
log.info("Discover with direct connection successful. Address = " + futureDiscover.peerAddress());
|
||||||
|
return peer;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
peer.shutdown().awaitUninterruptibly();
|
||||||
|
Assert.fail("Discover with direct connection failed " + futureDiscover);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Peer bootstrapWithPortForwarding(String clientId, int clientPort, String serverId,
|
||||||
|
String serverIP, int serverPort) throws Exception {
|
||||||
|
Peer peer = new PeerBuilder(Number160.createHash(clientId)).ports(clientPort).behindFirewall().start();
|
||||||
|
PeerNAT peerNAT = new PeerBuilderNAT(peer).start();
|
||||||
|
PeerAddress masterNodeAddress = new PeerAddress(Number160.createHash(serverId), serverIP, serverPort,
|
||||||
|
serverPort);
|
||||||
|
FutureDiscover futureDiscover = peer.discover().peerAddress(masterNodeAddress).start();
|
||||||
|
FutureNAT futureNAT = peerNAT.startSetupPortforwarding(futureDiscover);
|
||||||
|
futureNAT.awaitUninterruptibly();
|
||||||
|
if (futureNAT.isSuccess()) {
|
||||||
|
log.info("Automatic port forwarding is setup. Address = " +
|
||||||
|
futureNAT.peerAddress());
|
||||||
|
futureDiscover.awaitUninterruptibly();
|
||||||
|
if (futureDiscover.isSuccess()) {
|
||||||
|
log.info("Discover with automatic port forwarding successful. Address = " + futureDiscover
|
||||||
|
.peerAddress());
|
||||||
|
|
||||||
|
return peer;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
peer.shutdown().awaitUninterruptibly();
|
||||||
|
Assert.fail("Bootstrap with NAT after futureDiscover2 failed " + futureDiscover
|
||||||
|
.failedReason());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
log.error("Bootstrap with NAT after futureDiscover2 failed " + futureDiscover
|
||||||
|
.failedReason());
|
||||||
|
peer.shutdown().awaitUninterruptibly();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private PeerDHT startClient(String clientId, int clientPort) throws Exception {
|
private PeerDHT startClient(String clientId, int clientPort) throws Exception {
|
||||||
return startClient(clientId, clientPort, SERVER_ID, SERVER_IP, SERVER_PORT);
|
return startClient(clientId, clientPort, SERVER_ID, SERVER_IP, SERVER_PORT);
|
||||||
|
@ -328,7 +380,7 @@ public class BasicUsecasesInWANTest {
|
||||||
Peer peer = null;
|
Peer peer = null;
|
||||||
try {
|
try {
|
||||||
peer = new PeerBuilder(Number160.createHash(clientId)).ports(clientPort).behindFirewall().start();
|
peer = new PeerBuilder(Number160.createHash(clientId)).ports(clientPort).behindFirewall().start();
|
||||||
PeerDHT peerDHT = new PeerBuilderDHT(peer).storageLayer(new StorageLayer(new StorageMemory())).start();
|
PeerDHT peerDHT = new PeerBuilderDHT(peer).start();
|
||||||
|
|
||||||
PeerAddress masterNodeAddress = new PeerAddress(Number160.createHash(serverId), serverIP, serverPort,
|
PeerAddress masterNodeAddress = new PeerAddress(Number160.createHash(serverId), serverIP, serverPort,
|
||||||
serverPort);
|
serverPort);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue