package es.tid.bgp.bgp4Peer.tests;
import static org.junit.Assert.*;
import java.net.Inet4Address;
import java.util.Set;
import es.tid.bgp.bgp4Peer.peer.BGPPeer;
import es.tid.tedb.MDTEDB;
public class BGP4PeerTest {
public BGP4PeerTest(){
}
/**
* This tests starts a BGL-LS Speaker, reads the topology from a File and Sends it.
* A second speaker is started and reads the topology.
* The first speaker is configured to read only the multidomain topology and send the
* multidomain topology
* The second speaker is configured as Consumer.
* The speakers are launched in separated non-standard ports for testing purposes.
* Both speakers talk and the topology is sent from BGP-Speaker 1 to BGP-Speaker 2
* It checks after 10 seconds if the topology of BGP-Speaker 2 is the same as BGP
* Speaker 1.
*/
@org.junit.Test
public void testPeer(){
try {
//Create BGP4Peer 1
BGPPeer bgpPeer = new BGPPeer();
bgpPeer.configure("src/test/resources/BGP4Parameters_1.xml");
//Create the TEDB
//bgpPeer.createTEDB("test"); //did it in configure
assertTrue("MD Topology has not 2 domains",((MDTEDB)bgpPeer.getMultiDomainTEDB()).getNetworkDomainGraph().vertexSet().size()==2);
bgpPeer.createUpdateDispatcher();
bgpPeer.startClient();
bgpPeer.startServer();
bgpPeer.startSaveTopology();
bgpPeer.startManagementServer();
bgpPeer.startSendTopology();
String topoOriginal=bgpPeer.getMultiDomainTEDB().printTopology();
System.out.println("Topology1: ");
System.out.println(topoOriginal);
//Launch BGP4Peer
//bgpPeer.stopPeer();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BGPPeer bgpPeer2 = new BGPPeer();
bgpPeer2.configure("src/test/resources/BGP4Parameters_2.xml");
//Create the TEDB
//bgpPeer2.createTEDB("test"); //did it in configure
bgpPeer2.createUpdateDispatcher();
bgpPeer2.startClient();
bgpPeer2.startServer();
bgpPeer2.startSaveTopology();
bgpPeer2.startManagementServer();
bgpPeer2.startSendTopology();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String topo2=bgpPeer2.getMultiDomainTEDB().printTopology();
System.out.println("---------------------------------------");
System.out.println("---------------------------------------");
System.out.println("---------------------------------------");
System.out.println("Topology of BGP-LS Speaker 1: ");
System.out.println("---------------------------------------");
System.out.println(topoOriginal);
Set<String> keySet = bgpPeer.getIntraTEDBs().keySet();
for(String key : keySet){
System.out.println("---IntraTEDB: domain_id= "+key);
System.out.println(bgpPeer.getIntraTEDBs().get(key).printTopology());
}
System.out.println("---------------------------------------");
System.out.println("Topology of BGP-LS Speaker 2: ");
System.out.println("---------------------------------------");
System.out.println(topo2);
System.out.println("---------------------------------------");
Set<String> keySet2 = bgpPeer2.getIntraTEDBs().keySet();
for(String key : keySet2){
System.out.println("---IntraTEDB: domain_id= "+key);
System.out.println(bgpPeer2.getIntraTEDBs().get(key).printTopology());
}
/*try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
for(String key : keySet){
//assertTrue("Checking if topos are equals, IntraTEDBs, don't have the same domains", bgpPeer2.getIntraTEDBs().keySet().contains(key));
//assertTrue("->Checking if topos are equals, IntraTEDB (domains="+key+") are not equal:\nTED1:\n"+bgpPeer.getIntraTEDBs().get(key).printTopology()+"\nTED2:\n"+bgpPeer.getIntraTEDBs().get(key).printTopology(), bgpPeer.getIntraTEDBs().get(key).equals(bgpPeer2.getIntraTEDBs().get(key)));
}
assertTrue("Checking if topos are equal",topoOriginal.equals(topo2));
} catch (Exception exc){
exc.printStackTrace();
assertTrue("Exception "+exc.getMessage(),false);
}
}
}