package org.opennaas.extensions.openflowswitch.driver.floodlight.test;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.opennaas.core.resources.action.ActionException;
import org.opennaas.extensions.openflowswitch.capability.OpenflowForwardingActionSet;
import org.opennaas.extensions.openflowswitch.driver.floodlight.actionssets.FloodlightConstants;
import org.opennaas.extensions.openflowswitch.driver.floodlight.actionssets.actions.CreateOFForwardingAction;
import org.opennaas.extensions.openflowswitch.model.FloodlightOFAction;
import org.opennaas.extensions.openflowswitch.model.FloodlightOFFlow;
import org.opennaas.extensions.openflowswitch.model.FloodlightOFMatch;
public class FloodlightActionsTest {
private CreateOFForwardingAction createOFForwardingAction;
@Before
public void initActions() {
createOFForwardingAction = new CreateOFForwardingAction();
createOFForwardingAction.setActionID(OpenflowForwardingActionSet.CREATEOFFORWARDINGRULE);
}
@Test
public void createOFForwardingActionValidCreationTest() throws ActionException {
FloodlightOFFlow forwardingRule = generateValidFloodlightOFFlow();
boolean isOk = createOFForwardingAction.checkParams(forwardingRule);
Assert.assertTrue("Params are correct", isOk);
}
@Test(expected = ActionException.class)
public void createOFForwardingActionValidInvalidGreaterPriorityCreationTest() throws ActionException {
int priority = Integer.parseInt(FloodlightConstants.MAX_PRIORITY) + 1;
FloodlightOFFlow forwardingRule = generateValidFloodlightOFFlow();
forwardingRule.setPriority(String.valueOf(priority));
boolean isOk = createOFForwardingAction.checkParams(forwardingRule);
Assert.assertFalse("Check params failed", isOk);
}
@Test(expected = ActionException.class)
public void createOFForwardingActionValidInvalidLowerPriorityCreationTest() throws ActionException {
int priority = Integer.parseInt(FloodlightConstants.MIN_PRIORITY) - 1;
FloodlightOFFlow forwardingRule = generateValidFloodlightOFFlow();
forwardingRule.setPriority(String.valueOf(priority));
boolean isOk = createOFForwardingAction.checkParams(forwardingRule);
Assert.assertFalse("Check params failed", isOk);
}
private static FloodlightOFFlow generateValidFloodlightOFFlow() {
return generateSampleFloodlightOFFlow("testingFlow", "1", "2");
}
private static FloodlightOFFlow generateSampleFloodlightOFFlow(String name, String inputPort, String outputPort) {
FloodlightOFFlow forwardingRule = new FloodlightOFFlow();
forwardingRule.setName(name);
forwardingRule.setPriority(FloodlightConstants.DEFAULT_PRIORITY);
forwardingRule.setActive(true);
FloodlightOFMatch match = new FloodlightOFMatch();
match.setIngressPort(inputPort);
forwardingRule.setMatch(match);
FloodlightOFAction floodlightAction = new FloodlightOFAction();
floodlightAction.setType("output");
floodlightAction.setValue(outputPort);
List<FloodlightOFAction> actions = new ArrayList<FloodlightOFAction>();
actions.add(floodlightAction);
forwardingRule.setActions(actions);
return forwardingRule;
}
}