Phaneendra Manda
Committed by Thomas Vachuska

[ONOS-3833] Added data structure to store load balance path info

Change-Id: Icf73a7c91652c2532db889fb4df70232a16650a2
......@@ -15,11 +15,13 @@
*/
package org.onosproject.vtnrsc;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.Objects;
import org.onlab.packet.IpPrefix;
import com.google.common.base.MoreObjects;
import static com.google.common.base.Preconditions.checkNotNull;
/**
* Provides Default flow classifier.
......
......@@ -18,10 +18,16 @@ package org.onosproject.vtnrsc;
import static com.google.common.base.MoreObjects.toStringHelper;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
/**
* Implementation of port chain.
......@@ -35,6 +41,9 @@ public final class DefaultPortChain implements PortChain {
private final List<PortPairGroupId> portPairGroupList;
private final List<FlowClassifierId> flowClassifierList;
private final Map<FiveTuple, LoadBalanceId> sfcLoadBalanceIdMap = new ConcurrentHashMap<>();
private final Map<LoadBalanceId, List<PortPairId>> sfcLoadBalancePathMap = new ConcurrentHashMap<>();
/**
* Default constructor to create port chain.
*
......@@ -58,6 +67,23 @@ public final class DefaultPortChain implements PortChain {
this.flowClassifierList = flowClassifierList;
}
/**
* Match for two given paths.
*
* @param path1 path of sfc
* @param path2 path of sfc
* @return true if the given path are same false otherwise
*/
private boolean comparePath(List<PortPairId> path1, List<PortPairId> path2) {
Iterator it = path1.iterator();
for (PortPairId portPairId: path2) {
if (!portPairId.equals(it.next())) {
return false;
}
}
return true;
}
@Override
public PortChainId portChainId() {
return portChainId;
......@@ -89,6 +115,47 @@ public final class DefaultPortChain implements PortChain {
}
@Override
public void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id,
List<PortPairId> path) {
this.sfcLoadBalanceIdMap.put(fiveTuple, id);
this.sfcLoadBalancePathMap.put(id, path);
}
@Override
public LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple) {
return this.sfcLoadBalanceIdMap.get(fiveTuple);
}
@Override
public Set<FiveTuple> getLoadBalanceIdMapKeys() {
return ImmutableSet.copyOf(sfcLoadBalanceIdMap.keySet());
}
@Override
public List<PortPairId> getLoadBalancePath(LoadBalanceId id) {
return ImmutableList.copyOf(this.sfcLoadBalancePathMap.get(id));
}
@Override
public List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple) {
return ImmutableList.copyOf(this.sfcLoadBalancePathMap.get(this.sfcLoadBalanceIdMap.get(fiveTuple)));
}
@Override
public Optional<LoadBalanceId> matchPath(List<PortPairId> path) {
LoadBalanceId id = null;
for (Map.Entry<LoadBalanceId, List<PortPairId>> entry : sfcLoadBalancePathMap.entrySet()) {
List<PortPairId> tempPath = entry.getValue();
if (comparePath(path, tempPath)) {
id = entry.getKey();
break;
}
}
return Optional.of(id);
}
@Override
public int hashCode() {
return Objects.hash(portChainId, tenantId, name, description,
portPairGroupList, flowClassifierList);
......
......@@ -19,7 +19,9 @@ import static com.google.common.base.MoreObjects.toStringHelper;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import com.google.common.collect.ImmutableList;
......@@ -33,6 +35,7 @@ public final class DefaultPortPairGroup implements PortPairGroup {
private final String name;
private final String description;
private final List<PortPairId> portPairList;
private final Map<PortPairId, Integer> portPairLoadMap;
/**
* Default constructor to create Port Pair Group.
......@@ -52,6 +55,10 @@ public final class DefaultPortPairGroup implements PortPairGroup {
this.name = name;
this.description = description;
this.portPairList = portPairList;
portPairLoadMap = new ConcurrentHashMap<>();
for (PortPairId portPairId : portPairList) {
portPairLoadMap.put(portPairId, new Integer(0));
}
}
@Override
......@@ -80,6 +87,18 @@ public final class DefaultPortPairGroup implements PortPairGroup {
}
@Override
public void addLoad(PortPairId portPairId) {
int load = portPairLoadMap.get(portPairId);
load = load + 1;
portPairLoadMap.put(portPairId, new Integer(load));
}
@Override
public int getLoad(PortPairId portPairId) {
return portPairLoadMap.get(portPairId);
}
@Override
public int hashCode() {
return Objects.hash(portPairGroupId, tenantId, name, description,
portPairList);
......
......@@ -16,6 +16,8 @@
package org.onosproject.vtnrsc;
import java.util.List;
import java.util.Optional;
import java.util.Set;
/**
* Abstraction of an entity providing Port Chain information.
......@@ -70,6 +72,55 @@ public interface PortChain {
List<FlowClassifierId> flowClassifiers();
/**
* Adds a new load balanced path.
*
* @param fiveTuple five tuple from the packet
* @param id load balance path identifier
* @param path load balanced path of list of port pairs
*/
void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id,
List<PortPairId> path);
/**
* Get the load balance id from five tuple.
*
* @param fiveTuple five tuple from the packet
* @return load balance identifier for the given packet
*/
LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple);
/**
* Get the keys set from load balanced id map.
*
* @return set of five tuple info
*/
Set<FiveTuple> getLoadBalanceIdMapKeys();
/**
* Get the load balanced path from load balance Id.
*
* @param id load balance id.
* @return path containing list of port pairs
*/
List<PortPairId> getLoadBalancePath(LoadBalanceId id);
/**
* Get the load balanced path from five tuple.
*
* @param fiveTuple five tuple from the packet
* @return path containing list of port pairs
*/
List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple);
/**
* Match the given path with existing load balanced paths.
*
* @param path load balanced path
* @return load balance id if the path matches, null otherwise.
*/
Optional<LoadBalanceId> matchPath(List<PortPairId> path);
/**
* Returns whether this port chain is an exact match to the port chain given
* in the argument.
* <p>
......
......@@ -59,6 +59,21 @@ public interface PortPairGroup {
List<PortPairId> portPairs();
/**
* Adds the load on the given port pair id.
*
* @param portPairId port pair id.
*/
public void addLoad(PortPairId portPairId);
/**
* Get the load on the given port pair id.
*
* @param portPairId port pair id
* @return load on the given port pair id.
*/
public int getLoad(PortPairId portPairId);
/**
* Returns whether this port pair group is an exact match to the
* port pair group given in the argument.
* <p>
......
......@@ -15,61 +15,74 @@
*/
package org.onosproject.vtnrsc;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import org.junit.Test;
import org.onlab.packet.IPv4;
import org.onlab.packet.IpAddress;
import org.onosproject.net.PortNumber;
import com.google.common.collect.Lists;
import com.google.common.testing.EqualsTester;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
/**
* Unit tests for DefaultPortChain class.
*/
public class DefaultPortChainTest {
/**
* Checks that the DefaultPortChain class is immutable.
*/
@Test
public void testImmutability() {
assertThatClassIsImmutable(DefaultPortChain.class);
}
/**
* Checks the operation of equals() methods.
*/
@Test
public void testEquals() {
// Create same two port chain objects.
final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
final TenantId tenantId = TenantId.tenantId("1");
final String name = "PortChain1";
final String description = "PortChain1";
// create list of Port Pair Groups.
final String name = "PortChain";
final String description = "PortChain";
final List<PortPairGroupId> portPairGroups = new LinkedList<PortPairGroupId>();
final List<FlowClassifierId> flowClassifiers = new LinkedList<FlowClassifierId>();
private PortChain getPortChain() {
portPairGroups.clear();
flowClassifiers.clear();
// create list of Port Pair Groups.
PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
portPairGroups.add(portPairGroupId);
portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af");
portPairGroups.add(portPairGroupId);
// create list of Flow classifiers.
final List<FlowClassifierId> flowClassifiers = new LinkedList<FlowClassifierId>();
FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
flowClassifiers.add(flowClassifierId);
flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af");
flowClassifiers.add(flowClassifierId);
DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder();
final PortChain portChain1 = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name)
final PortChain portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name)
.setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers)
.build();
portChainBuilder = new DefaultPortChain.Builder();
final PortChain samePortChain1 = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name)
.setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers)
.build();
return portChain;
}
/**
* Checks that the DefaultPortChain class is immutable.
*/
@Test
public void testImmutability() {
assertThatClassIsImmutable(DefaultPortChain.class);
}
/**
* Checks the operation of equals() methods.
*/
@Test
public void testEquals() {
// Create same two port chain objects.
final PortChain portChain1 = getPortChain();
final PortChain samePortChain1 = getPortChain();
// Create different port chain object.
final PortChainId portChainId2 = PortChainId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae");
......@@ -78,18 +91,18 @@ public class DefaultPortChainTest {
final String description2 = "PortChain2";
// create list of Port Pair Groups.
final List<PortPairGroupId> portPairGroups2 = new LinkedList<PortPairGroupId>();
portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae");
PortPairGroupId portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae");
portPairGroups2.add(portPairGroupId);
portPairGroupId = PortPairGroupId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3af");
portPairGroups2.add(portPairGroupId);
// create list of Flow classifiers.
final List<FlowClassifierId> flowClassifiers2 = new LinkedList<FlowClassifierId>();
flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3ae");
FlowClassifierId flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3ae");
flowClassifiers2.add(flowClassifierId);
flowClassifierId = FlowClassifierId.of("76666666-fc23-aeb6-f44b-56dc5e2fb3af");
flowClassifiers2.add(flowClassifierId);
portChainBuilder = new DefaultPortChain.Builder();
DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder();
final PortChain portChain2 = portChainBuilder.setId(portChainId2).setTenantId(tenantId2).setName(name2)
.setDescription(description2).setPortPairGroups(portPairGroups2).setFlowClassifiers(flowClassifiers2)
.build();
......@@ -102,27 +115,8 @@ public class DefaultPortChainTest {
*/
@Test
public void testConstruction() {
final PortChainId portChainId = PortChainId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
final TenantId tenantId = TenantId.tenantId("1");
final String name = "PortChain";
final String description = "PortChain";
// create list of Port Pair Groups.
final List<PortPairGroupId> portPairGroups = new LinkedList<PortPairGroupId>();
PortPairGroupId portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
portPairGroups.add(portPairGroupId);
portPairGroupId = PortPairGroupId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3af");
portPairGroups.add(portPairGroupId);
// create list of Flow classifiers.
final List<FlowClassifierId> flowClassifiers = new LinkedList<FlowClassifierId>();
FlowClassifierId flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
flowClassifiers.add(flowClassifierId);
flowClassifierId = FlowClassifierId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3af");
flowClassifiers.add(flowClassifierId);
DefaultPortChain.Builder portChainBuilder = new DefaultPortChain.Builder();
final PortChain portChain = portChainBuilder.setId(portChainId).setTenantId(tenantId).setName(name)
.setDescription(description).setPortPairGroups(portPairGroups).setFlowClassifiers(flowClassifiers)
.build();
final PortChain portChain = getPortChain();
assertThat(portChainId, is(portChain.portChainId()));
assertThat(tenantId, is(portChain.tenantId()));
......@@ -131,4 +125,37 @@ public class DefaultPortChainTest {
assertThat(portPairGroups, is(portChain.portPairGroups()));
assertThat(flowClassifiers, is(portChain.flowClassifiers()));
}
/**
* Verifies the load balance data structures.
*/
@Test
public void testLoadBalanceIdMap() {
final PortChain portChain = getPortChain();
final FiveTuple fiveTuple1 = DefaultFiveTuple.builder().setIpSrc(IpAddress.valueOf("1.1.1.1"))
.setIpDst(IpAddress.valueOf("2.2.2.2"))
.setPortSrc(PortNumber.portNumber(500))
.setPortDst(PortNumber.portNumber(1000))
.setProtocol(IPv4.PROTOCOL_TCP)
.build();
PortPairId portPairId = PortPairId.of("a4444444-4a56-2a6e-cd3a-9dee4e2ec345");
final LoadBalanceId id1 = LoadBalanceId.of((byte) 1);
List<PortPairId> tempPath = Lists.newArrayList();
tempPath.add(portPairId);
portChain.addLoadBalancePath(fiveTuple1, id1, tempPath);
Set<FiveTuple> keys = portChain.getLoadBalanceIdMapKeys();
List<PortPairId> path = portChain.getLoadBalancePath(fiveTuple1);
assertThat(portChain.getLoadBalancePath(fiveTuple1), is(path));
assertThat(portChain.getLoadBalancePath(id1), is(path));
assertThat(portChain.getLoadBalanceId(fiveTuple1), is(id1));
assertThat(keys.contains(fiveTuple1), is(true));
assertThat(path.contains(portPairId), is(true));
}
}
......
......@@ -15,6 +15,10 @@
*/
package org.onosproject.vtnrsc;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
import java.util.LinkedList;
import java.util.List;
......@@ -22,14 +26,34 @@ import org.junit.Test;
import com.google.common.testing.EqualsTester;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
/**
* Unit tests for DefaultPortPairGroup class.
*/
public class DefaultPortPairGroupTest {
final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
final TenantId tenantId = TenantId.tenantId("1");
final String name = "PortPairGroup1";
final String description = "PortPairGroup1";
final List<PortPairId> portPairList = new LinkedList<PortPairId>();
private PortPairGroup getPortPairGroup() {
portPairList.clear();
// Create same two port-pair-group objects.
PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
portPairList.add(portPairId);
portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
portPairList.add(portPairId);
DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder();
PortPairGroup portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId)
.setName(name).setDescription(description).setPortPairs(portPairList).build();
return portPairGroup;
}
/**
* Checks that the DefaultPortPairGroup class is immutable.
*/
......@@ -43,25 +67,11 @@ public class DefaultPortPairGroupTest {
*/
@Test
public void testEquals() {
// Create same two port-pair-group objects.
final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
final TenantId tenantId = TenantId.tenantId("1");
final String name = "PortPairGroup1";
final String description = "PortPairGroup1";
// create port-pair-id list
final List<PortPairId> portPairList = new LinkedList<PortPairId>();
PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
portPairList.add(portPairId);
portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
portPairList.add(portPairId);
DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder();
final PortPairGroup portPairGroup1 = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId)
.setName(name).setDescription(description).setPortPairs(portPairList).build();
final PortPairGroup portPairGroup1 = getPortPairGroup();
portPairGroupBuilder = new DefaultPortPairGroup.Builder();
final PortPairGroup samePortPairGroup1 = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId)
.setName(name).setDescription(description).setPortPairs(portPairList).build();
DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder();
final PortPairGroup samePortPairGroup1 = getPortPairGroup();
// Create different port-pair-group object.
final PortPairGroupId portPairGroupId2 = PortPairGroupId.of("79999999-fc23-aeb6-f44b-56dc5e2fb3ae");
......@@ -70,7 +80,7 @@ public class DefaultPortPairGroupTest {
final String description2 = "PortPairGroup2";
// create port-pair-id list
final List<PortPairId> portPairList2 = new LinkedList<PortPairId>();
portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae");
PortPairId portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae");
portPairList2.add(portPairId);
portPairId = PortPairId.of("75555555-fc23-aeb6-f44b-56dc5e2fb3ae");
portPairList2.add(portPairId);
......@@ -88,20 +98,8 @@ public class DefaultPortPairGroupTest {
*/
@Test
public void testConstruction() {
final PortPairGroupId portPairGroupId = PortPairGroupId.of("78888888-fc23-aeb6-f44b-56dc5e2fb3ae");
final TenantId tenantId = TenantId.tenantId("1");
final String name = "PortPairGroup";
final String description = "PortPairGroup";
// create port-pair-id list
final List<PortPairId> portPairList = new LinkedList<PortPairId>();
PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
portPairList.add(portPairId);
portPairId = PortPairId.of("74444444-fc23-aeb6-f44b-56dc5e2fb3ae");
portPairList.add(portPairId);
DefaultPortPairGroup.Builder portPairGroupBuilder = new DefaultPortPairGroup.Builder();
final PortPairGroup portPairGroup = portPairGroupBuilder.setId(portPairGroupId).setTenantId(tenantId)
.setName(name).setDescription(description).setPortPairs(portPairList).build();
final PortPairGroup portPairGroup = getPortPairGroup();
assertThat(portPairGroupId, is(portPairGroup.portPairGroupId()));
assertThat(tenantId, is(portPairGroup.tenantId()));
......@@ -109,4 +107,19 @@ public class DefaultPortPairGroupTest {
assertThat(description, is(portPairGroup.description()));
assertThat(portPairList, is(portPairGroup.portPairs()));
}
/**
* Checks the port pair load map.
*/
@Test
public void testPortPairLod() {
PortPairId portPairId = PortPairId.of("73333333-fc23-aeb6-f44b-56dc5e2fb3ae");
final PortPairGroup portPairGroup = getPortPairGroup();
int load1 = portPairGroup.getLoad(portPairId);
portPairGroup.addLoad(portPairId);
int load2 = portPairGroup.getLoad(portPairId);
assertThat((load1 + 1), is(load2));
}
}
......
......@@ -30,11 +30,11 @@ import java.net.HttpURLConnection;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import javax.ws.rs.core.MediaType;
import com.eclipsesource.json.Json;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
......@@ -42,14 +42,18 @@ import org.onlab.osgi.ServiceDirectory;
import org.onlab.osgi.TestServiceDirectory;
import org.onlab.rest.BaseResource;
import org.onosproject.codec.CodecService;
import org.onosproject.vtnrsc.FiveTuple;
import org.onosproject.vtnrsc.FlowClassifierId;
import org.onosproject.vtnrsc.LoadBalanceId;
import org.onosproject.vtnrsc.PortChain;
import org.onosproject.vtnrsc.PortChainId;
import org.onosproject.vtnrsc.PortPairGroupId;
import org.onosproject.vtnrsc.PortPairId;
import org.onosproject.vtnrsc.TenantId;
import org.onosproject.vtnrsc.portchain.PortChainService;
import org.onosproject.vtnweb.web.SfcCodecContext;
import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonObject;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
......@@ -135,6 +139,41 @@ public class PortChainResourceTest extends VtnResourceTest {
Objects.equals(this.portChainId, portChain.portChainId()) &&
Objects.equals(this.tenantId, portChain.tenantId());
}
@Override
public void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id, List<PortPairId> path) {
// TODO Auto-generated method stub
}
@Override
public LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple) {
// TODO Auto-generated method stub
return null;
}
@Override
public Set<FiveTuple> getLoadBalanceIdMapKeys() {
// TODO Auto-generated method stub
return null;
}
@Override
public List<PortPairId> getLoadBalancePath(LoadBalanceId id) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple) {
// TODO Auto-generated method stub
return null;
}
@Override
public Optional<LoadBalanceId> matchPath(List<PortPairId> path) {
// TODO Auto-generated method stub
return null;
}
}
/**
......
......@@ -34,7 +34,6 @@ import java.util.Set;
import javax.ws.rs.core.MediaType;
import com.eclipsesource.json.Json;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
......@@ -49,6 +48,7 @@ import org.onosproject.vtnrsc.TenantId;
import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService;
import org.onosproject.vtnweb.web.SfcCodecContext;
import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonObject;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
......@@ -122,6 +122,17 @@ public class PortPairGroupResourceTest extends VtnResourceTest {
Objects.equals(this.portPairGroupId, portPairGroup.portPairGroupId()) &&
Objects.equals(this.tenantId, portPairGroup.tenantId());
}
@Override
public void addLoad(PortPairId portPairId) {
// TODO Auto-generated method stub
}
@Override
public int getLoad(PortPairId portPairId) {
// TODO Auto-generated method stub
return 0;
}
}
/**
......