From b731e2f1dd0972409b136aebc7b463dd72c9cfad Mon Sep 17 00:00:00 2001 From: CNlucius Date: Tue, 13 Sep 2016 11:40:12 +0800 Subject: ONOSFW-171 O/S-SFC-ONOS scenario documentation Change-Id: I51ae1cf736ea24ab6680f8edca1b2bf5dd598365 Signed-off-by: CNlucius --- .../store/trivial/SimpleGroupStoreTest.java | 482 --------------------- 1 file changed, 482 deletions(-) delete mode 100644 framework/src/onos/core/common/src/test/java/org/onosproject/store/trivial/SimpleGroupStoreTest.java (limited to 'framework/src/onos/core/common/src/test/java/org/onosproject/store/trivial/SimpleGroupStoreTest.java') diff --git a/framework/src/onos/core/common/src/test/java/org/onosproject/store/trivial/SimpleGroupStoreTest.java b/framework/src/onos/core/common/src/test/java/org/onosproject/store/trivial/SimpleGroupStoreTest.java deleted file mode 100644 index b10fca5c..00000000 --- a/framework/src/onos/core/common/src/test/java/org/onosproject/store/trivial/SimpleGroupStoreTest.java +++ /dev/null @@ -1,482 +0,0 @@ -/* - * Copyright 2014-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.store.trivial; - -import static org.junit.Assert.assertEquals; -import static org.onosproject.net.DeviceId.deviceId; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Optional; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.packet.MacAddress; -import org.onlab.packet.MplsLabel; -import org.onosproject.core.ApplicationId; -import org.onosproject.core.DefaultApplicationId; -import org.onosproject.core.GroupId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.PortNumber; -import org.onosproject.net.flow.DefaultTrafficTreatment; -import org.onosproject.net.flow.TrafficTreatment; -import org.onosproject.net.group.DefaultGroup; -import org.onosproject.net.group.DefaultGroupBucket; -import org.onosproject.net.group.DefaultGroupDescription; -import org.onosproject.net.group.DefaultGroupKey; -import org.onosproject.net.group.Group; -import org.onosproject.net.group.GroupBucket; -import org.onosproject.net.group.GroupBuckets; -import org.onosproject.net.group.GroupDescription; -import org.onosproject.net.group.GroupEvent; -import org.onosproject.net.group.GroupKey; -import org.onosproject.net.group.GroupOperation; -import org.onosproject.net.group.GroupStore.UpdateType; -import org.onosproject.net.group.GroupStoreDelegate; -import org.onosproject.net.group.StoredGroupBucketEntry; -import org.onosproject.net.group.StoredGroupEntry; - -import com.google.common.collect.Iterables; - -/** - * Test of the simple DeviceStore implementation. - */ -public class SimpleGroupStoreTest { - - private SimpleGroupStore simpleGroupStore; - private final ApplicationId appId = - new DefaultApplicationId(2, "org.groupstore.test"); - - public static final DeviceId D1 = deviceId("of:1"); - - @Before - public void setUp() throws Exception { - simpleGroupStore = new SimpleGroupStore(); - simpleGroupStore.activate(); - } - - @After - public void tearDown() throws Exception { - simpleGroupStore.deactivate(); - } - - private class InternalGroupStoreDelegate - implements GroupStoreDelegate { - private GroupId createdGroupId = null; - private GroupKey createdGroupKey; - private GroupBuckets createdBuckets; - private GroupEvent.Type expectedEvent; - - public InternalGroupStoreDelegate(GroupKey key, - GroupBuckets buckets, - GroupEvent.Type expectedEvent) { - this.createdBuckets = buckets; - this.createdGroupKey = key; - this.expectedEvent = expectedEvent; - } - @Override - public void notify(GroupEvent event) { - assertEquals(expectedEvent, event.type()); - assertEquals(Group.Type.SELECT, event.subject().type()); - assertEquals(D1, event.subject().deviceId()); - assertEquals(createdGroupKey, event.subject().appCookie()); - assertEquals(createdBuckets.buckets(), event.subject().buckets().buckets()); - if (expectedEvent == GroupEvent.Type.GROUP_ADD_REQUESTED) { - createdGroupId = event.subject().id(); - assertEquals(Group.GroupState.PENDING_ADD, - event.subject().state()); - } else if (expectedEvent == GroupEvent.Type.GROUP_ADDED) { - createdGroupId = event.subject().id(); - assertEquals(Group.GroupState.ADDED, - event.subject().state()); - } else if (expectedEvent == GroupEvent.Type.GROUP_UPDATED) { - createdGroupId = event.subject().id(); - assertEquals(true, - event.subject().buckets(). - buckets().containsAll(createdBuckets.buckets())); - assertEquals(true, - createdBuckets.buckets(). - containsAll(event.subject().buckets().buckets())); - for (GroupBucket bucket:event.subject().buckets().buckets()) { - Optional matched = createdBuckets.buckets() - .stream() - .filter((expected) -> expected.equals(bucket)) - .findFirst(); - assertEquals(matched.get().packets(), - bucket.packets()); - assertEquals(matched.get().bytes(), - bucket.bytes()); - } - assertEquals(Group.GroupState.ADDED, - event.subject().state()); - } else if (expectedEvent == GroupEvent.Type.GROUP_UPDATE_REQUESTED) { - assertEquals(Group.GroupState.PENDING_UPDATE, - event.subject().state()); - } else if (expectedEvent == GroupEvent.Type.GROUP_REMOVE_REQUESTED) { - assertEquals(Group.GroupState.PENDING_DELETE, - event.subject().state()); - } else if (expectedEvent == GroupEvent.Type.GROUP_REMOVED) { - createdGroupId = event.subject().id(); - assertEquals(Group.GroupState.PENDING_DELETE, - event.subject().state()); - } else if (expectedEvent == GroupEvent.Type.GROUP_ADD_FAILED) { - createdGroupId = event.subject().id(); - assertEquals(Group.GroupState.PENDING_ADD, - event.subject().state()); - } else if (expectedEvent == GroupEvent.Type.GROUP_UPDATE_FAILED) { - createdGroupId = event.subject().id(); - assertEquals(Group.GroupState.PENDING_UPDATE, - event.subject().state()); - } else if (expectedEvent == GroupEvent.Type.GROUP_REMOVE_FAILED) { - createdGroupId = event.subject().id(); - assertEquals(Group.GroupState.PENDING_DELETE, - event.subject().state()); - } - } - - public void verifyGroupId(GroupId id) { - assertEquals(createdGroupId, id); - } - } - - /** - * Tests group store operations. The following operations are tested: - * a)Tests device group audit completion status change - * b)Tests storeGroup operation - * c)Tests getGroupCount operation - * d)Tests getGroup operation - * e)Tests getGroups operation - * f)Tests addOrUpdateGroupEntry operation from southbound - * g)Tests updateGroupDescription for ADD operation from northbound - * h)Tests updateGroupDescription for REMOVE operation from northbound - * i)Tests deleteGroupDescription operation from northbound - * j)Tests removeGroupEntry operation from southbound - */ - @Test - public void testGroupStoreOperations() { - // Set the Device AUDIT completed in the store - simpleGroupStore.deviceInitialAuditCompleted(D1, true); - - // Testing storeGroup operation - GroupKey newKey = new DefaultGroupKey("group1".getBytes()); - testStoreAndGetGroup(newKey); - - // Testing addOrUpdateGroupEntry operation from southbound - GroupKey currKey = newKey; - testAddGroupEntryFromSB(currKey); - - // Testing updateGroupDescription for ADD operation from northbound - newKey = new DefaultGroupKey("group1AddBuckets".getBytes()); - testAddBuckets(currKey, newKey); - - // Testing updateGroupDescription for REMOVE operation from northbound - currKey = newKey; - newKey = new DefaultGroupKey("group1RemoveBuckets".getBytes()); - testRemoveBuckets(currKey, newKey); - - // Testing addOrUpdateGroupEntry operation from southbound - currKey = newKey; - testUpdateGroupEntryFromSB(currKey); - - // Testing deleteGroupDescription operation from northbound - testDeleteGroup(currKey); - - // Testing removeGroupEntry operation from southbound - testRemoveGroupFromSB(currKey); - } - - // Testing storeGroup operation - private void testStoreAndGetGroup(GroupKey key) { - PortNumber[] ports = {PortNumber.portNumber(31), - PortNumber.portNumber(32)}; - List outPorts = new ArrayList<>(); - outPorts.addAll(Arrays.asList(ports)); - - List buckets = new ArrayList<>(); - for (PortNumber portNumber: outPorts) { - TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder(); - tBuilder.setOutput(portNumber) - .setEthDst(MacAddress.valueOf("00:00:00:00:00:02")) - .setEthSrc(MacAddress.valueOf("00:00:00:00:00:01")) - .pushMpls() - .setMpls(MplsLabel.mplsLabel(106)); - buckets.add(DefaultGroupBucket.createSelectGroupBucket( - tBuilder.build())); - } - GroupBuckets groupBuckets = new GroupBuckets(buckets); - GroupDescription groupDesc = new DefaultGroupDescription( - D1, - Group.Type.SELECT, - groupBuckets, - key, - null, - appId); - InternalGroupStoreDelegate checkStoreGroupDelegate = - new InternalGroupStoreDelegate(key, - groupBuckets, - GroupEvent.Type.GROUP_ADD_REQUESTED); - simpleGroupStore.setDelegate(checkStoreGroupDelegate); - // Testing storeGroup operation - simpleGroupStore.storeGroupDescription(groupDesc); - - // Testing getGroupCount operation - assertEquals(1, simpleGroupStore.getGroupCount(D1)); - - // Testing getGroup operation - Group createdGroup = simpleGroupStore.getGroup(D1, key); - checkStoreGroupDelegate.verifyGroupId(createdGroup.id()); - - // Testing getGroups operation - Iterable createdGroups = simpleGroupStore.getGroups(D1); - int groupCount = 0; - for (Group group:createdGroups) { - checkStoreGroupDelegate.verifyGroupId(group.id()); - groupCount++; - } - assertEquals(1, groupCount); - simpleGroupStore.unsetDelegate(checkStoreGroupDelegate); - } - - // Testing addOrUpdateGroupEntry operation from southbound - private void testAddGroupEntryFromSB(GroupKey currKey) { - Group existingGroup = simpleGroupStore.getGroup(D1, currKey); - - InternalGroupStoreDelegate addGroupEntryDelegate = - new InternalGroupStoreDelegate(currKey, - existingGroup.buckets(), - GroupEvent.Type.GROUP_ADDED); - simpleGroupStore.setDelegate(addGroupEntryDelegate); - simpleGroupStore.addOrUpdateGroupEntry(existingGroup); - simpleGroupStore.unsetDelegate(addGroupEntryDelegate); - } - - // Testing addOrUpdateGroupEntry operation from southbound - private void testUpdateGroupEntryFromSB(GroupKey currKey) { - Group existingGroup = simpleGroupStore.getGroup(D1, currKey); - int totalPkts = 0; - int totalBytes = 0; - List newBucketList = new ArrayList<>(); - for (GroupBucket bucket:existingGroup.buckets().buckets()) { - StoredGroupBucketEntry newBucket = - (StoredGroupBucketEntry) - DefaultGroupBucket.createSelectGroupBucket(bucket.treatment()); - newBucket.setPackets(10); - newBucket.setBytes(10 * 256 * 8); - totalPkts += 10; - totalBytes += 10 * 256 * 8; - newBucketList.add(newBucket); - } - GroupBuckets updatedBuckets = new GroupBuckets(newBucketList); - Group updatedGroup = new DefaultGroup(existingGroup.id(), - existingGroup.deviceId(), - existingGroup.type(), - updatedBuckets); - ((StoredGroupEntry) updatedGroup).setPackets(totalPkts); - ((StoredGroupEntry) updatedGroup).setBytes(totalBytes); - - InternalGroupStoreDelegate updateGroupEntryDelegate = - new InternalGroupStoreDelegate(currKey, - updatedBuckets, - GroupEvent.Type.GROUP_UPDATED); - simpleGroupStore.setDelegate(updateGroupEntryDelegate); - simpleGroupStore.addOrUpdateGroupEntry(updatedGroup); - simpleGroupStore.unsetDelegate(updateGroupEntryDelegate); - } - - // Testing updateGroupDescription for ADD operation from northbound - private void testAddBuckets(GroupKey currKey, GroupKey addKey) { - Group existingGroup = simpleGroupStore.getGroup(D1, currKey); - List buckets = new ArrayList<>(); - buckets.addAll(existingGroup.buckets().buckets()); - - PortNumber[] newNeighborPorts = {PortNumber.portNumber(41), - PortNumber.portNumber(42)}; - List newOutPorts = new ArrayList<>(); - newOutPorts.addAll(Collections.singletonList(newNeighborPorts[0])); - - List toAddBuckets = new ArrayList<>(); - for (PortNumber portNumber: newOutPorts) { - TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder(); - tBuilder.setOutput(portNumber) - .setEthDst(MacAddress.valueOf("00:00:00:00:00:03")) - .setEthSrc(MacAddress.valueOf("00:00:00:00:00:01")) - .pushMpls() - .setMpls(MplsLabel.mplsLabel(106)); - toAddBuckets.add(DefaultGroupBucket.createSelectGroupBucket( - tBuilder.build())); - } - GroupBuckets toAddGroupBuckets = new GroupBuckets(toAddBuckets); - buckets.addAll(toAddBuckets); - GroupBuckets updatedGroupBuckets = new GroupBuckets(buckets); - InternalGroupStoreDelegate updateGroupDescDelegate = - new InternalGroupStoreDelegate(addKey, - updatedGroupBuckets, - GroupEvent.Type.GROUP_UPDATE_REQUESTED); - simpleGroupStore.setDelegate(updateGroupDescDelegate); - simpleGroupStore.updateGroupDescription(D1, - currKey, - UpdateType.ADD, - toAddGroupBuckets, - addKey); - simpleGroupStore.unsetDelegate(updateGroupDescDelegate); - } - - // Testing updateGroupDescription for REMOVE operation from northbound - private void testRemoveBuckets(GroupKey currKey, GroupKey removeKey) { - Group existingGroup = simpleGroupStore.getGroup(D1, currKey); - List buckets = new ArrayList<>(); - buckets.addAll(existingGroup.buckets().buckets()); - - List toRemoveBuckets = new ArrayList<>(); - - // There should be 4 buckets in the current group - toRemoveBuckets.add(buckets.remove(0)); - toRemoveBuckets.add(buckets.remove(1)); - GroupBuckets toRemoveGroupBuckets = new GroupBuckets(toRemoveBuckets); - - GroupBuckets remainingGroupBuckets = new GroupBuckets(buckets); - InternalGroupStoreDelegate removeGroupDescDelegate = - new InternalGroupStoreDelegate(removeKey, - remainingGroupBuckets, - GroupEvent.Type.GROUP_UPDATE_REQUESTED); - simpleGroupStore.setDelegate(removeGroupDescDelegate); - simpleGroupStore.updateGroupDescription(D1, - currKey, - UpdateType.REMOVE, - toRemoveGroupBuckets, - removeKey); - simpleGroupStore.unsetDelegate(removeGroupDescDelegate); - } - - // Testing deleteGroupDescription operation from northbound - private void testDeleteGroup(GroupKey currKey) { - Group existingGroup = simpleGroupStore.getGroup(D1, currKey); - InternalGroupStoreDelegate deleteGroupDescDelegate = - new InternalGroupStoreDelegate(currKey, - existingGroup.buckets(), - GroupEvent.Type.GROUP_REMOVE_REQUESTED); - simpleGroupStore.setDelegate(deleteGroupDescDelegate); - simpleGroupStore.deleteGroupDescription(D1, currKey); - simpleGroupStore.unsetDelegate(deleteGroupDescDelegate); - } - - // Testing removeGroupEntry operation from southbound - private void testRemoveGroupFromSB(GroupKey currKey) { - Group existingGroup = simpleGroupStore.getGroup(D1, currKey); - InternalGroupStoreDelegate removeGroupEntryDelegate = - new InternalGroupStoreDelegate(currKey, - existingGroup.buckets(), - GroupEvent.Type.GROUP_REMOVED); - simpleGroupStore.setDelegate(removeGroupEntryDelegate); - simpleGroupStore.removeGroupEntry(existingGroup); - - // Testing getGroup operation - existingGroup = simpleGroupStore.getGroup(D1, currKey); - assertEquals(null, existingGroup); - assertEquals(0, Iterables.size(simpleGroupStore.getGroups(D1))); - assertEquals(0, simpleGroupStore.getGroupCount(D1)); - - simpleGroupStore.unsetDelegate(removeGroupEntryDelegate); - } - - @Test - public void testGroupOperationFailure() { - - simpleGroupStore.deviceInitialAuditCompleted(D1, true); - - ApplicationId appId = - new DefaultApplicationId(2, "org.groupstore.test"); - GroupKey key = new DefaultGroupKey("group1".getBytes()); - PortNumber[] ports = {PortNumber.portNumber(31), - PortNumber.portNumber(32)}; - List outPorts = new ArrayList<>(); - outPorts.add(ports[0]); - outPorts.add(ports[1]); - - List buckets = new ArrayList<>(); - for (PortNumber portNumber: outPorts) { - TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder(); - tBuilder.setOutput(portNumber) - .setEthDst(MacAddress.valueOf("00:00:00:00:00:02")) - .setEthSrc(MacAddress.valueOf("00:00:00:00:00:01")) - .pushMpls() - .setMpls(MplsLabel.mplsLabel(106)); - buckets.add(DefaultGroupBucket.createSelectGroupBucket( - tBuilder.build())); - } - GroupBuckets groupBuckets = new GroupBuckets(buckets); - GroupDescription groupDesc = new DefaultGroupDescription( - D1, - Group.Type.SELECT, - groupBuckets, - key, - null, - appId); - InternalGroupStoreDelegate checkStoreGroupDelegate = - new InternalGroupStoreDelegate(key, - groupBuckets, - GroupEvent.Type.GROUP_ADD_REQUESTED); - simpleGroupStore.setDelegate(checkStoreGroupDelegate); - // Testing storeGroup operation - simpleGroupStore.storeGroupDescription(groupDesc); - simpleGroupStore.unsetDelegate(checkStoreGroupDelegate); - - // Testing Group add operation failure - Group createdGroup = simpleGroupStore.getGroup(D1, key); - checkStoreGroupDelegate.verifyGroupId(createdGroup.id()); - - GroupOperation groupAddOp = GroupOperation. - createAddGroupOperation(createdGroup.id(), - createdGroup.type(), - createdGroup.buckets()); - InternalGroupStoreDelegate checkGroupAddFailureDelegate = - new InternalGroupStoreDelegate(key, - groupBuckets, - GroupEvent.Type.GROUP_ADD_FAILED); - simpleGroupStore.setDelegate(checkGroupAddFailureDelegate); - simpleGroupStore.groupOperationFailed(D1, groupAddOp); - - - // Testing Group modify operation failure - simpleGroupStore.unsetDelegate(checkGroupAddFailureDelegate); - GroupOperation groupModOp = GroupOperation. - createModifyGroupOperation(createdGroup.id(), - createdGroup.type(), - createdGroup.buckets()); - InternalGroupStoreDelegate checkGroupModFailureDelegate = - new InternalGroupStoreDelegate(key, - groupBuckets, - GroupEvent.Type.GROUP_UPDATE_FAILED); - simpleGroupStore.setDelegate(checkGroupModFailureDelegate); - simpleGroupStore.groupOperationFailed(D1, groupModOp); - - // Testing Group modify operation failure - simpleGroupStore.unsetDelegate(checkGroupModFailureDelegate); - GroupOperation groupDelOp = GroupOperation. - createDeleteGroupOperation(createdGroup.id(), - createdGroup.type()); - InternalGroupStoreDelegate checkGroupDelFailureDelegate = - new InternalGroupStoreDelegate(key, - groupBuckets, - GroupEvent.Type.GROUP_REMOVE_FAILED); - simpleGroupStore.setDelegate(checkGroupDelFailureDelegate); - simpleGroupStore.groupOperationFailed(D1, groupDelOp); - } -} - -- cgit 1.2.3-korg