All Downloads are FREE. Search and download functionalities are using the official Maven repository.

es.tid.pce.client.tester.DummyActivity Maven / Gradle / Ivy

The newest version!
package es.tid.pce.client.tester;

import java.net.Inet4Address;
import java.net.UnknownHostException;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.Timer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import cern.jet.random.Exponential;
import es.tid.emulator.node.transport.EmulatedPCCPCEPSession;
import es.tid.netManager.NetworkLSPManager;
import es.tid.pce.client.emulator.AutomaticTesterStatistics;
import es.tid.pce.computingEngine.ComputingResponse;
import es.tid.pce.pcep.constructs.Path;
import es.tid.pce.pcep.messages.PCEPRequest;
import es.tid.pce.pcep.messages.PCEPResponse;
import es.tid.pce.pcep.objects.BandwidthRequestedGeneralizedBandwidth;
import es.tid.pce.pcep.objects.ExplicitRouteObject;
import es.tid.pce.pcep.objects.LSP;
import es.tid.rsvp.objects.subobjects.SubObjectValues;
import es.tid.rsvp.objects.subobjects.UnnumberIfIDEROSubobject;
import es.tid.vntm.LigthPathManagement;

public class DummyActivity implements Activity{
	private AutomaticTesterStatistics stats;
	private PCEPRequest request;
	private ComputingResponse response;
	private Logger log;
	private Exponential connectionTime;	
	private Timer planificationTimer;
	private Hashtable PCEsessionList = new Hashtable();
	private boolean staticConnections= false;
	
	public DummyActivity(Exponential connectionTime,Timer planificationTimer, Hashtable PCEsessionList, boolean staticConnections){
		this.connectionTime=connectionTime;
		this.planificationTimer=planificationTimer;
		log=LoggerFactory.getLogger("PCCClient");
		this.PCEsessionList=PCEsessionList;
		this.staticConnections=staticConnections;
//		logErrores=LoggerFactory.getLogger("PruebaLambdas");
//		logPrueba=LoggerFactory.getLogger("mmmerrores");
	}
	
	@Override
	public void run() {
		if (response == null){
			stats.addNoResponse();
			log.warn("Response null");			
			return;
		}
		if (response.getResponseList().isEmpty()){
			log.error("ERROR in response");
			System.exit(1);
		}else {
			try{
				if (response.getResponseList().get(0).getNoPath()!=null){
					log.info("NO PATH");
					stats.addNoPathResponse();
					stats.analyzeBlockingProbability(1);
					stats.analyzeblockProbabilityWithoutStolenLambda(1);
					return;	
				}else {
					log.info("Response actualizamos estadisticas");
					Path path=response.getResponseList().get(0).getPath(0);
					
					long id = response.getResponseList().getFirst().getRequestParameters().getRequestID();
					LinkedList  listLSP = new LinkedList ();
					LSP lsp = new LSP();
					lsp.setLspId((int)id);
					LinkedList  eroList = new LinkedList ();
					ExplicitRouteObject ero = path.geteRO();
					eroList.add(ero);
					//FIXME: Esta linea reventaba
					//lsp.set LspTLV(eroList);
					listLSP.add(lsp);
				
					
					/*long time1 = System.nanoTime();
					
					long time2= System.nanoTime();
					double LSPTime = (time2-time1)/1000000;
					stats.analyzeLSPTime(LSPTime);*/
					stats.addSLResponse();	
					stats.addNumberActiveLSP();
					stats.analyzeBlockingProbability(0);
					stats.analyzeLambdaBlockingProbability(0);
					stats.analyzeblockProbabilityWithoutStolenLambda(0);
					log.info("ERO atencion! : "+ero.getEROSubobjectList().get(0).toString());
					Inet4Address IDsession = null;
					if (ero.getEROSubobjectList().get(0).getType() == SubObjectValues.ERO_SUBOBJECT_UNNUMBERED_IF_ID){
						IDsession = ((UnnumberIfIDEROSubobject)ero.getEROSubobjectList().get(0)).getRouterID();
					}else
						IDsession = ((UnnumberIfIDEROSubobject)ero.getEROSubobjectList().get(1)).getRouterID();
					int sessionID = findPCEPSessionToSendRequest(IDsession);
					log.info("Session ID: "+sessionID);
					EmulatedPCCPCEPSession PCEPsession = PCEsessionList.get(sessionID);
					log.info("Ip dest --> "+PCEsessionList.get(sessionID).getPeerPCE_IPaddress());
					if (PCEsessionList==null){
						log.info("La lista es Null!");
					}else
						log.info("Lista : "+PCEsessionList.toString());
					if (PCEPsession==null){
						log.info("PCEP session null");
					}
					
					if (staticConnections==false){
						RealiseControlPlaneCapacityTask realiseCapacity = new RealiseControlPlaneCapacityTask(listLSP,stats,request.getRequestList().getFirst().getRequestParameters().isBidirect(),(BandwidthRequestedGeneralizedBandwidth)path.getBandwidth(), PCEPsession);
						long duration =Math.round(connectionTime.nextDouble());
						log.info("LSP duration: "+duration);
						planificationTimer.schedule(realiseCapacity,duration);
					}else{
						log.info("Conexiones estaticas en la red, no borramos LSPs!");
					}
					/*}else
					{
						//Logger logPrueba=LoggerFactory.getLogger("LogPrueba");
						stats.addStolenLambdasLSP();
						stats.analyzeLambdaBlockingProbability(1);
						stats.analyzeBlockingProbability(1);
					}*/			
				}
			}catch(Exception e){
				e.printStackTrace();
				System.exit(1);
			}
		}
	}
	
	public int findPCEPSessionToSendRequest(Inet4Address source){		
		int size = PCEsessionList.size();		
		for (int i=0;i




© 2015 - 2025 Weber Informatics LLC | Privacy Policy