diff options
author | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
---|---|---|
committer | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
commit | 13d05bc8458758ee39cb829098241e89616717ee (patch) | |
tree | 22a4d1ce65f15952f07a3df5af4b462b4697cb3a /framework/src/onos/core/api/src/test/java/org/onosproject/net/group | |
parent | 6139282e1e93c2322076de4b91b1c85d0bc4a8b3 (diff) |
ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60
Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd
Diffstat (limited to 'framework/src/onos/core/api/src/test/java/org/onosproject/net/group')
4 files changed, 415 insertions, 0 deletions
diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupDescriptionTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupDescriptionTest.java new file mode 100644 index 00000000..66b0089e --- /dev/null +++ b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupDescriptionTest.java @@ -0,0 +1,96 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * 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.group; + +import org.junit.Test; +import org.onosproject.net.flow.DefaultTrafficTreatment; +import org.onosproject.net.flow.TrafficTreatment; + +import com.google.common.collect.ImmutableList; +import com.google.common.testing.EqualsTester; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutableBaseClass; +import static org.onosproject.net.NetTestTools.APP_ID; +import static org.onosproject.net.NetTestTools.did; + +/** + * Default group description unit tests. + */ +public class DefaultGroupDescriptionTest { + byte[] keyData = "abcdefg".getBytes(); + private final GroupKey key = new DefaultGroupKey(keyData); + private final TrafficTreatment treatment = + DefaultTrafficTreatment.emptyTreatment(); + private final GroupBucket bucket = + DefaultGroupBucket.createSelectGroupBucket(treatment); + private final GroupBuckets groupBuckets = + new GroupBuckets(ImmutableList.of(bucket)); + private final DefaultGroupDescription d1 = + new DefaultGroupDescription(did("2"), + GroupDescription.Type.FAILOVER, + groupBuckets); + private final DefaultGroupDescription sameAsD1 = + new DefaultGroupDescription(d1); + private final DefaultGroupDescription d2 = + new DefaultGroupDescription(did("2"), + GroupDescription.Type.INDIRECT, + groupBuckets); + private final DefaultGroupDescription d3 = + new DefaultGroupDescription(did("3"), + GroupDescription.Type.FAILOVER, + groupBuckets, + key, + 711, + APP_ID); + + /** + * Checks that the Default group description class is immutable and can be + * inherited from. + */ + @Test + public void testImmutability() { + assertThatClassIsImmutableBaseClass(DefaultGroupDescription.class); + } + + /** + * Tests for proper operation of equals(), hashCode() and toString() methods. + */ + @Test + public void checkEquals() { + new EqualsTester() + .addEqualityGroup(d1, sameAsD1) + .addEqualityGroup(d2) + .addEqualityGroup(d3) + .testEquals(); + } + + /** + * Checks that construction of an object was correct. + */ + @Test + public void testConstruction() { + assertThat(d3.deviceId(), is(did("3"))); + assertThat(d3.type(), is(GroupDescription.Type.FAILOVER)); + assertThat(d3.buckets(), is(groupBuckets)); + assertThat(d3.appId(), is(APP_ID)); + assertThat(d3.givenGroupId(), is(711)); + assertThat(key.key(), is(keyData)); + assertThat(d3.appCookie().key(), is(keyData)); + } +} + diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupTest.java new file mode 100644 index 00000000..f27f266b --- /dev/null +++ b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/DefaultGroupTest.java @@ -0,0 +1,97 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * 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.group; + +import org.junit.Test; +import org.onosproject.core.DefaultGroupId; +import org.onosproject.core.GroupId; +import org.onosproject.net.NetTestTools; +import org.onosproject.net.flow.DefaultTrafficTreatment; + +import com.google.common.collect.ImmutableList; +import com.google.common.testing.EqualsTester; + +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.*; +import static org.onosproject.net.NetTestTools.did; + +/** + * Unit tests for DefaultGroup class. + */ +public class DefaultGroupTest { + private final GroupId id1 = new DefaultGroupId(6); + private final GroupId id2 = new DefaultGroupId(7); + private final GroupBucket bucket = + DefaultGroupBucket.createSelectGroupBucket( + DefaultTrafficTreatment.emptyTreatment()); + private final GroupBuckets groupBuckets = + new GroupBuckets(ImmutableList.of(bucket)); + private final GroupDescription groupDesc1 = + new DefaultGroupDescription(did("1"), + GroupDescription.Type.FAILOVER, + groupBuckets); + private final GroupDescription groupDesc2 = + new DefaultGroupDescription(did("2"), + GroupDescription.Type.FAILOVER, + groupBuckets); + + DefaultGroup group1 = new DefaultGroup(id1, groupDesc1); + DefaultGroup sameAsGroup1 = new DefaultGroup(id1, groupDesc1); + DefaultGroup group2 = new DefaultGroup(id1, groupDesc2); + DefaultGroup group3 = new DefaultGroup(id2, groupDesc2); + + /** + * Tests for proper operation of equals(), hashCode() and toString() methods. + */ + @Test + public void checkEquals() { + new EqualsTester() + .addEqualityGroup(group1, sameAsGroup1) + .addEqualityGroup(group2) + .addEqualityGroup(group3) + .testEquals(); + } + + /** + * Tests that objects are created properly. + */ + @Test + public void checkConstruction() { + assertThat(group1.id(), is(id1)); + assertThat(group1.bytes(), is(0L)); + assertThat(group1.life(), is(0L)); + assertThat(group1.packets(), is(0L)); + assertThat(group1.referenceCount(), is(0L)); + assertThat(group1.buckets(), is(groupBuckets)); + assertThat(group1.state(), is(Group.GroupState.PENDING_ADD)); + } + + /** + * Tests that objects are created properly using the device based constructor. + */ + @Test + public void checkConstructionWithDid() { + DefaultGroup group = new DefaultGroup(id2, NetTestTools.did("1"), + GroupDescription.Type.INDIRECT, groupBuckets); + assertThat(group.id(), is(id2)); + assertThat(group.bytes(), is(0L)); + assertThat(group.life(), is(0L)); + assertThat(group.packets(), is(0L)); + assertThat(group.referenceCount(), is(0L)); + assertThat(group.deviceId(), is(NetTestTools.did("1"))); + assertThat(group.buckets(), is(groupBuckets)); + } +} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupBucketTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupBucketTest.java new file mode 100644 index 00000000..0672ebf3 --- /dev/null +++ b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupBucketTest.java @@ -0,0 +1,133 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * 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.group; + +import org.junit.Test; +import org.onosproject.core.DefaultGroupId; +import org.onosproject.core.GroupId; +import org.onosproject.net.PortNumber; +import org.onosproject.net.flow.DefaultTrafficTreatment; +import org.onosproject.net.flow.TrafficTreatment; + +import com.google.common.testing.EqualsTester; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.onosproject.net.group.GroupDescription.Type.FAILOVER; +import static org.onosproject.net.group.GroupDescription.Type.INDIRECT; +import static org.onosproject.net.group.GroupDescription.Type.SELECT; + +/** + * Unit tests for the group bucket class. + */ +public class GroupBucketTest { + + private final GroupId groupId = new DefaultGroupId(7); + private final GroupId nullGroup = null; + + private final PortNumber nullPort = null; + + private final TrafficTreatment treatment = + DefaultTrafficTreatment.emptyTreatment(); + private final GroupBucket selectGroupBucket = + DefaultGroupBucket.createSelectGroupBucket(treatment); + private final GroupBucket sameAsSelectGroupBucket = + DefaultGroupBucket.createSelectGroupBucket(treatment); + private final GroupBucket failoverGroupBucket = + DefaultGroupBucket.createFailoverGroupBucket(treatment, + PortNumber.IN_PORT, groupId); + private final GroupBucket indirectGroupBucket = + DefaultGroupBucket.createIndirectGroupBucket(treatment); + private final GroupBucket selectGroupBucketWithWeight = + DefaultGroupBucket.createSelectGroupBucket(treatment, (short) 5); + + + /** + * Tests for proper operation of equals(), hashCode() and toString() methods. + */ + @Test + public void checkEquals() { + new EqualsTester() + .addEqualityGroup(selectGroupBucket, + sameAsSelectGroupBucket, + selectGroupBucketWithWeight) + .addEqualityGroup(failoverGroupBucket) + .addEqualityGroup(indirectGroupBucket) + .testEquals(); + } + + private void checkValues(GroupBucket bucket, GroupDescription.Type type, + long bytes, long packets, short weight, + GroupId groupId, PortNumber portNumber) { + assertThat(bucket.type(), is(type)); + assertThat(bucket.bytes(), is(bytes)); + assertThat(bucket.packets(), is(packets)); + assertThat(bucket.treatment(), is(treatment)); + assertThat(bucket.weight(), is(weight)); + assertThat(bucket.watchGroup(), is(groupId)); + assertThat(bucket.watchPort(), is(portNumber)); + } + + /** + * Checks that construction of a select group was correct. + */ + @Test + public void checkSelectGroup() { + // Casting needed because only the store accesses the set methods. + ((DefaultGroupBucket) selectGroupBucket).setBytes(4); + ((DefaultGroupBucket) selectGroupBucket).setPackets(44); + + checkValues(selectGroupBucket, SELECT, 4L, 44L, (short) 1, + nullGroup, nullPort); + } + + /** + * Checks that construction of a select group with a weight was correct. + */ + @Test + public void checkSelectGroupWithPriority() { + checkValues(selectGroupBucketWithWeight, SELECT, 0L, 0L, (short) 5, + nullGroup, nullPort); + } + + /** + * Checks that construction of an indirect group was correct. + */ + @Test + public void checkFailoverGroup() { + checkValues(failoverGroupBucket, FAILOVER, 0L, 0L, (short) -1, + groupId, PortNumber.IN_PORT); + } + /** + * Checks that construction of an indirect group was correct. + */ + @Test + public void checkIndirectGroup() { + checkValues(indirectGroupBucket, INDIRECT, 0L, 0L, (short) -1, + nullGroup, nullPort); + } + + /** + * Checks that a weight of 0 results in no group getting created. + */ + @Test + public void checkZeroWeight() { + GroupBucket bucket = + DefaultGroupBucket.createSelectGroupBucket(treatment, (short) 0); + assertThat(bucket, nullValue()); + } +} diff --git a/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupOperationTest.java b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupOperationTest.java new file mode 100644 index 00000000..5ee3a7ec --- /dev/null +++ b/framework/src/onos/core/api/src/test/java/org/onosproject/net/group/GroupOperationTest.java @@ -0,0 +1,89 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * 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.group; + +import org.junit.Test; +import org.onosproject.core.DefaultGroupId; +import org.onosproject.core.GroupId; +import org.onosproject.net.flow.DefaultTrafficTreatment; +import org.onosproject.net.flow.TrafficTreatment; + +import com.google.common.collect.ImmutableList; +import com.google.common.testing.EqualsTester; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; +import static org.onosproject.net.group.GroupDescription.Type.ALL; +import static org.onosproject.net.group.GroupDescription.Type.INDIRECT; +import static org.onosproject.net.group.GroupOperation.Type.ADD; + +/** + * Tests for the group operation class. + */ +public class GroupOperationTest { + + private final GroupId groupId = new DefaultGroupId(6); + private final TrafficTreatment treatment = + DefaultTrafficTreatment.emptyTreatment(); + private final GroupBucket bucket = + DefaultGroupBucket.createSelectGroupBucket(treatment); + private final GroupBuckets groupBuckets = + new GroupBuckets(ImmutableList.of(bucket)); + private final GroupOperation op1 = + GroupOperation.createAddGroupOperation(groupId, ALL, groupBuckets); + private final GroupOperation sameAsOp1 = + GroupOperation.createAddGroupOperation(groupId, ALL, groupBuckets); + private final GroupOperation op2 = + GroupOperation.createAddGroupOperation(groupId, INDIRECT, groupBuckets); + private final GroupOperation op3 = + GroupOperation.createDeleteGroupOperation(groupId, INDIRECT); + private final GroupOperation op4 = + GroupOperation.createModifyGroupOperation(groupId, INDIRECT, groupBuckets); + + /** + * Checks that the GroupOperation class is immutable. + */ + @Test + public void testImmutability() { + assertThatClassIsImmutable(GroupOperation.class); + } + + /** + * Tests for proper operation of equals(), hashCode() and toString() methods. + */ + @Test + public void checkEquals() { + new EqualsTester() + .addEqualityGroup(op1, sameAsOp1) + .addEqualityGroup(op2) + .addEqualityGroup(op3) + .addEqualityGroup(op4) + .testEquals(); + } + + /** + * Checks that the construction of the add operation is correct. + */ + @Test + public void testAddGroupOperation() { + assertThat(op1.buckets(), is(groupBuckets)); + assertThat(op1.groupId(), is(groupId)); + assertThat(op1.groupType(), is(ALL)); + assertThat(op1.opType(), is(ADD)); + } + +} |