Java tutorial
/* * Copyright 2017-present Open Networking Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onosproject.net.pi.runtime; import com.google.common.collect.Maps; import com.google.common.testing.EqualsTester; import org.apache.commons.collections.CollectionUtils; import org.junit.Test; import org.onlab.util.ImmutableByteSequence; import org.onosproject.net.pi.model.PiActionId; import org.onosproject.net.pi.model.PiMatchFieldId; import org.onosproject.net.pi.model.PiTableId; import java.util.Map; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; import static org.onosproject.net.pi.runtime.PiConstantsTest.DOT; import static org.onosproject.net.pi.runtime.PiConstantsTest.DROP; import static org.onosproject.net.pi.runtime.PiConstantsTest.DST_ADDR; import static org.onosproject.net.pi.runtime.PiConstantsTest.IPV4_HEADER_NAME; /** * Unit tests for PiTableEntry class. */ public class PiTableEntryTest { private final PiTableEntry piTableEntry1 = PiTableEntry.builder().forTable(PiTableId.of("Table10")) .withCookie(0xac).withPriority(10).withAction(PiAction.builder().withId(PiActionId.of(DROP)).build()) .withTimeout(100).build(); private final PiTableEntry sameAsPiTableEntry1 = PiTableEntry.builder().forTable(PiTableId.of("Table10")) .withCookie(0xac).withPriority(10).withAction(PiAction.builder().withId(PiActionId.of(DROP)).build()) .withTimeout(100).build(); private final PiTableEntry piTableEntry2 = PiTableEntry.builder().forTable(PiTableId.of("Table20")) .withCookie(0xac).withPriority(10).withAction(PiAction.builder().withId(PiActionId.of(DROP)).build()) .withTimeout(1000).build(); /** * Checks that the PiTableEntry class is immutable. */ @Test public void testImmutability() { assertThatClassIsImmutable(PiTableEntry.class); } /** * Tests the equals, hashCode and toString methods using Guava EqualsTester. */ @Test public void testEquals() { new EqualsTester().addEqualityGroup(piTableEntry1, sameAsPiTableEntry1).addEqualityGroup(piTableEntry2) .testEquals(); } /** * Tests creation of a DefaultFlowRule using a FlowRule constructor. */ @Test public void testBuilder() { PiTableId piTableId = PiTableId.of("table10"); long cookie = 0xfff0323; int priority = 100; double timeout = 1000; PiMatchFieldId piMatchFieldId = PiMatchFieldId.of(IPV4_HEADER_NAME + DOT + DST_ADDR); PiFieldMatch piFieldMatch = new PiExactFieldMatch(piMatchFieldId, ImmutableByteSequence.copyFrom(0x0a010101)); PiAction piAction = PiAction.builder().withId(PiActionId.of(DROP)).build(); final Map<PiMatchFieldId, PiFieldMatch> fieldMatches = Maps.newHashMap(); fieldMatches.put(piMatchFieldId, piFieldMatch); final PiTableEntry piTableEntry = PiTableEntry.builder().forTable(piTableId) .withMatchKey(PiMatchKey.builder().addFieldMatches(fieldMatches.values()).build()) .withAction(piAction).withCookie(cookie).withPriority(priority).withTimeout(timeout).build(); assertThat(piTableEntry.table(), is(piTableId)); assertThat(piTableEntry.cookie(), is(cookie)); assertThat("Priority must be set", piTableEntry.priority().isPresent()); assertThat("Timeout must be set", piTableEntry.timeout().isPresent()); assertThat(piTableEntry.priority().get(), is(priority)); assertThat(piTableEntry.timeout().get(), is(timeout)); assertThat("Incorrect match param value", CollectionUtils.isEqualCollection(piTableEntry.matchKey().fieldMatches(), fieldMatches.values())); assertThat(piTableEntry.action(), is(piAction)); } }