[ONOS-6624]Unit tests for Pi* core classes
Change-Id: Ia0a20712f8108549b3ac6434be8aee1bc6025bb2
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 fa8d5db..f6d1406 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
@@ -23,6 +23,7 @@
import org.onlab.packet.MplsLabel;
import org.onlab.packet.TpPort;
import org.onlab.packet.VlanId;
+import org.onlab.util.ImmutableByteSequence;
import org.onosproject.core.GroupId;
import org.onosproject.net.ChannelSpacing;
import org.onosproject.net.DeviceId;
@@ -31,6 +32,11 @@
import org.onosproject.net.OduSignalId;
import org.onosproject.net.PortNumber;
import org.onosproject.net.meter.MeterId;
+import org.onosproject.net.pi.runtime.PiAction;
+import org.onosproject.net.pi.runtime.PiActionId;
+import org.onosproject.net.pi.runtime.PiActionParam;
+import org.onosproject.net.pi.runtime.PiActionParamId;
+import org.onosproject.net.pi.runtime.PiTableAction;
import java.util.List;
@@ -111,6 +117,7 @@
assertThatClassIsImmutable(L2ModificationInstruction.ModMplsBosInstruction.class);
assertThatClassIsImmutable(L2ModificationInstruction.ModMplsTtlInstruction.class);
assertThatClassIsImmutable(L2ModificationInstruction.ModTunnelIdInstruction.class);
+ assertThatClassIsImmutable(PiInstruction.class);
}
// NoActionInstruction
@@ -1307,4 +1314,43 @@
.testEquals();
}
+ // PiInstruction
+ PiTableAction piTableAction1 = PiAction.builder()
+ .withId(PiActionId.of("set_egress_port_0"))
+ .withParameter(new PiActionParam(PiActionParamId.of("port"),
+ ImmutableByteSequence.copyFrom(10))).build();
+ PiTableAction piTableAction2 = PiAction.builder()
+ .withId(PiActionId.of("set_egress_port_0"))
+ .withParameter(new PiActionParam(PiActionParamId.of("port"),
+ ImmutableByteSequence.copyFrom(20))).build();
+ private final Instruction piSetEgressPortInstruction1 = new PiInstruction(piTableAction1);
+ private final Instruction sameAsPiSetEgressPortInstruction1 = new PiInstruction(piTableAction1);
+ private final Instruction piSetEgressPortInstruction2 = new PiInstruction(piTableAction2);
+
+ /**
+ * Test the PiInstruction() method.
+ */
+ @Test
+ public void testPiMethod() {
+ final Instruction instruction = new PiInstruction(piTableAction1);
+ final PiInstruction piInstruction = checkAndConvert(instruction,
+ Instruction.Type.PROTOCOL_INDEPENDENT, PiInstruction.class);
+
+ assertThat(piInstruction.action(), is(piTableAction1));
+ assertThat(piInstruction.type(), is(Instruction.Type.PROTOCOL_INDEPENDENT));
+ }
+
+ /**
+ * Tests the equals(), hashCode() and toString() methods of the
+ * PiInstruction class.
+ */
+
+ @Test
+ public void testPiInstructionEquals() {
+ new EqualsTester()
+ .addEqualityGroup(piSetEgressPortInstruction1, sameAsPiSetEgressPortInstruction1)
+ .addEqualityGroup(piSetEgressPortInstruction2)
+ .testEquals();
+ }
+
}