Add unit test for Instructions class and improve Criteria toString() test
Change-Id: Ie1ffb4ca0c0bcd168625213fecbdb3818a61704e
Showing
5 changed files
with
468 additions
and
10 deletions
| ... | @@ -119,7 +119,7 @@ public abstract class L2ModificationInstruction implements Instruction { | ... | @@ -119,7 +119,7 @@ public abstract class L2ModificationInstruction implements Instruction { |
| 119 | */ | 119 | */ |
| 120 | public static final class ModVlanIdInstruction extends L2ModificationInstruction { | 120 | public static final class ModVlanIdInstruction extends L2ModificationInstruction { |
| 121 | 121 | ||
| 122 | - public final VlanId vlanId; | 122 | + private final VlanId vlanId; |
| 123 | 123 | ||
| 124 | public ModVlanIdInstruction(VlanId vlanId) { | 124 | public ModVlanIdInstruction(VlanId vlanId) { |
| 125 | this.vlanId = vlanId; | 125 | this.vlanId = vlanId; |
| ... | @@ -168,7 +168,7 @@ public abstract class L2ModificationInstruction implements Instruction { | ... | @@ -168,7 +168,7 @@ public abstract class L2ModificationInstruction implements Instruction { |
| 168 | */ | 168 | */ |
| 169 | public static final class ModVlanPcpInstruction extends L2ModificationInstruction { | 169 | public static final class ModVlanPcpInstruction extends L2ModificationInstruction { |
| 170 | 170 | ||
| 171 | - public final Byte vlanPcp; | 171 | + private final Byte vlanPcp; |
| 172 | 172 | ||
| 173 | public ModVlanPcpInstruction(Byte vlanPcp) { | 173 | public ModVlanPcpInstruction(Byte vlanPcp) { |
| 174 | this.vlanPcp = vlanPcp; | 174 | this.vlanPcp = vlanPcp; | ... | ... |
| ... | @@ -116,7 +116,7 @@ public class CriteriaTest { | ... | @@ -116,7 +116,7 @@ public class CriteriaTest { |
| 116 | private <T> T checkAndConvert(Criterion criterion, Criterion.Type type, Class clazz) { | 116 | private <T> T checkAndConvert(Criterion criterion, Criterion.Type type, Class clazz) { |
| 117 | assertThat(criterion, is(notNullValue())); | 117 | assertThat(criterion, is(notNullValue())); |
| 118 | assertThat(criterion.type(), is(equalTo(type))); | 118 | assertThat(criterion.type(), is(equalTo(type))); |
| 119 | - assertThat(criterion, is(instanceOf(clazz))); | 119 | + assertThat(criterion, instanceOf(clazz)); |
| 120 | return (T) criterion; | 120 | return (T) criterion; |
| 121 | } | 121 | } |
| 122 | 122 | ||
| ... | @@ -131,16 +131,19 @@ public class CriteriaTest { | ... | @@ -131,16 +131,19 @@ public class CriteriaTest { |
| 131 | */ | 131 | */ |
| 132 | private <T extends Criterion> void checkEqualsAndToString(T c1, T c1match, | 132 | private <T extends Criterion> void checkEqualsAndToString(T c1, T c1match, |
| 133 | T c2, Class clazz) { | 133 | T c2, Class clazz) { |
| 134 | - assertThat(c1, is(instanceOf(clazz))); | 134 | + assertThat(c1, instanceOf(clazz)); |
| 135 | - assertThat(c1match, is(instanceOf(clazz))); | 135 | + assertThat(c1match, instanceOf(clazz)); |
| 136 | - assertThat(c2, is(instanceOf(clazz))); | 136 | + assertThat(c2, instanceOf(clazz)); |
| 137 | 137 | ||
| 138 | assertThat(c1, is(equalTo(c1match))); | 138 | assertThat(c1, is(equalTo(c1match))); |
| 139 | assertThat(c1, is(not(equalTo(c2)))); | 139 | assertThat(c1, is(not(equalTo(c2)))); |
| 140 | assertThat(c1, is(not(equalTo(new Object())))); | 140 | assertThat(c1, is(not(equalTo(new Object())))); |
| 141 | 141 | ||
| 142 | - // Make sure the enumerated type appears in the toString() output. | 142 | + // Make sure the enumerated type appears in the toString() output and |
| 143 | + // the toString output is unique. | ||
| 143 | assertThat(c1.toString(), containsString(c1.type().toString())); | 144 | assertThat(c1.toString(), containsString(c1.type().toString())); |
| 145 | + assertThat(c1.toString(), equalTo(c1match.toString())); | ||
| 146 | + assertThat(c1.toString(), not(equalTo(c2.toString()))); | ||
| 144 | } | 147 | } |
| 145 | 148 | ||
| 146 | 149 | ... | ... |
| 1 | +/* | ||
| 2 | + * Copyright 2014 Open Networking Laboratory | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | +package org.onlab.onos.net.flow.instructions; | ||
| 17 | + | ||
| 18 | +import org.junit.Test; | ||
| 19 | +import org.onlab.onos.net.PortNumber; | ||
| 20 | +import org.onlab.packet.IpAddress; | ||
| 21 | +import org.onlab.packet.IpPrefix; | ||
| 22 | +import org.onlab.packet.MacAddress; | ||
| 23 | +import org.onlab.packet.VlanId; | ||
| 24 | + | ||
| 25 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
| 26 | +import static org.hamcrest.Matchers.containsString; | ||
| 27 | +import static org.hamcrest.Matchers.equalTo; | ||
| 28 | +import static org.hamcrest.Matchers.instanceOf; | ||
| 29 | +import static org.hamcrest.Matchers.is; | ||
| 30 | +import static org.hamcrest.Matchers.not; | ||
| 31 | +import static org.hamcrest.Matchers.notNullValue; | ||
| 32 | +import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; | ||
| 33 | +import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility; | ||
| 34 | +import static org.onlab.onos.net.PortNumber.portNumber; | ||
| 35 | + | ||
| 36 | +/** | ||
| 37 | + * Unit tests for the Instructions class. | ||
| 38 | + */ | ||
| 39 | +public class InstructionsTest { | ||
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * Checks that a Criterion object has the proper type, and then converts | ||
| 43 | + * it to the proper type. | ||
| 44 | + * | ||
| 45 | + * @param instruction Instruction object to convert | ||
| 46 | + * @param type Enumerated type value for the Criterion class | ||
| 47 | + * @param clazz Desired Criterion class | ||
| 48 | + * @param <T> The type the caller wants returned | ||
| 49 | + * @return converted object | ||
| 50 | + */ | ||
| 51 | + @SuppressWarnings("unchecked") | ||
| 52 | + private <T> T checkAndConvert(Instruction instruction, Instruction.Type type, Class clazz) { | ||
| 53 | + assertThat(instruction, is(notNullValue())); | ||
| 54 | + assertThat(instruction.type(), is(equalTo(type))); | ||
| 55 | + assertThat(instruction, instanceOf(clazz)); | ||
| 56 | + return (T) instruction; | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + /** | ||
| 60 | + * Checks the equals() and toString() methods of a Criterion class. | ||
| 61 | + * | ||
| 62 | + * @param c1 first object to compare | ||
| 63 | + * @param c1match object that should be equal to the first | ||
| 64 | + * @param c2 object that should be not equal to the first | ||
| 65 | + * @param clazz Class object for the Criterion subclass | ||
| 66 | + * @param <T> type of the arguments | ||
| 67 | + */ | ||
| 68 | + private <T extends Instruction> void checkEqualsAndToString(T c1, T c1match, | ||
| 69 | + T c2, Class clazz) { | ||
| 70 | + assertThat(c1, instanceOf(clazz)); | ||
| 71 | + assertThat(c1match, instanceOf(clazz)); | ||
| 72 | + assertThat(c2, instanceOf(clazz)); | ||
| 73 | + | ||
| 74 | + assertThat(c1, is(equalTo(c1match))); | ||
| 75 | + assertThat(c1, is(not(equalTo(c2)))); | ||
| 76 | + assertThat(c1, is(not(equalTo(new Object())))); | ||
| 77 | + | ||
| 78 | + // Make sure the toString() output is unique and correct. | ||
| 79 | + assertThat(c1.toString(), containsString("{")); | ||
| 80 | + assertThat(c1.toString(), equalTo(c1match.toString())); | ||
| 81 | + assertThat(c1.toString(), not(equalTo(c2.toString()))); | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + /** | ||
| 85 | + * Checks that Instructions is a proper utility class. | ||
| 86 | + */ | ||
| 87 | + @Test | ||
| 88 | + public void testInstructionsUtilityClass() { | ||
| 89 | + assertThatClassIsUtility(Instructions.class); | ||
| 90 | + } | ||
| 91 | + | ||
| 92 | + /** | ||
| 93 | + * Checks that the Instruction class implementations are immutable. | ||
| 94 | + */ | ||
| 95 | + @Test | ||
| 96 | + public void testImmutabilityOfInstructions() { | ||
| 97 | + assertThatClassIsImmutable(Instructions.DropInstruction.class); | ||
| 98 | + assertThatClassIsImmutable(Instructions.OutputInstruction.class); | ||
| 99 | + assertThatClassIsImmutable(L0ModificationInstruction.ModLambdaInstruction.class); | ||
| 100 | + assertThatClassIsImmutable(L2ModificationInstruction.ModEtherInstruction.class); | ||
| 101 | + assertThatClassIsImmutable(L2ModificationInstruction.ModVlanIdInstruction.class); | ||
| 102 | + assertThatClassIsImmutable(L2ModificationInstruction.ModVlanPcpInstruction.class); | ||
| 103 | + assertThatClassIsImmutable(L3ModificationInstruction.ModIPInstruction.class); | ||
| 104 | + } | ||
| 105 | + | ||
| 106 | + // DropInstruction | ||
| 107 | + | ||
| 108 | + private final Instructions.DropInstruction drop1 = Instructions.createDrop(); | ||
| 109 | + private final Instructions.DropInstruction drop2 = Instructions.createDrop(); | ||
| 110 | + | ||
| 111 | + /** | ||
| 112 | + * Test the createDrop method. | ||
| 113 | + */ | ||
| 114 | + @Test | ||
| 115 | + public void testCreateDropMethod() { | ||
| 116 | + Instructions.DropInstruction instruction = Instructions.createDrop(); | ||
| 117 | + checkAndConvert(instruction, | ||
| 118 | + Instruction.Type.DROP, | ||
| 119 | + Instructions.DropInstruction.class); | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | + /** | ||
| 123 | + * Test the equals() method of the DropInstruction class. | ||
| 124 | + */ | ||
| 125 | + | ||
| 126 | + @Test | ||
| 127 | + public void testDropInstructionEquals() throws Exception { | ||
| 128 | + assertThat(drop1, is(equalTo(drop2))); | ||
| 129 | + } | ||
| 130 | + | ||
| 131 | + /** | ||
| 132 | + * Test the hashCode() method of the DropInstruction class. | ||
| 133 | + */ | ||
| 134 | + | ||
| 135 | + @Test | ||
| 136 | + public void testDropInstructionHashCode() { | ||
| 137 | + assertThat(drop1.hashCode(), is(equalTo(drop2.hashCode()))); | ||
| 138 | + } | ||
| 139 | + | ||
| 140 | + // OutputInstruction | ||
| 141 | + | ||
| 142 | + private final PortNumber port1 = portNumber(1); | ||
| 143 | + private final PortNumber port2 = portNumber(2); | ||
| 144 | + private final Instructions.OutputInstruction output1 = Instructions.createOutput(port1); | ||
| 145 | + private final Instructions.OutputInstruction sameAsOutput1 = Instructions.createOutput(port1); | ||
| 146 | + private final Instructions.OutputInstruction output2 = Instructions.createOutput(port2); | ||
| 147 | + | ||
| 148 | + /** | ||
| 149 | + * Test the createOutput method. | ||
| 150 | + */ | ||
| 151 | + @Test | ||
| 152 | + public void testCreateOutputMethod() { | ||
| 153 | + final Instruction instruction = Instructions.createOutput(port2); | ||
| 154 | + final Instructions.OutputInstruction outputInstruction = | ||
| 155 | + checkAndConvert(instruction, | ||
| 156 | + Instruction.Type.OUTPUT, | ||
| 157 | + Instructions.OutputInstruction.class); | ||
| 158 | + assertThat(outputInstruction.port(), is(equalTo(port2))); | ||
| 159 | + } | ||
| 160 | + | ||
| 161 | + | ||
| 162 | + /** | ||
| 163 | + * Test the equals() method of the OutputInstruction class. | ||
| 164 | + */ | ||
| 165 | + | ||
| 166 | + @Test | ||
| 167 | + public void testOutputInstructionEquals() throws Exception { | ||
| 168 | + checkEqualsAndToString(output1, sameAsOutput1, output2, | ||
| 169 | + Instructions.OutputInstruction.class); | ||
| 170 | + } | ||
| 171 | + | ||
| 172 | + /** | ||
| 173 | + * Test the hashCode() method of the OutputInstruction class. | ||
| 174 | + */ | ||
| 175 | + | ||
| 176 | + @Test | ||
| 177 | + public void testOutputInstructionHashCode() { | ||
| 178 | + assertThat(output1.hashCode(), is(equalTo(sameAsOutput1.hashCode()))); | ||
| 179 | + assertThat(output1.hashCode(), is(not(equalTo(output2.hashCode())))); | ||
| 180 | + } | ||
| 181 | + | ||
| 182 | + // ModLambdaInstruction | ||
| 183 | + | ||
| 184 | + private final short lambda1 = 1; | ||
| 185 | + private final short lambda2 = 2; | ||
| 186 | + private final Instruction lambdaInstruction1 = Instructions.modL0Lambda(lambda1); | ||
| 187 | + private final Instruction sameAsLambdaInstruction1 = Instructions.modL0Lambda(lambda1); | ||
| 188 | + private final Instruction lambdaInstruction2 = Instructions.modL0Lambda(lambda2); | ||
| 189 | + | ||
| 190 | + /** | ||
| 191 | + * Test the modL0Lambda method. | ||
| 192 | + */ | ||
| 193 | + @Test | ||
| 194 | + public void testCreateLambdaMethod() { | ||
| 195 | + final Instruction instruction = Instructions.modL0Lambda(lambda1); | ||
| 196 | + final L0ModificationInstruction.ModLambdaInstruction lambdaInstruction = | ||
| 197 | + checkAndConvert(instruction, | ||
| 198 | + Instruction.Type.L0MODIFICATION, | ||
| 199 | + L0ModificationInstruction.ModLambdaInstruction.class); | ||
| 200 | + assertThat(lambdaInstruction.lambda(), is(equalTo(lambda1))); | ||
| 201 | + } | ||
| 202 | + | ||
| 203 | + | ||
| 204 | + /** | ||
| 205 | + * Test the equals() method of the ModLambdaInstruction class. | ||
| 206 | + */ | ||
| 207 | + | ||
| 208 | + @Test | ||
| 209 | + public void testModLambdaInstructionEquals() throws Exception { | ||
| 210 | + checkEqualsAndToString(lambdaInstruction1, | ||
| 211 | + sameAsLambdaInstruction1, | ||
| 212 | + lambdaInstruction2, | ||
| 213 | + L0ModificationInstruction.ModLambdaInstruction.class); | ||
| 214 | + } | ||
| 215 | + | ||
| 216 | + /** | ||
| 217 | + * Test the hashCode() method of the ModLambdaInstruction class. | ||
| 218 | + */ | ||
| 219 | + | ||
| 220 | + @Test | ||
| 221 | + public void testModLambdaInstructionHashCode() { | ||
| 222 | + assertThat(lambdaInstruction1.hashCode(), | ||
| 223 | + is(equalTo(sameAsLambdaInstruction1.hashCode()))); | ||
| 224 | + assertThat(lambdaInstruction1.hashCode(), | ||
| 225 | + is(not(equalTo(lambdaInstruction2.hashCode())))); | ||
| 226 | + } | ||
| 227 | + | ||
| 228 | + // ModEtherInstruction | ||
| 229 | + | ||
| 230 | + private static final String MAC1 = "00:00:00:00:00:01"; | ||
| 231 | + private static final String MAC2 = "00:00:00:00:00:02"; | ||
| 232 | + private final MacAddress mac1 = MacAddress.valueOf(MAC1); | ||
| 233 | + private final MacAddress mac2 = MacAddress.valueOf(MAC2); | ||
| 234 | + private final Instruction modEtherInstruction1 = Instructions.modL2Src(mac1); | ||
| 235 | + private final Instruction sameAsModEtherInstruction1 = Instructions.modL2Src(mac1); | ||
| 236 | + private final Instruction modEtherInstruction2 = Instructions.modL2Src(mac2); | ||
| 237 | + | ||
| 238 | + /** | ||
| 239 | + * Test the modL2Src method. | ||
| 240 | + */ | ||
| 241 | + @Test | ||
| 242 | + public void testModL2SrcMethod() { | ||
| 243 | + final Instruction instruction = Instructions.modL2Src(mac1); | ||
| 244 | + final L2ModificationInstruction.ModEtherInstruction modEtherInstruction = | ||
| 245 | + checkAndConvert(instruction, | ||
| 246 | + Instruction.Type.L2MODIFICATION, | ||
| 247 | + L2ModificationInstruction.ModEtherInstruction.class); | ||
| 248 | + assertThat(modEtherInstruction.mac(), is(equalTo(mac1))); | ||
| 249 | + assertThat(modEtherInstruction.subtype(), | ||
| 250 | + is(equalTo(L2ModificationInstruction.L2SubType.ETH_SRC))); | ||
| 251 | + } | ||
| 252 | + | ||
| 253 | + /** | ||
| 254 | + * Test the modL2Dst method. | ||
| 255 | + */ | ||
| 256 | + @Test | ||
| 257 | + public void testModL2DstMethod() { | ||
| 258 | + final Instruction instruction = Instructions.modL2Dst(mac1); | ||
| 259 | + final L2ModificationInstruction.ModEtherInstruction modEtherInstruction = | ||
| 260 | + checkAndConvert(instruction, | ||
| 261 | + Instruction.Type.L2MODIFICATION, | ||
| 262 | + L2ModificationInstruction.ModEtherInstruction.class); | ||
| 263 | + assertThat(modEtherInstruction.mac(), is(equalTo(mac1))); | ||
| 264 | + assertThat(modEtherInstruction.subtype(), | ||
| 265 | + is(equalTo(L2ModificationInstruction.L2SubType.ETH_DST))); | ||
| 266 | + } | ||
| 267 | + | ||
| 268 | + /** | ||
| 269 | + * Test the equals() method of the ModEtherInstruction class. | ||
| 270 | + */ | ||
| 271 | + | ||
| 272 | + @Test | ||
| 273 | + public void testModEtherInstructionEquals() throws Exception { | ||
| 274 | + checkEqualsAndToString(modEtherInstruction1, | ||
| 275 | + sameAsModEtherInstruction1, | ||
| 276 | + modEtherInstruction2, | ||
| 277 | + L2ModificationInstruction.ModEtherInstruction.class); | ||
| 278 | + } | ||
| 279 | + | ||
| 280 | + /** | ||
| 281 | + * Test the hashCode() method of the ModEtherInstruction class. | ||
| 282 | + */ | ||
| 283 | + | ||
| 284 | + @Test | ||
| 285 | + public void testModEtherInstructionHashCode() { | ||
| 286 | + assertThat(modEtherInstruction1.hashCode(), | ||
| 287 | + is(equalTo(sameAsModEtherInstruction1.hashCode()))); | ||
| 288 | + assertThat(modEtherInstruction1.hashCode(), | ||
| 289 | + is(not(equalTo(modEtherInstruction2.hashCode())))); | ||
| 290 | + } | ||
| 291 | + | ||
| 292 | + | ||
| 293 | + // ModVlanIdInstruction | ||
| 294 | + | ||
| 295 | + private final short vlan1 = 1; | ||
| 296 | + private final short vlan2 = 2; | ||
| 297 | + private final VlanId vlanId1 = VlanId.vlanId(vlan1); | ||
| 298 | + private final VlanId vlanId2 = VlanId.vlanId(vlan2); | ||
| 299 | + private final Instruction modVlanId1 = Instructions.modVlanId(vlanId1); | ||
| 300 | + private final Instruction sameAsModVlanId1 = Instructions.modVlanId(vlanId1); | ||
| 301 | + private final Instruction modVlanId2 = Instructions.modVlanId(vlanId2); | ||
| 302 | + | ||
| 303 | + /** | ||
| 304 | + * Test the modVlanId method. | ||
| 305 | + */ | ||
| 306 | + @Test | ||
| 307 | + public void testModVlanIdMethod() { | ||
| 308 | + final Instruction instruction = Instructions.modVlanId(vlanId1); | ||
| 309 | + final L2ModificationInstruction.ModVlanIdInstruction modEtherInstruction = | ||
| 310 | + checkAndConvert(instruction, | ||
| 311 | + Instruction.Type.L2MODIFICATION, | ||
| 312 | + L2ModificationInstruction.ModVlanIdInstruction.class); | ||
| 313 | + assertThat(modEtherInstruction.vlanId(), is(equalTo(vlanId1))); | ||
| 314 | + assertThat(modEtherInstruction.subtype(), | ||
| 315 | + is(equalTo(L2ModificationInstruction.L2SubType.VLAN_ID))); | ||
| 316 | + } | ||
| 317 | + | ||
| 318 | + /** | ||
| 319 | + * Test the equals() method of the ModVlanIdInstruction class. | ||
| 320 | + */ | ||
| 321 | + | ||
| 322 | + @Test | ||
| 323 | + public void testModVlanIdInstructionEquals() throws Exception { | ||
| 324 | + checkEqualsAndToString(modVlanId1, | ||
| 325 | + sameAsModVlanId1, | ||
| 326 | + modVlanId2, | ||
| 327 | + L2ModificationInstruction.ModVlanIdInstruction.class); | ||
| 328 | + } | ||
| 329 | + | ||
| 330 | + /** | ||
| 331 | + * Test the hashCode() method of the ModEtherInstruction class. | ||
| 332 | + */ | ||
| 333 | + | ||
| 334 | + @Test | ||
| 335 | + public void testModVlanIdInstructionHashCode() { | ||
| 336 | + assertThat(modVlanId1.hashCode(), | ||
| 337 | + is(equalTo(sameAsModVlanId1.hashCode()))); | ||
| 338 | + assertThat(modVlanId1.hashCode(), | ||
| 339 | + is(not(equalTo(modVlanId2.hashCode())))); | ||
| 340 | + } | ||
| 341 | + | ||
| 342 | + | ||
| 343 | + // ModVlanPcpInstruction | ||
| 344 | + | ||
| 345 | + private final byte vlanPcp1 = 1; | ||
| 346 | + private final byte vlanPcp2 = 2; | ||
| 347 | + private final Instruction modVlanPcp1 = Instructions.modVlanPcp(vlanPcp1); | ||
| 348 | + private final Instruction sameAsModVlanPcp1 = Instructions.modVlanPcp(vlanPcp1); | ||
| 349 | + private final Instruction modVlanPcp2 = Instructions.modVlanPcp(vlanPcp2); | ||
| 350 | + | ||
| 351 | + /** | ||
| 352 | + * Test the modVlanPcp method. | ||
| 353 | + */ | ||
| 354 | + @Test | ||
| 355 | + public void testModVlanPcpMethod() { | ||
| 356 | + final Instruction instruction = Instructions.modVlanPcp(vlanPcp1); | ||
| 357 | + final L2ModificationInstruction.ModVlanPcpInstruction modEtherInstruction = | ||
| 358 | + checkAndConvert(instruction, | ||
| 359 | + Instruction.Type.L2MODIFICATION, | ||
| 360 | + L2ModificationInstruction.ModVlanPcpInstruction.class); | ||
| 361 | + assertThat(modEtherInstruction.vlanPcp(), is(equalTo(vlanPcp1))); | ||
| 362 | + assertThat(modEtherInstruction.subtype(), | ||
| 363 | + is(equalTo(L2ModificationInstruction.L2SubType.VLAN_PCP))); | ||
| 364 | + } | ||
| 365 | + | ||
| 366 | + /** | ||
| 367 | + * Test the equals() method of the ModVlanPcpInstruction class. | ||
| 368 | + */ | ||
| 369 | + | ||
| 370 | + @Test | ||
| 371 | + public void testModVlanPcpInstructionEquals() throws Exception { | ||
| 372 | + checkEqualsAndToString(modVlanPcp1, | ||
| 373 | + sameAsModVlanPcp1, | ||
| 374 | + modVlanPcp2, | ||
| 375 | + L2ModificationInstruction.ModVlanPcpInstruction.class); | ||
| 376 | + } | ||
| 377 | + | ||
| 378 | + /** | ||
| 379 | + * Test the hashCode() method of the ModEtherInstruction class. | ||
| 380 | + */ | ||
| 381 | + | ||
| 382 | + @Test | ||
| 383 | + public void testModVlanPcpInstructionHashCode() { | ||
| 384 | + assertThat(modVlanPcp1.hashCode(), | ||
| 385 | + is(equalTo(sameAsModVlanPcp1.hashCode()))); | ||
| 386 | + assertThat(modVlanPcp1.hashCode(), | ||
| 387 | + is(not(equalTo(modVlanPcp2.hashCode())))); | ||
| 388 | + } | ||
| 389 | + | ||
| 390 | + // ModIPerInstruction | ||
| 391 | + | ||
| 392 | + private static final String IP1 = "1.2.3.4/24"; | ||
| 393 | + private static final String IP2 = "5.6.7.8/24"; | ||
| 394 | + private IpAddress ip1 = IpPrefix.valueOf(IP1).address(); | ||
| 395 | + private IpAddress ip2 = IpPrefix.valueOf(IP2).address(); | ||
| 396 | + private final Instruction modIPInstruction1 = Instructions.modL3Src(ip1); | ||
| 397 | + private final Instruction sameAsModIPInstruction1 = Instructions.modL3Src(ip1); | ||
| 398 | + private final Instruction modIPInstruction2 = Instructions.modL3Src(ip2); | ||
| 399 | + | ||
| 400 | + /** | ||
| 401 | + * Test the modL3Src method. | ||
| 402 | + */ | ||
| 403 | + @Test | ||
| 404 | + public void testModL3SrcMethod() { | ||
| 405 | + final Instruction instruction = Instructions.modL3Src(ip1); | ||
| 406 | + final L3ModificationInstruction.ModIPInstruction modIPInstruction = | ||
| 407 | + checkAndConvert(instruction, | ||
| 408 | + Instruction.Type.L3MODIFICATION, | ||
| 409 | + L3ModificationInstruction.ModIPInstruction.class); | ||
| 410 | + assertThat(modIPInstruction.ip(), is(equalTo(ip1))); | ||
| 411 | + assertThat(modIPInstruction.subtype(), | ||
| 412 | + is(equalTo(L3ModificationInstruction.L3SubType.IP_SRC))); | ||
| 413 | + } | ||
| 414 | + | ||
| 415 | + /** | ||
| 416 | + * Test the modL3Dst method. | ||
| 417 | + */ | ||
| 418 | + @Test | ||
| 419 | + public void testModL3DstMethod() { | ||
| 420 | + final Instruction instruction = Instructions.modL3Dst(ip1); | ||
| 421 | + final L3ModificationInstruction.ModIPInstruction modIPInstruction = | ||
| 422 | + checkAndConvert(instruction, | ||
| 423 | + Instruction.Type.L3MODIFICATION, | ||
| 424 | + L3ModificationInstruction.ModIPInstruction.class); | ||
| 425 | + assertThat(modIPInstruction.ip(), is(equalTo(ip1))); | ||
| 426 | + assertThat(modIPInstruction.subtype(), | ||
| 427 | + is(equalTo(L3ModificationInstruction.L3SubType.IP_DST))); | ||
| 428 | + } | ||
| 429 | + | ||
| 430 | + /** | ||
| 431 | + * Test the equals() method of the ModEtherInstruction class. | ||
| 432 | + */ | ||
| 433 | + | ||
| 434 | + @Test | ||
| 435 | + public void testModIPInstructionEquals() throws Exception { | ||
| 436 | + checkEqualsAndToString(modIPInstruction1, | ||
| 437 | + sameAsModIPInstruction1, | ||
| 438 | + modIPInstruction2, | ||
| 439 | + L3ModificationInstruction.ModIPInstruction.class); | ||
| 440 | + } | ||
| 441 | + | ||
| 442 | + /** | ||
| 443 | + * Test the hashCode() method of the ModEtherInstruction class. | ||
| 444 | + */ | ||
| 445 | + | ||
| 446 | + @Test | ||
| 447 | + public void testModIPInstructionHashCode() { | ||
| 448 | + assertThat(modIPInstruction1.hashCode(), | ||
| 449 | + is(equalTo(sameAsModIPInstruction1.hashCode()))); | ||
| 450 | + assertThat(modIPInstruction1.hashCode(), | ||
| 451 | + is(not(equalTo(modIPInstruction2.hashCode())))); | ||
| 452 | + } | ||
| 453 | + | ||
| 454 | + | ||
| 455 | +} |
| ... | @@ -192,7 +192,7 @@ public class FlowModBuilderVer10 extends FlowModBuilder { | ... | @@ -192,7 +192,7 @@ public class FlowModBuilderVer10 extends FlowModBuilder { |
| 192 | return factory().actions().setDlSrc(MacAddress.of(eth.mac().toLong())); | 192 | return factory().actions().setDlSrc(MacAddress.of(eth.mac().toLong())); |
| 193 | case VLAN_ID: | 193 | case VLAN_ID: |
| 194 | ModVlanIdInstruction vlanId = (ModVlanIdInstruction) l2m; | 194 | ModVlanIdInstruction vlanId = (ModVlanIdInstruction) l2m; |
| 195 | - return factory().actions().setVlanVid(VlanVid.ofVlan(vlanId.vlanId.toShort())); | 195 | + return factory().actions().setVlanVid(VlanVid.ofVlan(vlanId.vlanId().toShort())); |
| 196 | case VLAN_PCP: | 196 | case VLAN_PCP: |
| 197 | ModVlanPcpInstruction vlanPcp = (ModVlanPcpInstruction) l2m; | 197 | ModVlanPcpInstruction vlanPcp = (ModVlanPcpInstruction) l2m; |
| 198 | return factory().actions().setVlanPcp(VlanPcp.of(vlanPcp.vlanPcp())); | 198 | return factory().actions().setVlanPcp(VlanPcp.of(vlanPcp.vlanPcp())); | ... | ... |
| ... | @@ -210,11 +210,11 @@ public class FlowModBuilderVer13 extends FlowModBuilder { | ... | @@ -210,11 +210,11 @@ public class FlowModBuilderVer13 extends FlowModBuilder { |
| 210 | break; | 210 | break; |
| 211 | case VLAN_ID: | 211 | case VLAN_ID: |
| 212 | ModVlanIdInstruction vlanId = (ModVlanIdInstruction) l2m; | 212 | ModVlanIdInstruction vlanId = (ModVlanIdInstruction) l2m; |
| 213 | - oxm = factory().oxms().vlanVid(OFVlanVidMatch.ofVlan(vlanId.vlanId.toShort())); | 213 | + oxm = factory().oxms().vlanVid(OFVlanVidMatch.ofVlan(vlanId.vlanId().toShort())); |
| 214 | break; | 214 | break; |
| 215 | case VLAN_PCP: | 215 | case VLAN_PCP: |
| 216 | ModVlanPcpInstruction vlanPcp = (ModVlanPcpInstruction) l2m; | 216 | ModVlanPcpInstruction vlanPcp = (ModVlanPcpInstruction) l2m; |
| 217 | - oxm = factory().oxms().vlanPcp(VlanPcp.of(vlanPcp.vlanPcp)); | 217 | + oxm = factory().oxms().vlanPcp(VlanPcp.of(vlanPcp.vlanPcp())); |
| 218 | break; | 218 | break; |
| 219 | default: | 219 | default: |
| 220 | log.warn("Unimplemented action type {}.", l2m.subtype()); | 220 | log.warn("Unimplemented action type {}.", l2m.subtype()); | ... | ... |
-
Please register or login to post a comment