package net.jxse.configuration;
import org.junit.Rule;
import org.junit.rules.TemporaryFolder;
import net.jxta.platform.NetworkConfigurator;
import net.jxta.id.IDFactory;
import net.jxta.peer.PeerID;
import java.io.File;
import net.jxta.peergroup.PeerGroupID;
import net.jxse.configuration.JxsePeerConfiguration.ConnectionMode;
import java.net.URI;
import java.io.IOException;
import net.jxta.platform.JxtaApplication;
import net.jxta.platform.NetworkManager;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
public class JxseConfigurationToolTest {
public JxseConfigurationToolTest() {
}
@Rule
public TemporaryFolder tempStorage = new TemporaryFolder();
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
@Test
public void testGetConfiguredNetworkManager() throws IOException {
// Creating new valid peer configuration
JxsePeerConfiguration JPC = new ValidJxsePeerConfiguration();
// Need to create separate temp dir, or residual config files will/may
// be read and break this test
File ToBeDeleted = tempStorage.newFolder("GetConfiguredNetworkManager");
ToBeDeleted.mkdirs();
assertTrue(ToBeDeleted.exists());
JPC.setPersistenceLocation(ToBeDeleted.toURI());
// Retrieving the NetworkManager
NetworkManager TheNM = null;
try {
TheNM = JxseConfigurationTool.getConfiguredNetworkManager(JPC);
} catch (Exception ex) {
fail(ex.toString());
}
assertNotNull(TheNM);
}
private boolean contains(URI[] theArray, URI theItem) {
for (URI Item : theArray) {
if (Item.compareTo(theItem)==0){
return true;
}
}
return false;
}
@Test
public void testGetConfiguredNetworkManager_2() throws IOException {
// Http config
JxseHttpTransportConfiguration TempHttp = JxseHttpTransportConfiguration.getDefaultHttpTransportConfiguration();
TempHttp.setHttpPort(3333);
TempHttp.setHttpIncoming(true);
TempHttp.setHttpInterfaceAddress("123.45.67.89");
TempHttp.setHttpOutgoing(true);
TempHttp.setHttpPublicAddress("321.34.22.66", false);
// Http2 config
JxseHttp2TransportConfiguration TempHttp2 = JxseHttp2TransportConfiguration.getDefaultHttp2TransportConfiguration();
TempHttp2.setHttp2StartPort(999);
TempHttp2.setHttp2EndPort(9999);
TempHttp2.setHttp2Port(2999);
TempHttp2.setHttp2Incoming(true);
TempHttp2.setHttp2InterfaceAddress("123.45.67.89");
TempHttp2.setHttp2Outgoing(true);
TempHttp2.setHttp2PublicAddress("321.34.22.66", false);
// Multicast config
JxseMulticastTransportConfiguration TempMulti = JxseMulticastTransportConfiguration.getDefaultMulticastTransportConfiguration();
TempMulti.setMulticastPort(4444);
TempMulti.setMulticastAddress("77.77.77.77");
TempMulti.setMulticastInterface("88.88.88.89");
TempMulti.setMulticastPacketSize(9898);
// Tcp config
JxseTcpTransportConfiguration TempTcp = JxseTcpTransportConfiguration.getDefaultTcpTransportConfiguration();
TempTcp.setTcpPort(3555);
TempTcp.setTcpStartPort(2222);
TempTcp.setTcpEndPort(4444);
TempTcp.setTcpIncoming(true);
TempTcp.setTcpOutgoing(true);
TempTcp.setTcpPublicAddress("12.34.56.78", false);
TempTcp.setTcpInterfaceAddress("33.44.55.66");
// Peer config
JxsePeerConfiguration Source = JxsePeerConfiguration.getDefaultJxsePeerConfiguration();
// Need to create separate temp dir, or residual config files will/may
// be read and break this test
File ToBeDeleted = tempStorage.newFolder("GetConfiguredNetworkManager2");
ToBeDeleted.mkdirs();
assertTrue(ToBeDeleted.exists());
// Remaining config
Source.setPersistenceLocation(ToBeDeleted.toURI());
Source.setHttpTransportConfiguration(TempHttp);
Source.setHttp2TransportConfiguration(TempHttp2);
Source.setMulticastTransportConfiguration(TempMulti);
Source.setTcpTransportConfiguration(TempTcp);
Source.setConnectionMode(ConnectionMode.ADHOC);
Source.setInfrastructureID(PeerGroupID.worldPeerGroupID);
URI KSL = new File("aze").toURI(); Source.setKeyStoreLocation(KSL);
URI LS = new File("eze").toURI(); Source.setPersistenceLocation(LS);
Source.setMulticastEnabled(false);
PeerID PID = IDFactory.newPeerID(PeerGroupID.worldPeerGroupID); Source.setPeerID(PID);
Source.setPeerInstanceName("Zoubidoo");
Source.setRelayMaxClients(3456);
Source.setRendezvousMaxClients(6666);
Source.setTcpEnabled(false);
Source.setUseOnlyRdvSeeds(true);
Source.setUseOnlyRelaySeeds(true);
URI SR = URI.create("tcp://192.168.1.1"); Source.addSeedRelay(SR, 10);
URI SRDV = URI.create("tcp://192.168.1.2"); Source.addSeedRendezvous(SRDV, 20);
URI SiR = URI.create("tcp://192.168.1.3"); Source.addSeedingRelay(SiR, 30);
URI SiRDV = URI.create("tcp://192.168.1.4"); Source.addSeedingRendezvous(SiRDV, 40);
// Retrieving the NetworkManager
NetworkManager TheNM = null;
try {
TheNM = JxseConfigurationTool.getConfiguredNetworkManager(Source);
} catch (Exception ex) {
fail(ex.toString());
}
// We should ahve something
assertNotNull(TheNM);
// Retrieving the NetworkConfigurator
NetworkConfigurator TheNC = null;
try {
TheNC = TheNM.getConfigurator();
} catch (IOException ex) {
fail(ex.toString());
}
// Http config
assertTrue(TheNC.getHttpPort()==3333);
assertTrue(TheNC.getHttpIncomingStatus());
assertTrue(TheNC.getHttpOutgoingStatus());
assertTrue(TheNC.getHttpInterfaceAddress().compareTo("123.45.67.89")==0);
assertTrue(TheNC.getHttpPublicAddress().compareTo("321.34.22.66")==0);
assertTrue(TheNC.isHttpPublicAddressExclusive()==false);
// Http2 config
assertTrue(TheNC.getHttp2StartPort()==999);
assertTrue(TheNC.getHttp2EndPort()==9999);
assertTrue(TheNC.getHttp2Port()==2999);
assertTrue(TheNC.getHttp2IncomingStatus());
assertTrue(TheNC.getHttp2OutgoingStatus());
assertTrue(TheNC.getHttp2InterfaceAddress().compareTo("123.45.67.89")==0);
assertTrue(TheNC.getHttp2PublicAddress().compareTo("321.34.22.66")==0);
assertTrue(TheNC.isHttp2PublicAddressExclusive()==false);
// Multicast config
assertTrue(TheNC.getMulticastPort()==4444);
assertTrue(TheNC.getMulticastAddress().compareTo("77.77.77.77")==0);
assertTrue(TheNC.getMulticastInterface().compareTo("88.88.88.89")==0);
assertTrue(TheNC.getMulticastSize()==9898);
// Tcp config
assertTrue(TheNC.getTcpPort()==3555);
assertTrue(TheNC.getTcpStartPort()==2222);
assertTrue(TheNC.getTcpEndport()==4444);
assertTrue(TheNC.getTcpIncomingStatus()==true);
assertTrue(TheNC.getTcpOutgoingStatus()==true);
assertTrue(TheNC.getTcpPublicAddress().compareTo("12.34.56.78")==0);
assertTrue(TheNC.isTcpPublicAddressExclusive()==false);
assertTrue(TheNC.getTcpInterfaceAddress().compareTo("33.44.55.66")==0);
// The rest
assertTrue(TheNC.getMode()==NetworkConfigurator.ADHOC_NODE);
assertTrue(TheNC.getInfrastructureID().toString().compareTo(PeerGroupID.worldPeerGroupID.toString())==0);
assertTrue(TheNC.getKeyStoreLocation().compareTo(KSL)==0);
// Following test fails because TheNC.getStoreHome() adds a '/', but otherwise is fine
// assertTrue(TheNC.getStoreHome().compareTo(LS)==0);
assertFalse(TheNC.getMulticastStatus());
assertTrue(TheNC.getPeerID().toString().compareTo(PID.toString())==0);
assertTrue(TheNC.getName().compareTo("Zoubidoo")==0);
assertTrue(TheNC.getRelayMaxClients()==3456);
assertTrue(TheNC.getRendezvousMaxClients()==6666);
assertFalse(TheNC.isTcpEnabled());
assertTrue(TheNC.getUseOnlyRendezvousSeedsStatus());
assertTrue(TheNC.getUseOnlyRelaySeedsStatus());
assertTrue(contains(TheNC.getRdvSeedingURIs(),SiRDV));
assertTrue(contains(TheNC.getRelaySeedingURIs(),SiR));
assertTrue(contains(TheNC.getRdvSeedURIs(),SRDV));
assertTrue(contains(TheNC.getRelaySeedURIs(),SR));
}
@Test
public void testGetJxsePeerConfigurationFromNetworkManager() throws Exception {
// Need to create separate temp dir, or residual config files will/may
// be read and break this test
File ToBeDeleted = tempStorage.newFolder("GetJxsePeerConfigurationFromNetworkManager");
ToBeDeleted.mkdirs();
assertTrue(ToBeDeleted.exists());
// Retrieving the NetworkManager
//NetworkManager TheNM = new NetworkManager(NetworkManager.ConfigMode.ADHOC, "Zoubidoo", ToBeDeleted.toURI());
NetworkManager TheNM = JxtaApplication.getNetworkManager(NetworkManager.ConfigMode.ADHOC, "Zoubidoo", ToBeDeleted.toURI());
NetworkConfigurator TheNC = TheNM.getConfigurator();
// Http config
TheNC.setHttpPort(3333);
TheNC.setHttpIncoming(false);
TheNC.setHttpInterfaceAddress("123.45.67.89");
TheNC.setHttpOutgoing(false);
TheNC.setHttpPublicAddress("321.34.22.66", false);
// Http2 config
TheNC.setHttp2Port(2);
TheNC.setHttp2Incoming(false);
TheNC.setHttp2InterfaceAddress("123.45.67.89");
TheNC.setHttp2Outgoing(true);
TheNC.setHttp2PublicAddress("321.34.22.66", false);
TheNC.setHttp2StartPort(999);
TheNC.setHttp2EndPort(9999);
// Multicast config
TheNC.setMulticastPort(4444);
TheNC.setMulticastAddress("77.77.77.77");
TheNC.setMulticastInterface("88.88.88.89");
TheNC.setMulticastSize(9898);
// Tcp config
TheNC.setTcpPort(3555);
TheNC.setTcpStartPort(2222);
TheNC.setTcpEndPort(4444);
TheNC.setTcpIncoming(false);
TheNC.setTcpOutgoing(false);
TheNC.setTcpPublicAddress("12.34.56.78", false);
TheNC.setTcpInterfaceAddress("33.44.55.66");
URI KSL = new File("aze").toURI(); TheNC.setKeyStoreLocation(KSL);
TheNC.setUseMulticast(false);
PeerID PID = IDFactory.newPeerID(PeerGroupID.worldPeerGroupID); TheNM.setPeerID(PID);
TheNC.setRelayMaxClients(3456);
TheNC.setRendezvousMaxClients(6666);
TheNC.setTcpEnabled(false);
TheNC.setUseOnlyRendezvousSeeds(true);
TheNC.setUseOnlyRelaySeeds(true);
URI SR = URI.create("tcp://192.168.1.1"); TheNC.addSeedRelay(SR);
URI SRDV = URI.create("tcp://192.168.1.2"); TheNC.addSeedRendezvous(SRDV);
URI SiR = URI.create("tcp://192.168.1.3"); TheNC.addRelaySeedingURI(SiR);
URI SiRDV = URI.create("tcp://192.168.1.4"); TheNC.addRdvSeedingURI(SiRDV);
// Retrieving a peer config
JxsePeerConfiguration Retr = JxseConfigurationTool.getJxsePeerConfigurationFromNetworkManager(TheNM);
// Http config
assertTrue(Retr.getHttpTransportConfiguration().getHttpPort()==3333);
assertFalse(Retr.getHttpTransportConfiguration().getHttpIncoming());
assertFalse(Retr.getHttpTransportConfiguration().getHttpOutgoing());
assertTrue(Retr.getHttpTransportConfiguration().getHttpInterfaceAddress().compareTo("123.45.67.89")==0);
assertTrue(Retr.getHttpTransportConfiguration().getHttpPublicAddress().compareTo("321.34.22.66")==0);
assertFalse(Retr.getHttpTransportConfiguration().isHttpPublicAddressExclusive());
// Http2 config
assertTrue(Retr.getHttp2TransportConfiguration().getHttp2Port()==2);
assertFalse(Retr.getHttp2TransportConfiguration().getHttp2Incoming());
assertTrue(Retr.getHttp2TransportConfiguration().getHttp2Outgoing());
assertTrue(Retr.getHttp2TransportConfiguration().getHttp2InterfaceAddress().compareTo("123.45.67.89")==0);
assertTrue(Retr.getHttp2TransportConfiguration().getHttp2PublicAddress().compareTo("321.34.22.66")==0);
assertTrue(Retr.getHttp2TransportConfiguration().isHttp2PublicAddressExclusive()==false);
assertTrue(Retr.getHttp2TransportConfiguration().getHttp2StartPort()==999);
assertTrue(Retr.getHttp2TransportConfiguration().getHttp2EndPort()==9999);
// Multicast config
assertTrue(Retr.getMulticastTransportConfiguration().getMulticastPort()==4444);
assertTrue(Retr.getMulticastTransportConfiguration().getMulticastAddress().compareTo("77.77.77.77")==0);
assertTrue(Retr.getMulticastTransportConfiguration().getMulticastInterface().compareTo("88.88.88.89")==0);
assertTrue(Retr.getMulticastTransportConfiguration().getMulticastPacketSize()==9898);
// Tcp config
assertTrue(Retr.getTcpTransportConfiguration().getTcpPort()==3555);
assertTrue(Retr.getTcpTransportConfiguration().getTcpStartPort()==2222);
assertTrue(Retr.getTcpTransportConfiguration().getTcpEndPort()==4444);
assertFalse(Retr.getTcpTransportConfiguration().getTcpIncoming());
assertFalse(Retr.getTcpTransportConfiguration().getTcpOutgoing());
assertTrue(Retr.getTcpTransportConfiguration().getTcpPublicAddress().compareTo("12.34.56.78")==0);
assertTrue(Retr.getTcpTransportConfiguration().isTcpPublicAddressExclusive()==false);
assertTrue(Retr.getTcpTransportConfiguration().getTcpInterfaceAddress().compareTo("33.44.55.66")==0);
// The rest
assertTrue(Retr.getConnectionMode().equals(JxseConfigurationTool.convertToJxsePeerConfigurationConfigMode(NetworkManager.ConfigMode.ADHOC)));
assertTrue(Retr.getKeyStoreLocation().compareTo(KSL)==0);
// Following test fails because TheNC.getStoreHome() adds a '/', but otherwise is fine
// assertTrue(Retr.getStoreHome().compareTo(LS)==0);
assertFalse(Retr.getMulticastEnabled());
assertTrue(Retr.getPeerID().toString().compareTo(PID.toString())==0);
assertTrue(Retr.getPeerInstanceName().compareTo("Zoubidoo")==0);
assertTrue(Retr.getRelayMaxClients()==3456);
assertTrue(Retr.getRendezvousMaxClients()==6666);
assertFalse(Retr.getTcpEnabled());
assertTrue(Retr.getUseOnlyRdvSeeds());
assertTrue(Retr.getUseOnlyRelaySeeds());
assertTrue(contains(Retr.getAllSeedingRendezvous().values().toArray(new URI[0]),SiRDV));
assertTrue(contains(Retr.getAllSeedingRelays().values().toArray(new URI[0]),SiR));
assertTrue(contains(Retr.getAllSeedRendezvous().values().toArray(new URI[0]),SRDV));
assertTrue(contains(Retr.getAllSeedRelays().values().toArray(new URI[0]),SR));
}
}