[Emu] Defining classes for ODU SIGID and SIGTYPE Fields in Flow Criteria and Instruction - Data Model and Tests only
Change-Id: I3a71520caa286a1fcc509c581036ef4848de9b5b
diff --git a/core/api/src/test/java/org/onosproject/net/flow/criteria/CriteriaTest.java b/core/api/src/test/java/org/onosproject/net/flow/criteria/CriteriaTest.java
index 95d605c..d86744d 100644
--- a/core/api/src/test/java/org/onosproject/net/flow/criteria/CriteriaTest.java
+++ b/core/api/src/test/java/org/onosproject/net/flow/criteria/CriteriaTest.java
@@ -15,6 +15,16 @@
*/
package org.onosproject.net.flow.criteria;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
+import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility;
+import static org.onosproject.net.OduSignalId.oduSignalId;
+import static org.onosproject.net.PortNumber.portNumber;
+
import org.junit.Test;
import org.onlab.packet.EthType;
import org.onlab.packet.Ip6Address;
@@ -26,20 +36,12 @@
import org.onosproject.net.ChannelSpacing;
import org.onosproject.net.GridType;
import org.onosproject.net.Lambda;
+import org.onosproject.net.OchSignalType;
+import org.onosproject.net.OduSignalId;
+import org.onosproject.net.OduSignalType;
import org.onosproject.net.PortNumber;
import com.google.common.testing.EqualsTester;
-import org.onosproject.net.OchSignalType;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
-import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility;
-import static org.onosproject.net.PortNumber.portNumber;
-
/**
* Unit tests for the Criteria class and its subclasses.
*/
@@ -240,6 +242,18 @@
Criterion matchOchSignal2 =
Criteria.matchLambda(Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_50GHZ, 4, 8));
+ final OduSignalId odu1 = oduSignalId(1, 80, new byte [] {1, 1, 2, 2, 1, 2, 2, 1, 2, 2});
+ final OduSignalId odu2 = oduSignalId(3, 8, new byte [] {1, 0, 0, 0, 0, 0, 0, 0, 0, 0});
+ Criterion matchOduSignalId1 = Criteria.matchOduSignalId(odu1);
+ Criterion sameAsMatchOduSignalId1 = Criteria.matchOduSignalId(odu1);
+ Criterion matchOduSignalId2 = Criteria.matchOduSignalId(odu2);
+
+ final OduSignalType oduSigType1 = OduSignalType.ODU2;
+ final OduSignalType oduSigType2 = OduSignalType.ODU4;
+ Criterion matchOduSignalType1 = Criteria.matchOduSignalType(oduSigType1);
+ Criterion sameAsMatchOduSignalType1 = Criteria.matchOduSignalType(oduSigType1);
+ Criterion matchOduSignalType2 = Criteria.matchOduSignalType(oduSigType2);
+
/**
* Checks that a Criterion object has the proper type, and then converts
* it to the proper type.
@@ -294,6 +308,8 @@
assertThatClassIsImmutable(MplsCriterion.class);
assertThatClassIsImmutable(IPv6ExthdrFlagsCriterion.class);
assertThatClassIsImmutable(LambdaCriterion.class);
+ assertThatClassIsImmutable(OduSignalIdCriterion.class);
+ assertThatClassIsImmutable(OduSignalTypeCriterion.class);
}
// PortCriterion class
@@ -1070,4 +1086,57 @@
.addEqualityGroup(matchOchSignalType2)
.testEquals();
}
+
+ /**
+ * Test the OduSignalId method.
+ */
+ @Test
+ public void testMatchOduSignalIdMethod() {
+ OduSignalId odu = oduSignalId(1, 80, new byte[]{2, 1, 1, 3, 1, 1, 3, 1, 1, 3});
+
+ Criterion matchoduSignalId = Criteria.matchOduSignalId(odu);
+ OduSignalIdCriterion oduSignalIdCriterion =
+ checkAndConvert(matchoduSignalId,
+ Criterion.Type.ODU_SIGID,
+ OduSignalIdCriterion.class);
+ assertThat(oduSignalIdCriterion.oduSignalId(), is(equalTo(odu)));
+ }
+
+ /**
+ * Test the equals() method of the OduSignalIdCriterion class.
+ */
+ @Test
+ public void testOduSignalIdCriterionEquals() {
+ new EqualsTester()
+ .addEqualityGroup(matchOduSignalId1, sameAsMatchOduSignalId1)
+ .addEqualityGroup(matchOduSignalId2)
+ .testEquals();
+ }
+
+ // OduSignalTypeCriterion class
+
+ /**
+ * Test the OduSignalType method.
+ */
+ @Test
+ public void testMatchOduSignalTypeMethod() {
+ OduSignalType oduSigType = OduSignalType.ODU2;
+ Criterion matchoduSignalType = Criteria.matchOduSignalType(oduSigType);
+ OduSignalTypeCriterion oduSignalTypeCriterion =
+ checkAndConvert(matchoduSignalType,
+ Criterion.Type.ODU_SIGTYPE,
+ OduSignalTypeCriterion.class);
+ assertThat(oduSignalTypeCriterion.signalType(), is(equalTo(oduSigType)));
+ }
+
+ /**
+ * Test the equals() method of the OduSignalTypeCriterion class.
+ */
+ @Test
+ public void testOduSignalTypeCriterionEquals() {
+ new EqualsTester()
+ .addEqualityGroup(matchOduSignalType1, sameAsMatchOduSignalType1)
+ .addEqualityGroup(matchOduSignalType2)
+ .testEquals();
+ }
}
diff --git a/core/api/src/test/java/org/onosproject/net/flow/instructions/InstructionsTest.java b/core/api/src/test/java/org/onosproject/net/flow/instructions/InstructionsTest.java
index 410349b..a25783f 100644
--- a/core/api/src/test/java/org/onosproject/net/flow/instructions/InstructionsTest.java
+++ b/core/api/src/test/java/org/onosproject/net/flow/instructions/InstructionsTest.java
@@ -25,6 +25,7 @@
import org.onosproject.net.GridType;
import org.onosproject.net.IndexedLambda;
import org.onosproject.net.Lambda;
+import org.onosproject.net.OduSignalId;
import org.onosproject.net.PortNumber;
import com.google.common.testing.EqualsTester;
@@ -38,6 +39,7 @@
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility;
import static org.onosproject.net.PortNumber.portNumber;
+import static org.onosproject.net.OduSignalId.oduSignalId;
/**
* Unit tests for the Instructions class.
@@ -96,6 +98,7 @@
assertThatClassIsImmutable(Instructions.OutputInstruction.class);
assertThatClassIsImmutable(L0ModificationInstruction.ModLambdaInstruction.class);
assertThatClassIsImmutable(L0ModificationInstruction.ModOchSignalInstruction.class);
+ assertThatClassIsImmutable(L1ModificationInstruction.ModOduSignalIdInstruction.class);
assertThatClassIsImmutable(L2ModificationInstruction.ModEtherInstruction.class);
assertThatClassIsImmutable(L2ModificationInstruction.ModVlanIdInstruction.class);
assertThatClassIsImmutable(L2ModificationInstruction.ModVlanPcpInstruction.class);
@@ -259,6 +262,44 @@
assertThat(ochInstruction1.hashCode(), is(not(ochInstruction2.hashCode())));
}
+ // ModOduSignalIdInstruction
+
+ private final OduSignalId odu1 = oduSignalId(1, 80, new byte[] {8, 7, 6, 5, 7, 6, 5, 7, 6, 5});
+ private final OduSignalId odu2 = oduSignalId(2, 80, new byte[] {1, 1, 2, 2, 1, 2, 2, 1, 2, 2});
+ private final Instruction oduInstruction1 = Instructions.modL1OduSignalId(odu1);
+ private final Instruction sameAsOduInstruction1 = Instructions.modL1OduSignalId(odu1);
+ private final Instruction oduInstruction2 = Instructions.modL1OduSignalId(odu2);
+
+ /**
+ * Test the modL1OduSignalId().
+ */
+ @Test
+ public void testModL1OduSignalIdMethod() {
+ Instruction instruction = Instructions.modL1OduSignalId(odu1);
+ L1ModificationInstruction.ModOduSignalIdInstruction oduInstruction =
+ checkAndConvert(instruction, Instruction.Type.L1MODIFICATION,
+ L1ModificationInstruction.ModOduSignalIdInstruction.class);
+ assertThat(oduInstruction.oduSignalId(), is(odu1));
+ }
+
+ /**
+ * Test the equals() method of the ModOduSignalInstruction class.
+ */
+ @Test
+ public void testModOduSignalIdInstructionEquals() {
+ checkEqualsAndToString(oduInstruction1, sameAsOduInstruction1, oduInstruction2);
+ }
+
+ /**
+ * Test the hashCode() method of the ModOduSignalInstruction class.
+ */
+ @Test
+ public void testModOduSignalIdInstructionHashCode() {
+ assertThat(oduInstruction1.hashCode(), is(sameAsOduInstruction1.hashCode()));
+ assertThat(oduInstruction1.hashCode(), is(not(oduInstruction2.hashCode())));
+ }
+
+
// ModEtherInstruction
private static final String MAC1 = "00:00:00:00:00:01";