Ray Milkey
Committed by Gerrit Code Review

Improve test coverage for Instructions APIs

Change-Id: I3b7018c51227c789832616c5d6ac8f2420d99744
...@@ -15,18 +15,25 @@ ...@@ -15,18 +15,25 @@
15 */ 15 */
16 package org.onosproject.net.flow.instructions; 16 package org.onosproject.net.flow.instructions;
17 17
18 +import java.util.List;
19 +
18 import org.junit.Test; 20 import org.junit.Test;
21 +import org.onlab.packet.EthType;
19 import org.onlab.packet.IpAddress; 22 import org.onlab.packet.IpAddress;
20 import org.onlab.packet.MacAddress; 23 import org.onlab.packet.MacAddress;
21 import org.onlab.packet.MplsLabel; 24 import org.onlab.packet.MplsLabel;
22 import org.onlab.packet.TpPort; 25 import org.onlab.packet.TpPort;
23 import org.onlab.packet.VlanId; 26 import org.onlab.packet.VlanId;
27 +import org.onosproject.core.DefaultGroupId;
28 +import org.onosproject.core.GroupId;
24 import org.onosproject.net.ChannelSpacing; 29 import org.onosproject.net.ChannelSpacing;
30 +import org.onosproject.net.DeviceId;
25 import org.onosproject.net.GridType; 31 import org.onosproject.net.GridType;
26 import org.onosproject.net.IndexedLambda; 32 import org.onosproject.net.IndexedLambda;
27 import org.onosproject.net.Lambda; 33 import org.onosproject.net.Lambda;
28 import org.onosproject.net.OduSignalId; 34 import org.onosproject.net.OduSignalId;
29 import org.onosproject.net.PortNumber; 35 import org.onosproject.net.PortNumber;
36 +import org.onosproject.net.meter.MeterId;
30 37
31 import com.google.common.testing.EqualsTester; 38 import com.google.common.testing.EqualsTester;
32 39
...@@ -38,8 +45,8 @@ import static org.hamcrest.Matchers.not; ...@@ -38,8 +45,8 @@ import static org.hamcrest.Matchers.not;
38 import static org.hamcrest.Matchers.notNullValue; 45 import static org.hamcrest.Matchers.notNullValue;
39 import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; 46 import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
40 import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility; 47 import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility;
41 -import static org.onosproject.net.PortNumber.portNumber;
42 import static org.onosproject.net.OduSignalId.oduSignalId; 48 import static org.onosproject.net.OduSignalId.oduSignalId;
49 +import static org.onosproject.net.PortNumber.portNumber;
43 50
44 /** 51 /**
45 * Unit tests for the Instructions class. 52 * Unit tests for the Instructions class.
...@@ -47,7 +54,7 @@ import static org.onosproject.net.OduSignalId.oduSignalId; ...@@ -47,7 +54,7 @@ import static org.onosproject.net.OduSignalId.oduSignalId;
47 public class InstructionsTest { 54 public class InstructionsTest {
48 55
49 /** 56 /**
50 - * Checks that a Criterion object has the proper type, and then converts 57 + * Checks that an Instruction object has the proper type, and then converts
51 * it to the proper type. 58 * it to the proper type.
52 * 59 *
53 * @param instruction Instruction object to convert 60 * @param instruction Instruction object to convert
...@@ -65,7 +72,7 @@ public class InstructionsTest { ...@@ -65,7 +72,7 @@ public class InstructionsTest {
65 } 72 }
66 73
67 /** 74 /**
68 - * Checks the equals() and toString() methods of a Criterion class. 75 + * Checks the equals() and toString() methods of a Instruction class.
69 * 76 *
70 * @param c1 first object to compare 77 * @param c1 first object to compare
71 * @param c1match object that should be equal to the first 78 * @param c1match object that should be equal to the first
...@@ -102,10 +109,50 @@ public class InstructionsTest { ...@@ -102,10 +109,50 @@ public class InstructionsTest {
102 assertThatClassIsImmutable(L2ModificationInstruction.ModEtherInstruction.class); 109 assertThatClassIsImmutable(L2ModificationInstruction.ModEtherInstruction.class);
103 assertThatClassIsImmutable(L2ModificationInstruction.ModVlanIdInstruction.class); 110 assertThatClassIsImmutable(L2ModificationInstruction.ModVlanIdInstruction.class);
104 assertThatClassIsImmutable(L2ModificationInstruction.ModVlanPcpInstruction.class); 111 assertThatClassIsImmutable(L2ModificationInstruction.ModVlanPcpInstruction.class);
112 + assertThatClassIsImmutable(L2ModificationInstruction.PopVlanInstruction.class);
105 assertThatClassIsImmutable(L3ModificationInstruction.ModIPInstruction.class); 113 assertThatClassIsImmutable(L3ModificationInstruction.ModIPInstruction.class);
106 assertThatClassIsImmutable(L3ModificationInstruction.ModIPv6FlowLabelInstruction.class); 114 assertThatClassIsImmutable(L3ModificationInstruction.ModIPv6FlowLabelInstruction.class);
107 assertThatClassIsImmutable(L2ModificationInstruction.ModMplsLabelInstruction.class); 115 assertThatClassIsImmutable(L2ModificationInstruction.ModMplsLabelInstruction.class);
108 assertThatClassIsImmutable(L2ModificationInstruction.PushHeaderInstructions.class); 116 assertThatClassIsImmutable(L2ModificationInstruction.PushHeaderInstructions.class);
117 + assertThatClassIsImmutable(L2ModificationInstruction.ModMplsBosInstruction.class);
118 + assertThatClassIsImmutable(L2ModificationInstruction.ModMplsTtlInstruction.class);
119 + assertThatClassIsImmutable(L2ModificationInstruction.ModTunnelIdInstruction.class);
120 + }
121 +
122 + // NoActionInstruction
123 +
124 + private final Instructions.NoActionInstruction noAction1 = Instructions.createNoAction();
125 + private final Instructions.NoActionInstruction noAction2 = Instructions.createNoAction();
126 +
127 + /**
128 + * Test the createNoAction method.
129 + */
130 + @Test
131 + public void testCreateNoActionMethod() {
132 + Instructions.NoActionInstruction instruction = Instructions.createNoAction();
133 + checkAndConvert(instruction,
134 + Instruction.Type.NOACTION,
135 + Instructions.NoActionInstruction.class);
136 + }
137 +
138 + /**
139 + * Test the equals() method of the NoActionInstruction class.
140 + */
141 +
142 + @Test
143 + public void testNoActionInstructionEquals() throws Exception {
144 + new EqualsTester()
145 + .addEqualityGroup(noAction1, noAction2)
146 + .testEquals();
147 + }
148 +
149 + /**
150 + * Test the hashCode() method of the NoActionInstruction class.
151 + */
152 +
153 + @Test
154 + public void testNoActionInstructionHashCode() {
155 + assertThat(noAction1.hashCode(), is(equalTo(noAction2.hashCode())));
109 } 156 }
110 157
111 // DropInstruction 158 // DropInstruction
...@@ -448,7 +495,7 @@ public class InstructionsTest { ...@@ -448,7 +495,7 @@ public class InstructionsTest {
448 } 495 }
449 496
450 /** 497 /**
451 - * Test the hashCode() method of the ModEtherInstruction class. 498 + * Test the hashCode() method of the ModVlanPcp class.
452 */ 499 */
453 500
454 @Test 501 @Test
...@@ -630,7 +677,7 @@ public class InstructionsTest { ...@@ -630,7 +677,7 @@ public class InstructionsTest {
630 } 677 }
631 678
632 /** 679 /**
633 - * Test the equals(), hashCode and toString() methods of the 680 + * Test the equals(), hashCode() and toString() methods of the
634 * ModMplsLabelInstruction class. 681 * ModMplsLabelInstruction class.
635 */ 682 */
636 @Test 683 @Test
...@@ -763,4 +810,583 @@ public class InstructionsTest { ...@@ -763,4 +810,583 @@ public class InstructionsTest {
763 assertThat(modTransportPortInstruction1.hashCode(), 810 assertThat(modTransportPortInstruction1.hashCode(),
764 is(not(equalTo(modTransportPortInstruction2.hashCode())))); 811 is(not(equalTo(modTransportPortInstruction2.hashCode()))));
765 } 812 }
813 +
814 + // GroupInstruction
815 +
816 + private final GroupId groupId1 = new DefaultGroupId(1);
817 + private final GroupId groupId2 = new DefaultGroupId(2);
818 + private final Instruction groupInstruction1 = Instructions.createGroup(groupId1);
819 + private final Instruction sameAsGroupInstruction1 = Instructions.createGroup(groupId1);
820 + private final Instruction groupInstruction2 = Instructions.createGroup(groupId2);
821 +
822 + /**
823 + * Test the create group method.
824 + */
825 + @Test
826 + public void testCreateGroupMethod() {
827 + final Instruction instruction = Instructions.createGroup(groupId1);
828 + final Instructions.GroupInstruction groupInstruction =
829 + checkAndConvert(instruction,
830 + Instruction.Type.GROUP,
831 + Instructions.GroupInstruction.class);
832 + assertThat(groupInstruction.groupId(), is(equalTo(groupId1)));
833 + }
834 +
835 + /**
836 + * Test the equals() method of the GroupInstruction class.
837 + */
838 +
839 + @Test
840 + public void testGroupInstructionEquals() {
841 + checkEqualsAndToString(groupInstruction1,
842 + sameAsGroupInstruction1,
843 + groupInstruction2);
844 + }
845 +
846 + // SetQueueInstruction
847 +
848 + private final Instruction setQueueInstruction1 = Instructions.setQueue(1, port1);
849 + private final Instruction sameAsSetQueueInstruction1 = Instructions.setQueue(1, port1);
850 + private final Instruction setQueueInstruction2 = Instructions.setQueue(1, port2);
851 +
852 + /**
853 + * Test the set queue method.
854 + */
855 + @Test
856 + public void testSetQueueMethod() {
857 + final Instruction instruction = Instructions.setQueue(2, port2);
858 + final Instructions.SetQueueInstruction setQueueInstruction =
859 + checkAndConvert(instruction,
860 + Instruction.Type.QUEUE,
861 + Instructions.SetQueueInstruction.class);
862 + assertThat(setQueueInstruction.queueId(), is(2L));
863 + assertThat(setQueueInstruction.port(), is(port2));
864 + }
865 +
866 + /**
867 + * Test the equals() method of the SetQueueInstruction class.
868 + */
869 + @Test
870 + public void testSetQueueInstructionEquals() {
871 + checkEqualsAndToString(setQueueInstruction1,
872 + sameAsSetQueueInstruction1,
873 + setQueueInstruction2);
874 + }
875 +
876 + // MeterInstruction
877 +
878 + MeterId meterId1 = MeterId.meterId(1);
879 + MeterId meterId2 = MeterId.meterId(2);
880 + private final Instruction meterInstruction1 = Instructions.meterTraffic(meterId1);
881 + private final Instruction sameAsMeterInstruction1 = Instructions.meterTraffic(meterId1);
882 + private final Instruction meterInstruction2 = Instructions.meterTraffic(meterId2);
883 +
884 + /**
885 + * Test the meter traffic method.
886 + */
887 + @Test
888 + public void testMeterTrafficMethod() {
889 + final Instruction instruction = Instructions.meterTraffic(meterId1);
890 + final Instructions.MeterInstruction meterInstruction =
891 + checkAndConvert(instruction,
892 + Instruction.Type.METER,
893 + Instructions.MeterInstruction.class);
894 + assertThat(meterInstruction.meterId(), is(meterId1));
895 + }
896 +
897 + /**
898 + * Test the equals() method of the MeterInstruction class.
899 + */
900 + @Test
901 + public void testMeterTrafficInstructionEquals() {
902 + checkEqualsAndToString(meterInstruction1,
903 + sameAsMeterInstruction1,
904 + meterInstruction2);
905 + }
906 +
907 + // TableTypeTransition
908 +
909 + private final Instruction transitionInstruction1 = Instructions.transition(1);
910 + private final Instruction sameAsTransitionInstruction1 = Instructions.transition(1);
911 + private final Instruction transitionInstruction2 = Instructions.transition(2);
912 +
913 + /**
914 + * Test the transition method.
915 + */
916 + @Test
917 + public void testTransitionMethod() {
918 + final Instruction instruction = Instructions.transition(1);
919 + final Instructions.TableTypeTransition tableInstruction =
920 + checkAndConvert(instruction,
921 + Instruction.Type.TABLE,
922 + Instructions.TableTypeTransition.class);
923 + assertThat(tableInstruction.tableId(), is(1));
924 + }
925 +
926 + /**
927 + * Test the equals() method of the TableTypeTransition class.
928 + */
929 + @Test
930 + public void testTableTypeTransitionInstructionEquals() {
931 + checkEqualsAndToString(transitionInstruction1,
932 + sameAsTransitionInstruction1,
933 + transitionInstruction2);
934 + }
935 +
936 + // MetadataInstruction
937 +
938 + long metadata1 = 111L;
939 + long metadataMask1 = 222L;
940 + long metadata2 = 333L;
941 + long metadataMask2 = 444L;
942 +
943 + private final Instruction metadataInstruction1 =
944 + Instructions.writeMetadata(metadata1, metadataMask1);
945 + private final Instruction sameAsMetadataInstruction1 =
946 + Instructions.writeMetadata(metadata1, metadataMask1);
947 + private final Instruction metadataInstruction2 =
948 + Instructions.writeMetadata(metadata2, metadataMask2);
949 +
950 + /**
951 + * Test the write metadata method.
952 + */
953 + @Test
954 + public void testWriteMetadataMethod() {
955 + final Instruction instruction =
956 + Instructions.writeMetadata(metadata1, metadataMask1);
957 + final Instructions.MetadataInstruction metadataInstruction =
958 + checkAndConvert(instruction,
959 + Instruction.Type.METADATA,
960 + Instructions.MetadataInstruction.class);
961 + assertThat(metadataInstruction.metadata(), is(metadata1));
962 + assertThat(metadataInstruction.metadataMask(), is(metadataMask1));
963 + }
964 +
965 + /**
966 + * Test the equals() method of the MetadataInstruction class.
967 + */
968 + @Test
969 + public void testInstructionEquals() {
970 + checkEqualsAndToString(metadataInstruction1,
971 + sameAsMetadataInstruction1,
972 + metadataInstruction2);
973 + }
974 +
975 + // ExtensionInstructionWrapper
976 +
977 + class MockExtensionTreatment implements ExtensionTreatment {
978 + int type;
979 +
980 + MockExtensionTreatment(int type) {
981 + this.type = type;
982 + }
983 + @Override
984 + public ExtensionTreatmentType type() {
985 + return new ExtensionTreatmentType(type);
986 + }
987 +
988 + @Override
989 + public <T> void setPropertyValue(String key, T value) throws ExtensionPropertyException {
990 +
991 + }
992 +
993 + @Override
994 + public <T> T getPropertyValue(String key) throws ExtensionPropertyException {
995 + return null;
996 + }
997 +
998 + @Override
999 + public List<String> getProperties() {
1000 + return null;
1001 + }
1002 +
1003 + @Override
1004 + public byte[] serialize() {
1005 + return new byte[0];
1006 + }
1007 +
1008 + @Override
1009 + public void deserialize(byte[] data) {
1010 +
1011 + }
1012 + }
1013 +
1014 + ExtensionTreatment extensionTreatment1 = new MockExtensionTreatment(111);
1015 + ExtensionTreatment extensionTreatment2 = new MockExtensionTreatment(222);
1016 +
1017 + DeviceId deviceId1 = DeviceId.deviceId("of:1");
1018 + DeviceId deviceId2 = DeviceId.deviceId("of:2");
1019 +
1020 + private final Instruction extensionInstruction1 =
1021 + Instructions.extension(extensionTreatment1, deviceId1);
1022 + private final Instruction sameAsExtensionInstruction1 =
1023 + Instructions.extension(extensionTreatment1, deviceId1);
1024 + private final Instruction extensionInstruction2 =
1025 + Instructions.extension(extensionTreatment2, deviceId2);
1026 +
1027 + /**
1028 + * Test the extension method.
1029 + */
1030 + @Test
1031 + public void testExtensionMethod() {
1032 + final Instruction instruction =
1033 + Instructions.extension(extensionTreatment1, deviceId1);
1034 + final Instructions.ExtensionInstructionWrapper extensionInstructionWrapper =
1035 + checkAndConvert(instruction,
1036 + Instruction.Type.EXTENSION,
1037 + Instructions.ExtensionInstructionWrapper.class);
1038 + assertThat(extensionInstructionWrapper.deviceId(), is(deviceId1));
1039 + assertThat(extensionInstructionWrapper.extensionInstruction(), is(extensionTreatment1));
1040 + }
1041 +
1042 + /**
1043 + * Test the equals() method of the ExtensionInstructionWrapper class.
1044 + */
1045 + @Test
1046 + public void testExtensionInstructionWrapperEquals() {
1047 + checkEqualsAndToString(extensionInstruction1,
1048 + sameAsExtensionInstruction1,
1049 + extensionInstruction2);
1050 + }
1051 +
1052 + // PushHeaderInstructions
1053 +
1054 + private final EthType ethType1 = new EthType(1);
1055 + private final EthType ethType2 = new EthType(2);
1056 + private final Instruction pushHeaderInstruction1 = Instructions.popMpls(ethType1);
1057 + private final Instruction sameAsPushHeaderInstruction1 = Instructions.popMpls(ethType1);
1058 + private final Instruction pushHeaderInstruction2 = Instructions.popMpls(ethType2);
1059 +
1060 + /**
1061 + * Test the pushMpls method.
1062 + */
1063 + @Test
1064 + public void testPushMplsMethod() {
1065 + final Instruction instruction = Instructions.pushMpls();
1066 + final L2ModificationInstruction.PushHeaderInstructions pushHeaderInstruction =
1067 + checkAndConvert(instruction,
1068 + Instruction.Type.L2MODIFICATION,
1069 + L2ModificationInstruction.PushHeaderInstructions.class);
1070 + assertThat(pushHeaderInstruction.ethernetType().toString(),
1071 + is(EthType.EtherType.MPLS_MULTICAST.toString()));
1072 + assertThat(pushHeaderInstruction.subtype(),
1073 + is(L2ModificationInstruction.L2SubType.MPLS_PUSH));
1074 + }
1075 +
1076 + /**
1077 + * Test the popMpls method.
1078 + */
1079 + @Test
1080 + public void testPopMplsMethod() {
1081 + final Instruction instruction = Instructions.popMpls();
1082 + final L2ModificationInstruction.PushHeaderInstructions pushHeaderInstruction =
1083 + checkAndConvert(instruction,
1084 + Instruction.Type.L2MODIFICATION,
1085 + L2ModificationInstruction.PushHeaderInstructions.class);
1086 + assertThat(pushHeaderInstruction.ethernetType().toString(),
1087 + is(EthType.EtherType.MPLS_MULTICAST.toString()));
1088 + assertThat(pushHeaderInstruction.subtype(),
1089 + is(L2ModificationInstruction.L2SubType.MPLS_POP));
1090 + }
1091 +
1092 + /**
1093 + * Test the popMpls(EtherType) method.
1094 + */
1095 + @Test
1096 + public void testPopMplsEthertypeMethod() {
1097 + final Instruction instruction = Instructions.popMpls(new EthType(1));
1098 + final L2ModificationInstruction.PushHeaderInstructions pushHeaderInstruction =
1099 + checkAndConvert(instruction,
1100 + Instruction.Type.L2MODIFICATION,
1101 + L2ModificationInstruction.PushHeaderInstructions.class);
1102 + assertThat(pushHeaderInstruction.ethernetType().toShort(), is((short) 1));
1103 + assertThat(pushHeaderInstruction.subtype(),
1104 + is(L2ModificationInstruction.L2SubType.MPLS_POP));
1105 + }
1106 +
1107 + /**
1108 + * Test the pushVlan method.
1109 + */
1110 + @Test
1111 + public void testPushVlanMethod() {
1112 + final Instruction instruction = Instructions.pushVlan();
1113 + final L2ModificationInstruction.PushHeaderInstructions pushHeaderInstruction =
1114 + checkAndConvert(instruction,
1115 + Instruction.Type.L2MODIFICATION,
1116 + L2ModificationInstruction.PushHeaderInstructions.class);
1117 + assertThat(pushHeaderInstruction.ethernetType().toString(),
1118 + is(EthType.EtherType.VLAN.toString()));
1119 + assertThat(pushHeaderInstruction.subtype(),
1120 + is(L2ModificationInstruction.L2SubType.VLAN_PUSH));
1121 + }
1122 +
1123 + /**
1124 + * Tests the equals(), hashCode() and toString() methods of the
1125 + * PushHeaderInstructions class.
1126 + */
1127 +
1128 + @Test
1129 + public void testPushHeaderInstructionsEquals() {
1130 + checkEqualsAndToString(pushHeaderInstruction1,
1131 + sameAsPushHeaderInstruction1,
1132 + pushHeaderInstruction2);
1133 + }
1134 +
1135 + // ModMplsTtlInstruction
1136 +
1137 + private final Instruction modMplsTtlInstruction1 = Instructions.decMplsTtl();
1138 + private final Instruction sameAsModMplsTtlInstruction1 = Instructions.decMplsTtl();
1139 +
1140 + /**
1141 + * Test the modMplsBos() method.
1142 + */
1143 + @Test
1144 + public void testDecMplsTtlMethod() {
1145 + final Instruction instruction = Instructions.decMplsTtl();
1146 + final L2ModificationInstruction.ModMplsTtlInstruction modMplsTtlInstruction =
1147 + checkAndConvert(instruction,
1148 + Instruction.Type.L2MODIFICATION,
1149 + L2ModificationInstruction.ModMplsTtlInstruction.class);
1150 + assertThat(modMplsTtlInstruction.subtype(),
1151 + is(L2ModificationInstruction.L2SubType.DEC_MPLS_TTL));
1152 + }
1153 +
1154 + /**
1155 + * Tests the equals(), hashCode() and toString() methods of the
1156 + * PushHeaderInstructions class.
1157 + */
1158 +
1159 + @Test
1160 + public void testMplsTtlInstructionsEquals() {
1161 + new EqualsTester()
1162 + .addEqualityGroup(modMplsTtlInstruction1, sameAsModMplsTtlInstruction1)
1163 + .testEquals();
1164 + }
1165 +
1166 + // ModMplsBosInstruction
1167 +
1168 + private final Instruction modMplsBosInstruction1 = Instructions.modMplsBos(true);
1169 + private final Instruction sameAsModMplsBosInstruction1 = Instructions.modMplsBos(true);
1170 + private final Instruction modMplsBosInstruction2 = Instructions.modMplsBos(false);
1171 +
1172 + /**
1173 + * Test the modMplsBos() method.
1174 + */
1175 + @Test
1176 + public void testModMplsBosMethod() {
1177 + final Instruction instruction = Instructions.modMplsBos(true);
1178 + final L2ModificationInstruction.ModMplsBosInstruction modMplsBosInstruction =
1179 + checkAndConvert(instruction,
1180 + Instruction.Type.L2MODIFICATION,
1181 + L2ModificationInstruction.ModMplsBosInstruction.class);
1182 + assertThat(modMplsBosInstruction.subtype(),
1183 + is(L2ModificationInstruction.L2SubType.MPLS_BOS));
1184 + assertThat(modMplsBosInstruction.mplsBos(), is(true));
1185 + }
1186 +
1187 + /**
1188 + * Tests the equals(), hashCode() and toString() methods of the
1189 + * PushHeaderInstructions class.
1190 + */
1191 +
1192 + @Test
1193 + public void testMplsBosInstructionsEquals() {
1194 + checkEqualsAndToString(modMplsBosInstruction1,
1195 + sameAsModMplsBosInstruction1,
1196 + modMplsBosInstruction2);
1197 + }
1198 +
1199 + // PopVlanInstruction
1200 +
1201 + private final Instruction popVlanInstruction1 = Instructions.popVlan();
1202 + private final Instruction sameAsPopVlanInstruction1 = Instructions.popVlan();
1203 +
1204 + /**
1205 + * Test the popVlan method.
1206 + */
1207 + @Test
1208 + public void testPopVlanMethod() {
1209 + final Instruction instruction = Instructions.popVlan();
1210 + final L2ModificationInstruction.PopVlanInstruction popVlanInstruction =
1211 + checkAndConvert(instruction,
1212 + Instruction.Type.L2MODIFICATION,
1213 + L2ModificationInstruction.PopVlanInstruction.class);
1214 + assertThat(popVlanInstruction.subtype(),
1215 + is(L2ModificationInstruction.L2SubType.VLAN_POP));
1216 + }
1217 +
1218 + /**
1219 + * Tests the equals(), hashCode() and toString() methods of the
1220 + * PushHeaderInstructions class.
1221 + */
1222 +
1223 + @Test
1224 + public void testPopVlanInstructionsEquals() {
1225 + new EqualsTester()
1226 + .addEqualityGroup(popVlanInstruction1, sameAsPopVlanInstruction1)
1227 + .testEquals();
1228 + }
1229 +
1230 + // ModArpIPInstruction
1231 +
1232 + private final Instruction modArpIPInstruction1 = Instructions.modArpSpa(ip41);
1233 + private final Instruction sameAsModArpIPInstruction1 = Instructions.modArpSpa(ip41);
1234 + private final Instruction modArpIPInstruction2 = Instructions.modArpSpa(ip42);
1235 +
1236 + /**
1237 + * Test the modArpSpa() method.
1238 + */
1239 + @Test
1240 + public void testModArpSpaMethod() {
1241 + final Instruction instruction = Instructions.modArpSpa(ip41);
1242 + final L3ModificationInstruction.ModArpIPInstruction modArpIPInstruction =
1243 + checkAndConvert(instruction,
1244 + Instruction.Type.L3MODIFICATION,
1245 + L3ModificationInstruction.ModArpIPInstruction.class);
1246 + assertThat(modArpIPInstruction.subtype(),
1247 + is(L3ModificationInstruction.L3SubType.ARP_SPA));
1248 + assertThat(modArpIPInstruction.ip(), is(ip41));
1249 + }
1250 +
1251 + /**
1252 + * Tests the equals(), hashCode() and toString() methods of the
1253 + * ModArpIPInstruction class.
1254 + */
1255 +
1256 + @Test
1257 + public void testModArpIPInstructionEquals() {
1258 + checkEqualsAndToString(modArpIPInstruction1,
1259 + sameAsModArpIPInstruction1,
1260 + modArpIPInstruction2);
1261 + }
1262 +
1263 + // ModArpEthInstruction
1264 +
1265 + private final Instruction modArpEthInstruction1 = Instructions.modArpSha(mac1);
1266 + private final Instruction sameAsModArpEthInstruction1 = Instructions.modArpSha(mac1);
1267 + private final Instruction modArpEthInstruction2 = Instructions.modArpSha(mac2);
1268 +
1269 + /**
1270 + * Test the modArpSha() method.
1271 + */
1272 + @Test
1273 + public void testModArpShaMethod() {
1274 + final Instruction instruction = Instructions.modArpSha(mac1);
1275 + final L3ModificationInstruction.ModArpEthInstruction modArpEthInstruction =
1276 + checkAndConvert(instruction,
1277 + Instruction.Type.L3MODIFICATION,
1278 + L3ModificationInstruction.ModArpEthInstruction.class);
1279 + assertThat(modArpEthInstruction.subtype(),
1280 + is(L3ModificationInstruction.L3SubType.ARP_SHA));
1281 + assertThat(modArpEthInstruction.mac(), is(mac1));
1282 + }
1283 +
1284 + /**
1285 + * Tests the equals(), hashCode() and toString() methods of the
1286 + * ModArpIPInstruction class.
1287 + */
1288 +
1289 + @Test
1290 + public void testModArpEthInstructionEquals() {
1291 + checkEqualsAndToString(modArpEthInstruction1,
1292 + sameAsModArpEthInstruction1,
1293 + modArpEthInstruction2);
1294 + }
1295 +
1296 + // ModArpOpInstruction
1297 +
1298 + private final Instruction modArpOpInstruction1 = Instructions.modL3ArpOp((short) 1);
1299 + private final Instruction sameAsModArpOpInstruction1 = Instructions.modL3ArpOp((short) 1);
1300 + private final Instruction modArpOpInstruction2 = Instructions.modL3ArpOp((short) 2);
1301 +
1302 + /**
1303 + * Test the modL3ArpOp() method.
1304 + */
1305 + @Test
1306 + public void testModArpModL3ArpOpMethod() {
1307 + final Instruction instruction = Instructions.modL3ArpOp((short) 1);
1308 + final L3ModificationInstruction.ModArpOpInstruction modArpEthInstruction =
1309 + checkAndConvert(instruction,
1310 + Instruction.Type.L3MODIFICATION,
1311 + L3ModificationInstruction.ModArpOpInstruction.class);
1312 + assertThat(modArpEthInstruction.subtype(),
1313 + is(L3ModificationInstruction.L3SubType.ARP_OP));
1314 + assertThat(modArpEthInstruction.op(), is(1L));
1315 + }
1316 +
1317 + /**
1318 + * Tests the equals(), hashCode() and toString() methods of the
1319 + * ModArpIPInstruction class.
1320 + */
1321 +
1322 + @Test
1323 + public void testModArpOpInstructionEquals() {
1324 + checkEqualsAndToString(modArpOpInstruction1,
1325 + sameAsModArpOpInstruction1,
1326 + modArpOpInstruction2);
1327 + }
1328 +
1329 + // ModTtlInstruction
1330 +
1331 + private final Instruction modArpTtlInstruction1 = Instructions.copyTtlIn();
1332 + private final Instruction sameAsModArpTtlInstruction1 = Instructions.copyTtlIn();
1333 + private final Instruction modArpTtlInstruction2 = Instructions.copyTtlOut();
1334 + private final Instruction modArpTtlInstruction3 = Instructions.decNwTtl();
1335 +
1336 + /**
1337 + * Test the copyTtlIn() method.
1338 + */
1339 + @Test
1340 + public void testCopyTtlInMethod() {
1341 + final Instruction instruction = Instructions.copyTtlIn();
1342 + final L3ModificationInstruction.ModTtlInstruction modTtlInstruction =
1343 + checkAndConvert(instruction,
1344 + Instruction.Type.L3MODIFICATION,
1345 + L3ModificationInstruction.ModTtlInstruction.class);
1346 + assertThat(modTtlInstruction.subtype(),
1347 + is(L3ModificationInstruction.L3SubType.TTL_IN));
1348 + }
1349 +
1350 + /**
1351 + * Test the copyTtlOut() method.
1352 + */
1353 + @Test
1354 + public void testCopyTtlOutMethod() {
1355 + final Instruction instruction = Instructions.copyTtlOut();
1356 + final L3ModificationInstruction.ModTtlInstruction modTtlInstruction =
1357 + checkAndConvert(instruction,
1358 + Instruction.Type.L3MODIFICATION,
1359 + L3ModificationInstruction.ModTtlInstruction.class);
1360 + assertThat(modTtlInstruction.subtype(),
1361 + is(L3ModificationInstruction.L3SubType.TTL_OUT));
1362 + }
1363 +
1364 + /**
1365 + * Test the decNwTtl() method.
1366 + */
1367 + @Test
1368 + public void testDecNwTtlOutMethod() {
1369 + final Instruction instruction = Instructions.decNwTtl();
1370 + final L3ModificationInstruction.ModTtlInstruction modTtlInstruction =
1371 + checkAndConvert(instruction,
1372 + Instruction.Type.L3MODIFICATION,
1373 + L3ModificationInstruction.ModTtlInstruction.class);
1374 + assertThat(modTtlInstruction.subtype(),
1375 + is(L3ModificationInstruction.L3SubType.DEC_TTL));
1376 + }
1377 +
1378 + /**
1379 + * Tests the equals(), hashCode() and toString() methods of the
1380 + * ModArpIPInstruction class.
1381 + */
1382 +
1383 + @Test
1384 + public void testModTtlInstructionEquals() {
1385 + new EqualsTester()
1386 + .addEqualityGroup(modArpTtlInstruction1, sameAsModArpTtlInstruction1)
1387 + .addEqualityGroup(modArpTtlInstruction2)
1388 + .addEqualityGroup(modArpTtlInstruction3)
1389 + .testEquals();
1390 + }
1391 +
766 } 1392 }
......