Example #1
0
 @Test
 public void testOutPortIds() {
   Condition cond = new Condition();
   UUID inPort = new UUID(rand.nextLong(), rand.nextLong());
   UUID outPort = new UUID(rand.nextLong(), rand.nextLong());
   pktCtx.inPortId_$eq(inPort);
   cond.outPortIds = new HashSet<>();
   cond.outPortIds.add(new UUID(rand.nextLong(), rand.nextLong()));
   cond.outPortIds.add(new UUID(rand.nextLong(), rand.nextLong()));
   // The condition should not match the packet.
   Assert.assertFalse(cond.matches(pktCtx));
   Assert.assertFalse(cond.matches(pktCtx));
   pktCtx.outPortId_$eq(outPort);
   Assert.assertFalse(cond.matches(pktCtx));
   Assert.assertFalse(cond.matches(pktCtx));
   // Verify that outPortInv causes a match.
   cond.outPortInv = true;
   Assert.assertTrue(cond.matches(pktCtx));
   Assert.assertTrue(cond.matches(pktCtx));
   pktCtx.outPortId_$eq(null);
   Assert.assertTrue(cond.matches(pktCtx));
   Assert.assertTrue(cond.matches(pktCtx));
   // Now add outPort to the condition - it stops matching due to invert
   // on forwarding elements, but stays the same on port filters.
   cond.outPortIds.add(outPort);
   pktCtx.outPortId_$eq(outPort);
   Assert.assertFalse(cond.matches(pktCtx));
   cond.outPortInv = false;
   Assert.assertTrue(cond.matches(pktCtx));
 }