[ONOS-3835] Install load balanced classifier rules
Change-Id: I585a83021dbf2aff6a65dd43944a1f6979b33ead
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/installer/impl/FlowClassifierInstallerImplTest.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/installer/impl/FlowClassifierInstallerImplTest.java
new file mode 100644
index 0000000..86b3e50
--- /dev/null
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/installer/impl/FlowClassifierInstallerImplTest.java
@@ -0,0 +1,274 @@
+/*
+ * Copyright 2016 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.sfc.installer.impl;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.junit.Test;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.IpPrefix;
+import org.onlab.packet.MacAddress;
+import org.onosproject.core.ApplicationId;
+import org.onosproject.core.DefaultApplicationId;
+import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.HostLocation;
+import org.onosproject.net.NshServicePathId;
+import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.device.DeviceServiceAdapter;
+import org.onosproject.net.driver.DriverHandler;
+import org.onosproject.net.driver.DriverService;
+import org.onosproject.net.flowobjective.FlowObjectiveService;
+import org.onosproject.net.host.HostService;
+import org.onosproject.net.host.HostServiceAdapter;
+import org.onosproject.sfc.util.FlowClassifierAdapter;
+import org.onosproject.sfc.util.FlowObjectiveAdapter;
+import org.onosproject.sfc.util.MockDriverHandler;
+import org.onosproject.sfc.util.PortPairAdapter;
+import org.onosproject.sfc.util.PortPairGroupAdapter;
+import org.onosproject.sfc.util.VirtualPortAdapter;
+import org.onosproject.sfc.util.VtnRscAdapter;
+import org.onosproject.vtnrsc.AllowedAddressPair;
+import org.onosproject.vtnrsc.BindingHostId;
+import org.onosproject.vtnrsc.DefaultFlowClassifier;
+import org.onosproject.vtnrsc.DefaultPortChain;
+import org.onosproject.vtnrsc.DefaultPortPair;
+import org.onosproject.vtnrsc.DefaultPortPairGroup;
+import org.onosproject.vtnrsc.DefaultVirtualPort;
+import org.onosproject.vtnrsc.FixedIp;
+import org.onosproject.vtnrsc.FlowClassifier;
+import org.onosproject.vtnrsc.FlowClassifierId;
+import org.onosproject.vtnrsc.PortChain;
+import org.onosproject.vtnrsc.PortChainId;
+import org.onosproject.vtnrsc.PortPair;
+import org.onosproject.vtnrsc.PortPairGroup;
+import org.onosproject.vtnrsc.PortPairGroupId;
+import org.onosproject.vtnrsc.PortPairId;
+import org.onosproject.vtnrsc.SecurityGroup;
+import org.onosproject.vtnrsc.SubnetId;
+import org.onosproject.vtnrsc.TenantId;
+import org.onosproject.vtnrsc.TenantNetworkId;
+import org.onosproject.vtnrsc.VirtualPort;
+import org.onosproject.vtnrsc.VirtualPortId;
+import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
+import org.onosproject.vtnrsc.portpair.PortPairService;
+import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
+import org.onosproject.vtnrsc.service.VtnRscService;
+import org.onosproject.vtnrsc.virtualport.VirtualPortService;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+
+public class FlowClassifierInstallerImplTest {
+
+ FlowObjectiveService flowObjectiveService = new FlowObjectiveAdapter();
+ DeviceService deviceService = new DeviceServiceAdapter();
+ HostService hostService = new HostServiceAdapter();
+ VirtualPortService virtualPortService = new VirtualPortAdapter();
+ VtnRscService vtnRscService = new VtnRscAdapter();
+ PortPairService portPairService = new PortPairAdapter();
+ PortPairGroupService portPairGroupService = new PortPairGroupAdapter();
+ FlowClassifierService flowClassifierService = new FlowClassifierAdapter();
+
+ final DriverService driverService = createMock(DriverService.class);
+
+ final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
+ final TenantId tenantId = TenantId.tenantId("1");
+ final String name = "PortChain";
+ final String description = "PortChain";
+ final List<PortPairGroupId> portPairGroups = new LinkedList<PortPairGroupId>();
+ final List<FlowClassifierId> flowClassifiers = new LinkedList<FlowClassifierId>();
+ PortPairGroupId portPairGroupId1 = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
+ PortPairGroupId portPairGroupId2 = PortPairGroupId.of("73343531-fc23-aeb6-f44b-56dc5e2fb3af");
+
+ PortPairId portPairId1 = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
+ PortPairId portPairId2 = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
+
+ FlowClassifierId flowClassifierId1 = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
+ FlowClassifierId flowClassifierId2 = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af");
+
+ final String ppName = "PortPair";
+ final String ppDescription = "PortPair";
+ final String ingress = "d3333333-24fc-4fae-af4b-321c5e2eb3d1";
+ final String egress = "a4444444-4a56-2a6e-cd3a-9dee4e2ec345";
+
+
+ final String ppgName = "PortPairGroup";
+ final String ppgDescription = "PortPairGroup";
+ final List<PortPairId> portPairList = new LinkedList<PortPairId>();
+
+ VirtualPortId id1 = VirtualPortId.portId(ingress);
+ VirtualPortId id2 = VirtualPortId.portId("3414");
+
+ DeviceId deviceId = DeviceId.deviceId("of:000000000000001");
+
+ final DriverHandler driverHandler = new MockDriverHandler();
+
+ private PortPair createPortPair(PortPairId ppId) {
+ DefaultPortPair.Builder portPairBuilder = new DefaultPortPair.Builder();
+ PortPair portPair = portPairBuilder.setId(ppId).setName(ppName).setTenantId(tenantId)
+ .setDescription(ppDescription).setIngress(ingress).setEgress(egress).build();
+ return portPair;
+ }
+
+ private PortPairGroup createPortPairGroup(PortPairGroupId ppgId) {
+
+ portPairList.clear();
+ // Create same two port-pair-group objects.
+ portPairList.add(portPairId1);
+ portPairList.add(portPairId2);
+
+ DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder();
+ PortPairGroup portPairGroup = portPairGroupBuilder.setId(ppgId).setTenantId(tenantId)
+ .setName(ppgName).setDescription(ppgDescription).setPortPairs(portPairList).build();
+
+ return portPairGroup;
+
+ }
+
+ private PortChain createPortChain() {
+
+ portPairGroups.clear();
+ flowClassifiers.clear();
+ // create list of Port Pair Groups.
+
+ portPairGroups.add(portPairGroupId1);
+ portPairGroups.add(portPairGroupId2);
+ // create list of Flow classifiers.
+ flowClassifiers.add(flowClassifierId1);
+ flowClassifiers.add(flowClassifierId2);
+
+ DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder();
+ final PortChain portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name)
+ .setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers)
+ .build();
+
+ return portChain;
+ }
+
+ private FlowClassifier createFlowClassifier(FlowClassifierId id) {
+ final String name = "FlowClassifier1";
+ final String description = "FlowClassifier1";
+ final String ethType = "IPv4";
+ final String protocol = "tcp";
+ final int minSrcPortRange = 5;
+ final int maxSrcPortRange = 10;
+ final int minDstPortRange = 5;
+ final int maxDstPortRange = 10;
+ final TenantId tenantId = TenantId.tenantId("1");
+ final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0");
+ final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0");
+ final VirtualPortId virtualSrcPort = id1;
+ final VirtualPortId virtualDstPort = id2;
+
+ DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
+ final FlowClassifier flowClassifier = flowClassifierBuilder.setFlowClassifierId(id)
+ .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType)
+ .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange)
+ .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix)
+ .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
+ return flowClassifier;
+ }
+
+ private VirtualPort createVirtualPort() {
+ Set<FixedIp> fixedIps;
+ Map<String, String> propertyMap;
+ Set<AllowedAddressPair> allowedAddressPairs;
+ Set<SecurityGroup> securityGroups = Sets.newHashSet();
+
+ String macAddressStr = "fa:12:3e:56:ee:a2";
+ String ipAddress = "10.1.1.1";
+ String tenantNetworkId = "1234567";
+ String subnet = "1212";
+ String hostIdStr = "fa:e2:3e:56:ee:a2";
+ String deviceOwner = "james";
+ propertyMap = Maps.newHashMap();
+ propertyMap.putIfAbsent("deviceOwner", deviceOwner);
+
+ TenantNetworkId networkId = TenantNetworkId.networkId(tenantNetworkId);
+ MacAddress macAddress = MacAddress.valueOf(macAddressStr);
+ BindingHostId bindingHostId = BindingHostId.bindingHostId(hostIdStr);
+ FixedIp fixedIp = FixedIp.fixedIp(SubnetId.subnetId(subnet),
+ IpAddress.valueOf(ipAddress));
+ fixedIps = Sets.newHashSet();
+ fixedIps.add(fixedIp);
+
+ allowedAddressPairs = Sets.newHashSet();
+ AllowedAddressPair allowedAddressPair = AllowedAddressPair
+ .allowedAddressPair(IpAddress.valueOf(ipAddress),
+ MacAddress.valueOf(macAddressStr));
+ allowedAddressPairs.add(allowedAddressPair);
+
+ VirtualPort d1 = new DefaultVirtualPort(id1, networkId, true,
+ propertyMap,
+ VirtualPort.State.ACTIVE,
+ macAddress, tenantId, deviceId,
+ fixedIps, bindingHostId,
+ allowedAddressPairs,
+ securityGroups);
+ return d1;
+ }
+
+ @Test
+ public void testInstallFlowClassifier() {
+
+ ApplicationId appId = new DefaultApplicationId(1, "test");
+ FlowClassifierInstallerImpl flowClassifierInstaller = new FlowClassifierInstallerImpl();
+ flowClassifierInstaller.virtualPortService = virtualPortService;
+ flowClassifierInstaller.vtnRscService = vtnRscService;
+ flowClassifierInstaller.portPairService = portPairService;
+ flowClassifierInstaller.portPairGroupService = portPairGroupService;
+ flowClassifierInstaller.flowClassifierService = flowClassifierService;
+ flowClassifierInstaller.driverService = driverService;
+ flowClassifierInstaller.deviceService = deviceService;
+ flowClassifierInstaller.hostService = hostService;
+ flowClassifierInstaller.flowObjectiveService = flowObjectiveService;
+ flowClassifierInstaller.appId = appId;
+
+ final PortChain portChain = createPortChain();
+ NshServicePathId nshSpiId = NshServicePathId.of(10);
+
+ portPairGroupService.createPortPairGroup(createPortPairGroup(portPairGroupId1));
+ portPairGroupService.createPortPairGroup(createPortPairGroup(portPairGroupId2));
+ portPairService.createPortPair(createPortPair(portPairId1));
+ portPairService.createPortPair(createPortPair(portPairId2));
+ FlowClassifier fc1 = createFlowClassifier(flowClassifierId1);
+ FlowClassifier fc2 = createFlowClassifier(flowClassifierId2);
+ flowClassifierService.createFlowClassifier(fc1);
+ flowClassifierService.createFlowClassifier(fc2);
+
+ List<VirtualPort> virtualPortList = Lists.newArrayList();
+ virtualPortList.add(createVirtualPort());
+ virtualPortService.createPorts(virtualPortList);
+
+ expect(driverService.createHandler(deviceId)).andReturn(driverHandler).anyTimes();
+ replay(driverService);
+
+ ConnectPoint connectPoint = flowClassifierInstaller.installFlowClassifier(portChain, nshSpiId);
+
+ assertThat(connectPoint, is(HostLocation.NONE));
+ }
+}
\ No newline at end of file
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierManagerTestImpl.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierAdapter.java
similarity index 96%
rename from apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierManagerTestImpl.java
rename to apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierAdapter.java
index fe5babb..305bd03 100644
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierManagerTestImpl.java
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowClassifierAdapter.java
@@ -28,7 +28,7 @@
/**
* Provides implementation of the Flow Classifier Service.
*/
-public class FlowClassifierManagerTestImpl implements FlowClassifierService {
+public class FlowClassifierAdapter implements FlowClassifierService {
private final ConcurrentMap<FlowClassifierId, FlowClassifier> flowClassifierStore = new ConcurrentHashMap<>();
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowObjectiveServiceTestImpl.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowObjectiveAdapter.java
similarity index 83%
rename from apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowObjectiveServiceTestImpl.java
rename to apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowObjectiveAdapter.java
index 9da9ee9..11f3667 100644
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowObjectiveServiceTestImpl.java
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/FlowObjectiveAdapter.java
@@ -16,16 +16,17 @@
package org.onosproject.sfc.util;
import org.onosproject.net.DeviceId;
-import org.onosproject.net.flowobjective.FlowObjectiveService;
import org.onosproject.net.flowobjective.FilteringObjective;
+import org.onosproject.net.flowobjective.FlowObjectiveService;
import org.onosproject.net.flowobjective.ForwardingObjective;
import org.onosproject.net.flowobjective.NextObjective;
/**
* Testing version of implementation on FlowObjectiveService.
*/
-public class FlowObjectiveServiceTestImpl implements FlowObjectiveService {
+public class FlowObjectiveAdapter implements FlowObjectiveService {
+ private ForwardingObjective forwardingObjective;
@Override
public void filter(DeviceId deviceId, FilteringObjective filteringObjective) {
@@ -33,7 +34,7 @@
@Override
public void forward(DeviceId deviceId, ForwardingObjective forwardingObjective) {
-
+ this.forwardingObjective = forwardingObjective;
}
@Override
@@ -50,4 +51,8 @@
public void initPolicy(String policy) {
}
+
+ public ForwardingObjective forwardingObjective() {
+ return forwardingObjective;
+ }
}
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockDriverHandler.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockDriverHandler.java
new file mode 100644
index 0000000..08aea73
--- /dev/null
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockDriverHandler.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2016 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.sfc.util;
+
+import org.onosproject.net.behaviour.ExtensionSelectorResolver;
+import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
+import org.onosproject.net.driver.Behaviour;
+import org.onosproject.net.driver.Driver;
+import org.onosproject.net.driver.DriverData;
+import org.onosproject.net.driver.DriverHandler;
+
+public class MockDriverHandler implements DriverHandler {
+
+ @Override
+ public Driver driver() {
+ return null;
+ }
+
+ @Override
+ public DriverData data() {
+ return null;
+ }
+
+ @Override
+ public <T extends Behaviour> T behaviour(Class<T> behaviourClass) {
+ if (behaviourClass == ExtensionSelectorResolver.class) {
+ return (T) new MockExtensionSelectorResolver();
+ } else if (behaviourClass == ExtensionTreatmentResolver.class) {
+ return (T) new MockExtensionTreatmentResolver();
+ }
+ return null;
+ }
+
+ @Override
+ public <T> T get(Class<T> serviceClass) {
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelector.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelector.java
new file mode 100644
index 0000000..2dde927
--- /dev/null
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelector.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2016 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.sfc.util;
+
+import java.util.List;
+
+import org.onosproject.net.flow.criteria.ExtensionSelector;
+import org.onosproject.net.flow.criteria.ExtensionSelectorType;
+import org.onosproject.net.flow.instructions.ExtensionPropertyException;
+
+public class MockExtensionSelector implements ExtensionSelector {
+
+ @Override
+ public <T> void setPropertyValue(String key, T value) throws ExtensionPropertyException {
+ }
+
+ @Override
+ public <T> T getPropertyValue(String key) throws ExtensionPropertyException {
+ return null;
+ }
+
+ @Override
+ public List<String> getProperties() {
+ return null;
+ }
+
+ @Override
+ public byte[] serialize() {
+ return null;
+ }
+
+ @Override
+ public void deserialize(byte[] data) {
+ }
+
+ @Override
+ public ExtensionSelectorType type() {
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelectorResolver.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelectorResolver.java
new file mode 100644
index 0000000..7583708
--- /dev/null
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionSelectorResolver.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2016 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.sfc.util;
+
+import org.onosproject.net.behaviour.ExtensionSelectorResolver;
+import org.onosproject.net.driver.DriverData;
+import org.onosproject.net.driver.DriverHandler;
+import org.onosproject.net.flow.criteria.ExtensionSelector;
+import org.onosproject.net.flow.criteria.ExtensionSelectorType;
+
+public class MockExtensionSelectorResolver implements ExtensionSelectorResolver {
+
+ @Override
+ public DriverHandler handler() {
+ return null;
+ }
+
+ @Override
+ public void setHandler(DriverHandler handler) {
+ }
+
+ @Override
+ public DriverData data() {
+ return null;
+ }
+
+ @Override
+ public void setData(DriverData data) {
+ }
+
+ @Override
+ public ExtensionSelector getExtensionSelector(ExtensionSelectorType type) {
+ return new MockExtensionSelector();
+ }
+}
\ No newline at end of file
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatment.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatment.java
new file mode 100644
index 0000000..f28d5dd
--- /dev/null
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatment.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2016 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.sfc.util;
+
+import java.util.List;
+
+import org.onosproject.net.flow.instructions.ExtensionPropertyException;
+import org.onosproject.net.flow.instructions.ExtensionTreatment;
+import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
+
+public class MockExtensionTreatment implements ExtensionTreatment {
+
+ @Override
+ public <T> void setPropertyValue(String key, T value) throws ExtensionPropertyException {
+ }
+
+ @Override
+ public <T> T getPropertyValue(String key) throws ExtensionPropertyException {
+ return null;
+ }
+
+ @Override
+ public List<String> getProperties() {
+ return null;
+ }
+
+ @Override
+ public byte[] serialize() {
+ return null;
+ }
+
+ @Override
+ public void deserialize(byte[] data) {
+ }
+
+ @Override
+ public ExtensionTreatmentType type() {
+ return null;
+ }
+
+}
\ No newline at end of file
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatmentResolver.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatmentResolver.java
new file mode 100644
index 0000000..b9a0d0d
--- /dev/null
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/MockExtensionTreatmentResolver.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2016 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.sfc.util;
+
+import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
+import org.onosproject.net.driver.DriverData;
+import org.onosproject.net.driver.DriverHandler;
+import org.onosproject.net.flow.instructions.ExtensionTreatment;
+import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
+
+public class MockExtensionTreatmentResolver implements ExtensionTreatmentResolver {
+
+ @Override
+ public DriverHandler handler() {
+ return null;
+ }
+
+ @Override
+ public void setHandler(DriverHandler handler) {
+ }
+
+ @Override
+ public DriverData data() {
+ return null;
+ }
+
+ @Override
+ public void setData(DriverData data) {
+ }
+
+ @Override
+ public ExtensionTreatment getExtensionInstruction(ExtensionTreatmentType type) {
+ return new MockExtensionTreatment();
+ }
+
+}
\ No newline at end of file
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainManagerTestImpl.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainAdapter.java
similarity index 98%
rename from apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainManagerTestImpl.java
rename to apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainAdapter.java
index 4a3ba03..c76b2e6 100644
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainManagerTestImpl.java
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortChainAdapter.java
@@ -29,7 +29,7 @@
/**
* Provides implementation of the portChainService.
*/
-public class PortChainManagerTestImpl
+public class PortChainAdapter
extends AbstractListenerManager<PortChainEvent, PortChainListener>
implements PortChainService {
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairManagerTestImpl.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairAdapter.java
similarity index 97%
rename from apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairManagerTestImpl.java
rename to apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairAdapter.java
index aff5882..1a526b4 100644
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairManagerTestImpl.java
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairAdapter.java
@@ -27,7 +27,7 @@
/**
* Provides implementation of the portPairService.
*/
-public class PortPairManagerTestImpl implements PortPairService {
+public class PortPairAdapter implements PortPairService {
private ConcurrentMap<PortPairId, PortPair> portPairStore = new ConcurrentHashMap<>();
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupManagerTestImpl.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupAdapter.java
similarity index 96%
rename from apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupManagerTestImpl.java
rename to apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupAdapter.java
index ba31cd6..6e3de44 100644
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupManagerTestImpl.java
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/PortPairGroupAdapter.java
@@ -27,7 +27,7 @@
/**
* Provides implementation of the portPairGroupService.
*/
-public class PortPairGroupManagerTestImpl implements PortPairGroupService {
+public class PortPairGroupAdapter implements PortPairGroupService {
private ConcurrentMap<PortPairGroupId, PortPairGroup> portPairGroupStore = new ConcurrentHashMap<>();
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortManagerTestImpl.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortAdapter.java
similarity index 96%
rename from apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortManagerTestImpl.java
rename to apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortAdapter.java
index de056a7..6570c97 100644
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortManagerTestImpl.java
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VirtualPortAdapter.java
@@ -31,7 +31,7 @@
/**
* Provides implementation of the VirtualPort APIs.
*/
-public class VirtualPortManagerTestImpl implements VirtualPortService {
+public class VirtualPortAdapter implements VirtualPortService {
protected ConcurrentMap<VirtualPortId, VirtualPort> vPortStore = new ConcurrentHashMap<>();
diff --git a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscManagerTestImpl.java b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscAdapter.java
similarity index 93%
rename from apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscManagerTestImpl.java
rename to apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscAdapter.java
index 4c761e9..1179dc0 100644
--- a/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscManagerTestImpl.java
+++ b/apps/vtn/sfcmgr/src/test/java/org/onosproject/sfc/util/VtnRscAdapter.java
@@ -31,7 +31,7 @@
/**
* Provides implementation of the VtnRsc service.
*/
-public class VtnRscManagerTestImpl implements VtnRscService {
+public class VtnRscAdapter implements VtnRscService {
@Override
public void addListener(VtnRscListener listener) {
}
@@ -62,13 +62,12 @@
@Override
public boolean isServiceFunction(VirtualPortId portId) {
- // TODO Auto-generated method stub
return false;
}
@Override
public DeviceId getSfToSffMaping(VirtualPortId portId) {
- return DeviceId.deviceId("www.google.com");
+ return DeviceId.deviceId("of:000000000000001");
}
@Override