package org.opennaas.extensions.ofertie.ncl.test;
import java.util.List;
import junit.framework.Assert;
import org.junit.Test;
import org.opennaas.extensions.ofertie.ncl.helpers.FlowRequestHelper;
import org.opennaas.extensions.ofertie.ncl.helpers.FlowRequestParser;
import org.opennaas.extensions.ofertie.ncl.provisioner.api.model.FlowRequest;
import org.opennaas.extensions.openflowswitch.model.FloodlightOFAction;
import org.opennaas.extensions.openflowswitch.model.FloodlightOFMatch;
import org.opennaas.extensions.sdnnetwork.model.Route;
import org.opennaas.extensions.sdnnetwork.model.SDNNetworkOFFlow;
/**
*
* @author Adrian Rosello (i2CAT)
*
*/
public class FlowRequestParserTest {
@Test
public void parseFlowRequestTest() {
FlowRequest flowRequest = FlowRequestHelper.generateSampleFlowRequest();
Route route = FlowRequestHelper.generateSampleRoute();
SDNNetworkOFFlow sdnNetOFFlow = FlowRequestParser.parseFlowRequestIntoSDNFlow(flowRequest, route);
FloodlightOFMatch match = sdnNetOFFlow.getMatch();
Assert.assertEquals("Source ip should match. ", flowRequest.getSourceIPAddress(), match.getSrcIp());
Assert.assertEquals("Destination ip should match.", flowRequest.getDestinationIPAddress(), match.getDstIp());
Assert.assertEquals("Source port should match", String.valueOf(flowRequest.getSourcePort()), match.getSrcPort());
Assert.assertEquals("Destination port should match", String.valueOf(flowRequest.getDestinationPort()), match.getDstPort());
Assert.assertEquals("ToS should match", String.valueOf(flowRequest.getTos()), match.getTosBits());
String ingressPort = route.getNetworkConnections().get(0).getSource().getId();
Assert.assertEquals("Ingress port should be source port of first network connection.", ingressPort, match.getIngressPort());
Assert.assertEquals("Route should match by the provided one.", route, sdnNetOFFlow.getRoute());
List<FloodlightOFAction> actions = sdnNetOFFlow.getActions();
Assert.assertEquals("SDNOFFlow should contain 1 action.", 1, actions.size());
FloodlightOFAction action = actions.get(0);
Assert.assertEquals("output", action.getType());
Assert.assertEquals("Output value should be \"device02-1\".", "device02-1", action.getValue());
}
}