package org.opennaas.extensions.openflowswitch.model.test;
import java.util.List;
import junit.framework.Assert;
import org.junit.Test;
import org.opennaas.core.resources.ObjectSerializer;
import org.opennaas.core.resources.SerializationException;
import org.opennaas.extensions.openflowswitch.helpers.OpenflowSwitchModelHelper;
import org.opennaas.extensions.openflowswitch.model.OFFlow;
import org.opennaas.extensions.openflowswitch.model.OpenflowSwitchModel;
public class OpenflowSwitchModelTest {
@Test
public void getSwitchForwardingRulesTest() {
OpenflowSwitchModel model = OpenflowSwitchModelHelper.generateSampleModel();
List<OFFlow> originalRules = model.getOfTables().get(0).getOfForwardingRules();
OFFlow originalRule1 = originalRules.get(0);
OFFlow originalRule2 = originalRules.get(1);
List<OFFlow> forwardingRules = OpenflowSwitchModelHelper.getSwitchForwardingRules(model);
Assert.assertEquals(2, forwardingRules.size());
Assert.assertEquals(originalRules.size(), forwardingRules.size());
OFFlow rule1 = forwardingRules.get(0);
OFFlow rule2 = forwardingRules.get(1);
Assert.assertEquals("1", rule1.getName());
Assert.assertEquals(originalRule1, rule1);
Assert.assertEquals("2", rule2.getName());
Assert.assertEquals(originalRule2, rule2);
Assert.assertTrue(rule1.equals(originalRule1));
Assert.assertTrue(rule2.equals(originalRule2));
Assert.assertEquals("1", originalRule1.getPriority());
Assert.assertEquals("1", originalRule1.getMatch().getDstPort());
Assert.assertEquals("2", originalRule2.getPriority());
Assert.assertEquals("2", originalRule2.getMatch().getDstPort());
}
@Test
public void modelSerializerTest() throws SerializationException {
OpenflowSwitchModel originalModel = OpenflowSwitchModelHelper.generateSampleModel();
String xmlModel = originalModel.toXml();
OpenflowSwitchModel loadedModel = (OpenflowSwitchModel) ObjectSerializer.fromXml(xmlModel, OpenflowSwitchModel.class);
String xmlLoadedModel = loadedModel.toXml();
Assert.assertEquals(originalModel, loadedModel);
Assert.assertEquals(xmlModel, xmlLoadedModel);
}
}