PCE Changes to handle bandwidth changes from network
Change-Id: Ib4961ac4ea8ed803fb035ab93725ae6f0968a5c0
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/BandwidthMgmtServiceAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/BandwidthMgmtServiceAdapter.java
new file mode 100644
index 0000000..19786d0
--- /dev/null
+++ b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/BandwidthMgmtServiceAdapter.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2017-present 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.pce.pceservice;
+
+import org.onosproject.net.Link;
+import org.onosproject.net.LinkKey;
+import org.onosproject.bandwidthmgr.api.BandwidthMgmtService;
+
+import java.util.Set;
+
+/**
+ * Adapter for Bandwidth Management service.
+ */
+public class BandwidthMgmtServiceAdapter implements BandwidthMgmtService {
+ @Override
+ public boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth) {
+ return false;
+ }
+
+ @Override
+ public boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth) {
+ return false;
+ }
+
+ @Override
+ public Double getAllocatedLocalReservedBw(LinkKey linkkey) {
+ return null;
+ }
+
+ @Override
+ public boolean addUnreservedBw(LinkKey linkkey, Set<Double> bandwidth) {
+ return false;
+ }
+
+ @Override
+ public boolean removeUnreservedBw(LinkKey linkkey) {
+ return false;
+ }
+
+ @Override
+ public Set<Double> getUnreservedBw(LinkKey linkkey) {
+ return null;
+ }
+
+ @Override
+ public boolean isBandwidthAvailable(Link link, Double bandwidth) {
+ return false;
+ }
+
+ @Override
+ public Double getTeCost(LinkKey linkKey) {
+ return null;
+ }
+
+ @Override
+ public Double getAvailableBandwidth(LinkKey linkKey) {
+ return null;
+ }
+}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java
index 3a5eff4..59fa89c 100644
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java
+++ b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/DefaultPcePathTest.java
@@ -34,8 +34,8 @@
import org.onlab.rest.BaseResource;
import org.onosproject.incubator.net.tunnel.TunnelId;
import org.onosproject.pce.pceservice.constraint.CostConstraint;
+import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
import org.onosproject.pce.pcestore.api.PceStore;
-import org.onosproject.net.intent.constraint.BandwidthConstraint;
import java.util.List;
@@ -147,7 +147,7 @@
CostConstraint costConstExpected = CostConstraint.of(CostConstraint.Type.values()[Integer.valueOf(cost) - 1]);
CostConstraint costConstActual = (CostConstraint) path.costConstraint();
assertThat(costConstActual.type(), is(costConstExpected.type()));
- BandwidthConstraint bandwidthActual = (BandwidthConstraint) path.bandwidthConstraint();
+ PceBandwidthConstraint bandwidthActual = (PceBandwidthConstraint) path.bandwidthConstraint();
assertThat(bandwidthActual.bandwidth().bps(), is(Double.valueOf(bandwidth)));
}
}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PathComputationTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PathComputationTest.java
index 60a84cc..36b7eb5 100644
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PathComputationTest.java
+++ b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PathComputationTest.java
@@ -15,6 +15,12 @@
*/
package org.onosproject.pce.pceservice;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -25,7 +31,6 @@
import org.onlab.graph.GraphPathSearch;
import org.onlab.packet.ChassisId;
import org.onlab.util.Bandwidth;
-import org.onlab.util.Tools;
import org.onosproject.net.AnnotationKeys;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DefaultAnnotations;
@@ -33,45 +38,30 @@
import org.onosproject.net.DefaultLink;
import org.onosproject.net.DefaultPath;
import org.onosproject.net.Device;
+import org.onosproject.net.Device.Type;
import org.onosproject.net.DeviceId;
import org.onosproject.net.Link;
+import org.onosproject.net.LinkKey;
import org.onosproject.net.Path;
import org.onosproject.net.PortNumber;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.intent.IntentId;
-import org.onosproject.net.Device.Type;
import org.onosproject.net.config.Config;
import org.onosproject.net.config.ConfigApplyDelegate;
import org.onosproject.net.config.ConfigFactory;
import org.onosproject.net.config.NetworkConfigRegistryAdapter;
-import org.onosproject.net.intent.constraint.BandwidthConstraint;
import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.resource.ContinuousResource;
-import org.onosproject.net.resource.ContinuousResourceId;
-import org.onosproject.net.resource.DiscreteResource;
-import org.onosproject.net.resource.DiscreteResourceId;
-import org.onosproject.net.resource.Resource;
-import org.onosproject.net.resource.ResourceAllocation;
-import org.onosproject.net.resource.ResourceConsumer;
-import org.onosproject.net.resource.ResourceId;
-import org.onosproject.net.resource.Resources;
+import org.onosproject.net.intent.Constraint;
import org.onosproject.net.provider.ProviderId;
import org.onosproject.net.topology.DefaultTopologyEdge;
import org.onosproject.net.topology.DefaultTopologyVertex;
-import org.onosproject.net.topology.LinkWeigher;
import org.onosproject.net.topology.LinkWeight;
import org.onosproject.net.topology.TopologyEdge;
import org.onosproject.net.topology.TopologyVertex;
import org.onosproject.pce.pceservice.constraint.CapabilityConstraint;
import org.onosproject.pce.pceservice.constraint.CostConstraint;
+import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
import org.onosproject.pce.pceservice.constraint.SharedBandwidthConstraint;
import org.onosproject.pcep.api.DeviceCapability;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.JsonNodeFactory;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
+import org.onosproject.pcep.api.TeLinkConfig;
import java.util.Collections;
import java.util.HashMap;
@@ -80,19 +70,18 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.collect.ImmutableSet.of;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.onlab.graph.GraphPathSearch.ALL_PATHS;
import static org.onosproject.core.CoreService.CORE_PROVIDER_ID;
-import static com.google.common.collect.ImmutableSet.of;
-import static org.onosproject.net.resource.Resources.continuous;
-import static org.onosproject.net.Link.Type.DIRECT;
-import static org.onosproject.net.Link.State.ACTIVE;
import static org.onosproject.net.DeviceId.deviceId;
+import static org.onosproject.net.Link.State.ACTIVE;
+import static org.onosproject.net.Link.Type.DIRECT;
import static org.onosproject.net.topology.AdapterLinkWeigher.adapt;
import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.COST;
import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.TE_COST;
@@ -102,10 +91,10 @@
*/
public class PathComputationTest {
- private final MockPathResourceService resourceService = new MockPathResourceService();
private final MockDeviceService deviceService = new MockDeviceService();
private final MockNetConfigRegistryAdapter netConfigRegistry = new MockNetConfigRegistryAdapter();
private PceManager pceManager = new PceManager();
+ private final MockBandwidthMgmtService bandwidthMgmtService = new MockBandwidthMgmtService();
public static ProviderId providerId = new ProviderId("pce", "foo");
public static final String DEVICE1 = "D001";
public static final String DEVICE2 = "D002";
@@ -132,7 +121,6 @@
@Before
public void startUp() {
- pceManager.resourceService = resourceService;
pceManager.deviceService = deviceService;
pceManager.netCfgService = netConfigRegistry;
}
@@ -160,11 +148,6 @@
ConnectPoint dst = new ConnectPoint(DeviceId.deviceId(device2), PortNumber.portNumber(port2));
Link curLink;
DefaultAnnotations.Builder annotationBuilder = DefaultAnnotations.builder();
- if (setCost) {
- annotationBuilder.set(ANNOTATION_COST, String.valueOf(value));
- } else {
- annotationBuilder.set(ANNOTATION_TE_COST, String.valueOf(value));
- }
//TODO:If cost not set cost : default value case
curLink = DefaultLink.builder().src(src).dst(dst).state(ACTIVE).type(DIRECT)
@@ -174,7 +157,6 @@
@After
public void tearDown() {
- pceManager.resourceService = null;
pceManager.deviceService = null;
pceManager.netCfgService = null;
}
@@ -186,8 +168,8 @@
* @param constraints path constraints
* @return edge-weight function
*/
- private LinkWeigher weight(List<Constraint> constraints) {
- return adapt(new MockTeConstraintBasedLinkWeight(constraints));
+ private LinkWeight weight(List<Constraint> constraints) {
+ return new MockTeConstraintBasedLinkWeight(constraints);
}
private Set<Path> computePath(Link link1, Link link2, Link link3, Link link4, List<Constraint> constraints) {
@@ -198,7 +180,7 @@
new DefaultTopologyEdge(D3, D4, link4)));
GraphPathSearch.Result<TopologyVertex, TopologyEdge> result =
- graphSearch().search(graph, D1, D4, weight(constraints), ALL_PATHS);
+ graphSearch().search(graph, D1, D4, adapt(weight(constraints)), ALL_PATHS);
ImmutableSet.Builder<Path> builder = ImmutableSet.builder();
for (org.onlab.graph.Path<TopologyVertex, TopologyEdge> path : result.paths()) {
builder.add(networkPath(path));
@@ -262,9 +244,19 @@
Constraint constraint = it.next();
if (constraint instanceof CapabilityConstraint) {
cost = ((CapabilityConstraint) constraint).isValidLink(edge.link(), deviceService,
- netConfigRegistry) ? 1 : -1;
+ netConfigRegistry) ? 1 : -1;
+ } else if (constraint instanceof PceBandwidthConstraint) {
+ cost = ((PceBandwidthConstraint) constraint).isValidLink(edge.link(),
+ bandwidthMgmtService) ? 1 : -1;
+
+ } else if (constraint instanceof SharedBandwidthConstraint) {
+ cost = ((SharedBandwidthConstraint) constraint).isValidLink(edge.link(),
+ bandwidthMgmtService) ? 1 : -1;
+
+ } else if (constraint instanceof CostConstraint) {
+ cost = ((CostConstraint) constraint).isValidLink(edge.link(), netConfigRegistry);
} else {
- cost = constraint.cost(edge.link(), resourceService::isAvailable);
+ cost = constraint.cost(edge.link(), null);
}
}
return cost;
@@ -279,85 +271,92 @@
return new DefaultPath(CORE_PROVIDER_ID, links, path.cost());
}
- /**
- * Tests Resource service for path computation.
- */
- public class MockPathResourceService extends ResourceServiceAdapter {
- private final Map<Resource, ResourceConsumer> assignment = new HashMap<>();
- private Map<ResourceId, List<ResourceAllocation>> resourcesAllocations = new HashMap<>();
+ public static class MockBandwidthMgmtService extends BandwidthMgmtServiceAdapter {
+ private Map<LinkKey, Double> teCost = new HashMap<>();
+ // Locally maintain unreserved bandwidth of each link.
+ private Map<LinkKey, Set<Double>> unResvBw = new HashMap<>();
+
+ // Mapping tunnel with link key with local reserved bandwidth
+ private Map<LinkKey, Double> localReservedBw = new HashMap<>();
@Override
- public Optional<ResourceAllocation> allocate(ResourceConsumer consumer, Resource resources) {
- List<ResourceAllocation> allocations = allocate(consumer, ImmutableList.of(resources));
- if (allocations.isEmpty()) {
- return Optional.empty();
+ public boolean allocLocalReservedBw(LinkKey linkkey, Double bandwidth) {
+ Double allocatedBw = localReservedBw.get(linkkey);
+ if (allocatedBw != null) {
+ localReservedBw.put(linkkey, (allocatedBw + bandwidth));
+ } else {
+ localReservedBw.put(linkkey, bandwidth);
}
- assert allocations.size() == 1;
- ResourceAllocation allocation = allocations.get(0);
- assert allocation.resource().equals(resources);
-
- // cast is ensured by the assertions above
- return Optional.of(allocation);
+ return true;
}
@Override
- public List<ResourceAllocation> allocate(ResourceConsumer consumer, List<? extends Resource> resources) {
- for (Resource resource: resources) {
- if (resource instanceof ContinuousResource) {
- List<ResourceAllocation> allocs = new LinkedList<>();
- allocs.add(new ResourceAllocation(resource, consumer));
- resourcesAllocations.put(resource.id(), allocs);
- }
+ public boolean releaseLocalReservedBw(LinkKey linkkey, Double bandwidth) {
+ Double allocatedBw = localReservedBw.get(linkkey);
+ if (allocatedBw == null || allocatedBw < bandwidth) {
+ return false;
}
- return resources.stream()
- .map(x -> new ResourceAllocation(x, consumer))
- .collect(Collectors.toList());
+
+ Double releasedBw = allocatedBw - bandwidth;
+ if (releasedBw == 0.0) {
+ localReservedBw.remove(linkkey);
+ } else {
+ localReservedBw.put(linkkey, releasedBw);
+ }
+ return true;
}
@Override
- public List<ResourceAllocation> getResourceAllocations(ResourceId id) {
- if (id instanceof ContinuousResourceId) {
- return resourcesAllocations.get(id);
- }
- DiscreteResource discrete = Resources.discrete((DiscreteResourceId) id).resource();
- return Optional.ofNullable(assignment.get(discrete))
- .map(x -> ImmutableList.of(new ResourceAllocation(discrete, x)))
- .orElse(ImmutableList.of());
+ public Double getAllocatedLocalReservedBw(LinkKey linkkey) {
+ return localReservedBw.get(linkkey);
}
@Override
- public <T> Set<Resource> getAvailableResources(DiscreteResourceId parent, Class<T> cls) {
- return getAvailableResources(parent).stream()
- .filter(x -> x.isTypeOf(cls))
- .collect(Collectors.toSet());
+ public boolean addUnreservedBw(LinkKey linkkey, Set<Double> bandwidth) {
+ unResvBw.put(linkkey, bandwidth);
+ return true;
}
@Override
- public <T> Set<T> getAvailableResourceValues(DiscreteResourceId parent, Class<T> cls) {
- return getAvailableResources(parent).stream()
- .filter(x -> x.isTypeOf(cls))
- .flatMap(x -> Tools.stream(x.valueAs(cls)))
- .collect(Collectors.toSet());
+ public boolean removeUnreservedBw(LinkKey linkkey) {
+ unResvBw.remove(linkkey);
+ return true;
}
@Override
- public boolean isAvailable(Resource resource) {
- if (resource instanceof DiscreteResource) {
- return true;
- }
+ public Set<Double> getUnreservedBw(LinkKey linkkey) {
+ checkNotNull(linkkey);
+ return unResvBw.get(linkkey);
+ }
- if (resource instanceof ContinuousResource) {
- List<ResourceAllocation> resalloc = resourcesAllocations.get(resource.id());
+ @Override
+ public boolean isBandwidthAvailable(Link link, Double bandwidth) {
+ LinkKey linkKey = LinkKey.linkKey(link);
+ Double localAllocBw = getAllocatedLocalReservedBw(linkKey);
- if ((resalloc != null) && (!resalloc.isEmpty())) {
- if (((ContinuousResource) resalloc.iterator().next().resource()).value()
- >= ((ContinuousResource) resource).value()) {
- return true;
- }
- }
+ Set<Double> unResvBw = getUnreservedBw(linkKey);
+
+ Double prirZeroBw = unResvBw.iterator().next();
+ return (bandwidth <= prirZeroBw - (localAllocBw != null ? localAllocBw : 0));
+ }
+
+ @Override
+ public Double getTeCost(LinkKey linkKey) {
+ if (teCost.get(linkKey) != null) {
+ return teCost.get(linkKey);
}
- return false;
+ return null;
+ }
+
+ @Override
+ public Double getAvailableBandwidth(LinkKey linkKey) {
+ if (unResvBw.get(linkKey) != null && localReservedBw.get(linkKey) != null) {
+
+ return unResvBw.get(linkKey).iterator().next().doubleValue()
+ - localReservedBw.get(linkKey).doubleValue();
+ }
+ return unResvBw.get(linkKey).iterator().next().doubleValue();
}
}
@@ -365,6 +364,7 @@
public static class MockNetConfigRegistryAdapter extends NetworkConfigRegistryAdapter {
private ConfigFactory cfgFactory;
private Map<DeviceId, DeviceCapability> classConfig = new HashMap<>();
+ private Map<LinkKey, TeLinkConfig> teLinkConfig = new HashMap<>();
@Override
public void registerConfigFactory(ConfigFactory configFactory) {
@@ -387,6 +387,15 @@
ConfigApplyDelegate delegate = new InternalApplyDelegate();
devCap.init((DeviceId) subject, null, node, mapper, delegate);
return (C) devCap;
+ } else if (configClass == TeLinkConfig.class) {
+ TeLinkConfig teConfig = new TeLinkConfig();
+ teLinkConfig.put((LinkKey) subject, teConfig);
+
+ JsonNode node = new ObjectNode(new MockJsonNode());
+ ObjectMapper mapper = new ObjectMapper();
+ ConfigApplyDelegate delegate = new InternalApplyDelegate();
+ teConfig.init((LinkKey) subject, null, node, mapper, delegate);
+ return (C) teConfig;
}
return null;
@@ -394,13 +403,19 @@
@Override
public <S, C extends Config<S>> void removeConfig(S subject, Class<C> configClass) {
- classConfig.remove(subject);
+ if (configClass == DeviceCapability.class) {
+ classConfig.remove(subject);
+ } else if (configClass == TeLinkConfig.class) {
+ teLinkConfig.remove(subject);
+ }
}
@Override
public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
if (configClass == DeviceCapability.class) {
return (C) classConfig.get(subject);
+ } else if (configClass == TeLinkConfig.class) {
+ return (C) teLinkConfig.get(subject);
}
return null;
}
@@ -432,6 +447,23 @@
List<Constraint> constraints = new LinkedList<>();
constraints.add(costConst);
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.igpCost(50)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.igpCost(20)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.igpCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.igpCost(50)
+ .apply();
+
Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
List<Link> links = new LinkedList<>();
@@ -456,6 +488,24 @@
CostConstraint costConst = CostConstraint.of(COST);
List<Constraint> constraints = new LinkedList<>();
constraints.add(costConst);
+
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.igpCost(100)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.igpCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.igpCost(1000)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.igpCost(100)
+ .apply();
+
Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
List<Link> links = new LinkedList<>();
@@ -476,29 +526,24 @@
Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 50);
- List<Resource> resources = new LinkedList<>();
+ Set<Double> unreserved = new HashSet<>();
+ unreserved.add(new Double(50));
- resources.add(continuous(link1.src().deviceId(), link1.src().port(), Bandwidth.class)
- .resource(50));
- resources.add(continuous(link2.src().deviceId(), link2.src().port(), Bandwidth.class)
- .resource(50));
- resources.add(continuous(link3.src().deviceId(), link3.src().port(), Bandwidth.class)
- .resource(100));
- resources.add(continuous(link4.src().deviceId(), link4.src().port(), Bandwidth.class)
- .resource(100));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0));
- resources.add(continuous(link1.dst().deviceId(), link1.dst().port(), Bandwidth.class)
- .resource(50));
- resources.add(continuous(link2.dst().deviceId(), link2.dst().port(), Bandwidth.class)
- .resource(50));
- resources.add(continuous(link3.dst().deviceId(), link3.src().port(), Bandwidth.class)
- .resource(100));
- resources.add(continuous(link4.dst().deviceId(), link4.dst().port(), Bandwidth.class)
- .resource(100));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0));
- resourceService.allocate(IntentId.valueOf(70), resources);
+ unreserved.remove(new Double(50));
+ unreserved.add(new Double(100));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0));
- BandwidthConstraint bandwidthConst = new BandwidthConstraint(Bandwidth.bps(10.0));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0));
+
+ PceBandwidthConstraint bandwidthConst = new PceBandwidthConstraint(Bandwidth.bps(10.0));
List<Constraint> constraints = new LinkedList<>();
constraints.add(bandwidthConst);
@@ -518,21 +563,24 @@
Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 100);
- List<Resource> resources = new LinkedList<>();
+ Set<Double> unreserved = new HashSet<>();
+ unreserved.add(new Double(50));
- resources.add(continuous(link1.src().deviceId(), link1.src().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link2.src().deviceId(), link2.src().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link3.src().deviceId(), link3.src().port(), Bandwidth.class).resource(100));
- resources.add(continuous(link4.src().deviceId(), link4.src().port(), Bandwidth.class).resource(100));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0));
- resources.add(continuous(link1.dst().deviceId(), link1.dst().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link2.dst().deviceId(), link2.dst().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link3.dst().deviceId(), link3.dst().port(), Bandwidth.class).resource(100));
- resources.add(continuous(link4.dst().deviceId(), link4.dst().port(), Bandwidth.class).resource(100));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0));
- resourceService.allocate(IntentId.valueOf(70), resources);
+ unreserved.remove(new Double(50));
+ unreserved.add(new Double(100));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0));
- BandwidthConstraint bandwidthConst = new BandwidthConstraint(Bandwidth.bps(60.0));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0));
+
+ PceBandwidthConstraint bandwidthConst = new PceBandwidthConstraint(Bandwidth.bps(60.0));
List<Constraint> constraints = new LinkedList<>();
constraints.add(bandwidthConst);
@@ -551,18 +599,22 @@
Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80);
- List<Resource> resources = new LinkedList<>();
+ Set<Double> unreserved = new HashSet<>();
+ unreserved.add(new Double(50));
- resources.add(continuous(link1.src().deviceId(), link1.src().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link2.src().deviceId(), link2.src().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link3.src().deviceId(), link3.src().port(), Bandwidth.class).resource(100));
- resources.add(continuous(link4.src().deviceId(), link4.src().port(), Bandwidth.class).resource(100));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0));
- resources.add(continuous(link1.dst().deviceId(), link1.dst().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link2.dst().deviceId(), link2.dst().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link3.dst().deviceId(), link3.dst().port(), Bandwidth.class).resource(100));
- resources.add(continuous(link4.dst().deviceId(), link4.dst().port(), Bandwidth.class).resource(100));
- resourceService.allocate(IntentId.valueOf(70), resources);
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0));
+
+ unreserved.remove(new Double(50));
+ unreserved.add(new Double(100));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0));
+
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0));
List<Constraint> constraints = new LinkedList<>();
@@ -573,6 +625,25 @@
links.add(link2);
CostConstraint costConst = CostConstraint.of(COST);
+
+
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.igpCost(50)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.igpCost(20)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.igpCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.igpCost(50)
+ .apply();
+
sharedLinks.addAll(links);
SharedBandwidthConstraint sharedBw = new SharedBandwidthConstraint(sharedLinks, Bandwidth.bps(10),
Bandwidth.bps(20.0));
@@ -593,18 +664,22 @@
Link link3 = addLink(DEVICE1, 80, DEVICE3, 70, true, 100);
Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, true, 80);
- List<Resource> resources = new LinkedList<>();
+ Set<Double> unreserved = new HashSet<>();
+ unreserved.add(new Double(50));
- resources.add(continuous(link1.src().deviceId(), link1.src().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link2.src().deviceId(), link2.src().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link3.src().deviceId(), link3.src().port(), Bandwidth.class).resource(100));
- resources.add(continuous(link4.src().deviceId(), link4.src().port(), Bandwidth.class).resource(100));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0));
- resources.add(continuous(link1.dst().deviceId(), link1.dst().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link2.dst().deviceId(), link2.dst().port(), Bandwidth.class).resource(50));
- resources.add(continuous(link3.dst().deviceId(), link3.dst().port(), Bandwidth.class).resource(100));
- resources.add(continuous(link4.dst().deviceId(), link4.dst().port(), Bandwidth.class).resource(100));
- resourceService.allocate(IntentId.valueOf(70), resources);
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0));
+
+ unreserved.remove(new Double(50));
+ unreserved.add(new Double(100));
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0));
+
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0));
List<Constraint> constraints = new LinkedList<>();
@@ -614,6 +689,25 @@
links.add(link1);
links.add(link2);
CostConstraint costConst = CostConstraint.of(COST);
+
+
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.igpCost(50)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.igpCost(20)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.igpCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.igpCost(80)
+ .apply();
+
sharedLinks.addAll(links);
SharedBandwidthConstraint sharedBwConst = new SharedBandwidthConstraint(sharedLinks, Bandwidth.bps(20),
Bandwidth.bps(10.0));
@@ -654,6 +748,25 @@
List<Constraint> constraints = new LinkedList<>();
constraints.add(tecostConst);
+
+
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.teCost(50)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.teCost(20)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.teCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.teCost(80)
+ .apply();
+
Set<Path> paths = computePath(link1, link2, link3, link4, constraints);
List<Link> links = new LinkedList<>();
@@ -674,6 +787,25 @@
Link link4 = addLink(DEVICE3, 60, DEVICE4, 50, false, 80);
CostConstraint tecostConst = CostConstraint.of(TE_COST);
+
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.teCost(50)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.teCost(20)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.teCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.teCost(80)
+ .apply();
+
+
CapabilityConstraint capabilityConst = CapabilityConstraint
.of(CapabilityConstraint.CapabilityType.WITH_SIGNALLING);
@@ -754,6 +886,23 @@
constraints.add(capabilityConst);
CostConstraint costConst = CostConstraint.of(COST);
constraints.add(costConst);
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.igpCost(50)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.igpCost(20)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.igpCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.igpCost(80)
+ .apply();
+
//Device1
DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
builder.set(AnnotationKeys.TYPE, L3);
@@ -824,6 +973,23 @@
constraints.add(capabilityConst);
CostConstraint costConst = CostConstraint.of(COST);
constraints.add(costConst);
+
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.igpCost(50)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.igpCost(20)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.igpCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.igpCost(80)
+ .apply();
//Device1
DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
builder.set(AnnotationKeys.TYPE, L3);
@@ -894,6 +1060,23 @@
constraints.add(capabilityConst);
constraints.add(tecostConst);
+
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.teCost(50)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.teCost(20)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.teCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.teCost(80)
+ .apply();
//Device1
DefaultAnnotations.Builder builder = DefaultAnnotations.builder();
builder.set(AnnotationKeys.TYPE, L3);
@@ -1061,6 +1244,28 @@
List<Constraint> constraints = new LinkedList<>();
constraints.add(costConst);
+
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.igpCost(50)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.igpCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.igpCost(10)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.igpCost(10)
+ .apply();
+
+ TeLinkConfig teLinkConfig5 = netConfigRegistry.addConfig(LinkKey.linkKey(link5), TeLinkConfig.class);
+ teLinkConfig5.igpCost(20)
+ .apply();
+
Graph<TopologyVertex, TopologyEdge> graph = new AdjacencyListsGraph<>(of(D1, D2, D3, D4, D5),
of(new DefaultTopologyEdge(D1, D2, link1),
new DefaultTopologyEdge(D2, D4, link2),
@@ -1069,7 +1274,7 @@
new DefaultTopologyEdge(D4, D5, link5)));
GraphPathSearch.Result<TopologyVertex, TopologyEdge> result =
- graphSearch().search(graph, D1, D5, weight(constraints), ALL_PATHS);
+ graphSearch().search(graph, D1, D5, adapt(weight(constraints)), ALL_PATHS);
ImmutableSet.Builder<Path> builder = ImmutableSet.builder();
for (org.onlab.graph.Path<TopologyVertex, TopologyEdge> path : result.paths()) {
builder.add(networkPath(path));
@@ -1154,6 +1359,24 @@
CapabilityConstraint capabilityConst = CapabilityConstraint
.of(CapabilityConstraint.CapabilityType.WITHOUT_SIGNALLING_AND_WITHOUT_SR);
CostConstraint costConst = CostConstraint.of(COST);
+
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.igpCost(50)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.igpCost(20)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.igpCost(10)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.igpCost(10)
+ .apply();
+
List<Constraint> constraints = new LinkedList<>();
constraints.add(capabilityConst);
constraints.add(costConst);
@@ -1199,4 +1422,4 @@
UNKNOWN, UNKNOWN, UNKNOWN,
UNKNOWN, new ChassisId(), builder.build()));
}
-}
+}
\ No newline at end of file
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java
index beeabdd..06d8df6 100644
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java
+++ b/apps/pce/app/src/test/java/org/onosproject/pce/pceservice/PceManagerTest.java
@@ -15,43 +15,8 @@
*/
package org.onosproject.pce.pceservice;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.onlab.graph.GraphPathSearch.ALL_PATHS;
-import static org.onosproject.incubator.net.tunnel.Tunnel.State.ESTABLISHED;
-import static org.onosproject.incubator.net.tunnel.Tunnel.State.UNSTABLE;
-import static org.onosproject.net.MastershipRole.MASTER;
-import static org.onosproject.net.resource.Resources.continuous;
-import static org.onosproject.net.topology.AdapterLinkWeigher.adapt;
-import static org.onosproject.pce.pceservice.LspType.SR_WITHOUT_SIGNALLING;
-import static org.onosproject.pce.pceservice.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
-import static org.onosproject.pce.pceservice.LspType.WITH_SIGNALLING;
-import static org.onosproject.pce.pceservice.PathComputationTest.D1;
-import static org.onosproject.pce.pceservice.PathComputationTest.D2;
-import static org.onosproject.pce.pceservice.PathComputationTest.D3;
-import static org.onosproject.pce.pceservice.PathComputationTest.D4;
-import static org.onosproject.pce.pceservice.PathComputationTest.D5;
-import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE1;
-import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE2;
-import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE3;
-import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE4;
-import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE5;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.LOCAL_LSP_ID;
-import static org.onosproject.pce.pceservice.PcepAnnotationKeys.PLSP_ID;
-import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.COST;
-import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.TE_COST;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicLong;
-
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -82,15 +47,13 @@
import org.onosproject.net.DeviceId;
import org.onosproject.net.ElementId;
import org.onosproject.net.Link;
+import org.onosproject.net.LinkKey;
import org.onosproject.net.MastershipRole;
import org.onosproject.net.Path;
import org.onosproject.net.SparseAnnotations;
import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.intent.IntentId;
-import org.onosproject.net.intent.constraint.BandwidthConstraint;
import org.onosproject.net.link.LinkEvent;
import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.resource.Resource;
import org.onosproject.net.topology.DefaultTopologyEdge;
import org.onosproject.net.topology.DefaultTopologyVertex;
import org.onosproject.net.topology.LinkWeight;
@@ -103,16 +66,50 @@
import org.onosproject.net.topology.TopologyServiceAdapter;
import org.onosproject.net.topology.TopologyVertex;
import org.onosproject.pce.pceservice.PathComputationTest.MockNetConfigRegistryAdapter;
-import org.onosproject.pce.pceservice.PathComputationTest.MockPathResourceService;
import org.onosproject.pce.pceservice.constraint.CostConstraint;
+import org.onosproject.pce.pceservice.constraint.PceBandwidthConstraint;
import org.onosproject.pce.pcestore.api.PceStore;
import org.onosproject.pce.util.MockDeviceService;
import org.onosproject.pce.util.PceStoreAdapter;
import org.onosproject.pce.util.TunnelServiceAdapter;
import org.onosproject.pcep.api.DeviceCapability;
+import org.onosproject.pcep.api.TeLinkConfig;
import org.onosproject.store.service.TestStorageService;
-import com.google.common.collect.ImmutableSet;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Consumer;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+import static org.onlab.graph.GraphPathSearch.ALL_PATHS;
+import static org.onosproject.incubator.net.tunnel.Tunnel.State.ESTABLISHED;
+import static org.onosproject.incubator.net.tunnel.Tunnel.State.UNSTABLE;
+import static org.onosproject.net.MastershipRole.MASTER;
+import static org.onosproject.net.topology.AdapterLinkWeigher.adapt;
+import static org.onosproject.pce.pceservice.LspType.SR_WITHOUT_SIGNALLING;
+import static org.onosproject.pce.pceservice.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
+import static org.onosproject.pce.pceservice.LspType.WITH_SIGNALLING;
+import static org.onosproject.pce.pceservice.PathComputationTest.D1;
+import static org.onosproject.pce.pceservice.PathComputationTest.D2;
+import static org.onosproject.pce.pceservice.PathComputationTest.D3;
+import static org.onosproject.pce.pceservice.PathComputationTest.D4;
+import static org.onosproject.pce.pceservice.PathComputationTest.D5;
+import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE1;
+import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE2;
+import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE3;
+import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE4;
+import static org.onosproject.pce.pceservice.PathComputationTest.DEVICE5;
+import static org.onosproject.pce.pceservice.PcepAnnotationKeys.LOCAL_LSP_ID;
+import static org.onosproject.pce.pceservice.PcepAnnotationKeys.PLSP_ID;
+import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.COST;
+import static org.onosproject.pce.pceservice.constraint.CostConstraint.Type.TE_COST;
/**
* Tests the functions of PceManager.
@@ -120,8 +117,6 @@
public class PceManagerTest {
private PathComputationTest pathCompTest = new PathComputationTest();
- private MockPathResourceService resourceService =
- pathCompTest.new MockPathResourceService();
private MockTopologyService topologyService = new MockTopologyService();
private MockMastershipService mastershipService = new MockMastershipService();
private MockPathService pathService = new MockPathService();
@@ -130,9 +125,10 @@
private MockTunnelServiceAdapter tunnelService = new MockTunnelServiceAdapter();
private TestStorageService storageService = new TestStorageService();
private MockDeviceService deviceService = new MockDeviceService();
- private MockNetConfigRegistryAdapter netConfigRegistry =
- new PathComputationTest.MockNetConfigRegistryAdapter();
+ private MockNetConfigRegistryAdapter netConfigRegistry = new PathComputationTest.MockNetConfigRegistryAdapter();
private PceStore pceStore = new PceStoreAdapter();
+ private PathComputationTest.MockBandwidthMgmtService bandwidthMgmtService = new PathComputationTest
+ .MockBandwidthMgmtService();
public static ProviderId providerId = new ProviderId("pce", "foo");
private static final String L3 = "L3";
@@ -140,12 +136,12 @@
private static final String PCECC_CAPABILITY = "pceccCapability";
private static final String SR_CAPABILITY = "srCapability";
private static final String LABEL_STACK_CAPABILITY = "labelStackCapability";
- private static final String TUNNEL_NAME = "T123";
private TopologyGraph graph = null;
private Device deviceD1, deviceD2, deviceD3, deviceD4, deviceD5;
private Device pcepDeviceD1, pcepDeviceD2, pcepDeviceD3, pcepDeviceD4;
private Link link1, link2, link3, link4, link5, link6;
+ protected static int flowsDownloaded;
private TunnelListener tunnelListener;
private TopologyListener listener;
private Topology topology;
@@ -156,15 +152,16 @@
public void startUp() throws TestUtilsException {
listener = TestUtils.getField(pceManager, "topologyListener");
pceManager.pathService = pathService;
- pceManager.resourceService = resourceService;
pceManager.topologyService = topologyService;
pceManager.tunnelService = tunnelService;
pceManager.coreService = coreService;
pceManager.storageService = storageService;
pceManager.deviceService = deviceService;
pceManager.netCfgService = netConfigRegistry;
+ pceManager.netConfigRegistry = netConfigRegistry;
pceManager.pceStore = pceStore;
pceManager.mastershipService = mastershipService;
+ pceManager.bandwidthMgmtService = bandwidthMgmtService;
pceManager.activate();
}
@@ -180,9 +177,8 @@
}
}
- private void build4RouterTopo(boolean setCost, boolean setPceccCap,
- boolean setSrCap, boolean setLabelStackCap,
- int bandwidth) {
+ private void build4RouterTopo(boolean setCost, boolean setPceccCap, boolean setSrCap,
+ boolean setLabelStackCap, int bandwidth) {
link1 = PathComputationTest.addLink(DEVICE1, 10, DEVICE2, 20, setCost, 50);
link2 = PathComputationTest.addLink(DEVICE2, 30, DEVICE4, 40, setCost, 20);
link3 = PathComputationTest.addLink(DEVICE1, 80, DEVICE3, 70, setCost, 100);
@@ -190,6 +186,58 @@
link5 = PathComputationTest.addLink(DEVICE2, 60, DEVICE5, 50, setCost, 80);
link6 = PathComputationTest.addLink(DEVICE4, 60, DEVICE5, 50, setCost, 80);
+ if (setCost) {
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.igpCost(50)
+ .apply();
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.igpCost(20)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.igpCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.igpCost(80)
+ .apply();
+
+ TeLinkConfig teLinkConfig5 = netConfigRegistry.addConfig(LinkKey.linkKey(link5), TeLinkConfig.class);
+ teLinkConfig5.igpCost(80)
+ .apply();
+
+ TeLinkConfig teLinkConfig6 = netConfigRegistry.addConfig(LinkKey.linkKey(link6), TeLinkConfig.class);
+ teLinkConfig6.igpCost(80)
+ .apply();
+ } else {
+ TeLinkConfig teLinkConfig = netConfigRegistry.addConfig(LinkKey.linkKey(link1), TeLinkConfig.class);
+ teLinkConfig.teCost(50)
+ .apply();
+
+
+ TeLinkConfig teLinkConfig2 = netConfigRegistry.addConfig(LinkKey.linkKey(link2), TeLinkConfig.class);
+ teLinkConfig2.teCost(20)
+ .apply();
+
+ TeLinkConfig teLinkConfig3 = netConfigRegistry.addConfig(LinkKey.linkKey(link3), TeLinkConfig.class);
+ teLinkConfig3.teCost(100)
+ .apply();
+
+ TeLinkConfig teLinkConfig4 = netConfigRegistry.addConfig(LinkKey.linkKey(link4), TeLinkConfig.class);
+ teLinkConfig4.teCost(80)
+ .apply();
+
+ TeLinkConfig teLinkConfig5 = netConfigRegistry.addConfig(LinkKey.linkKey(link5), TeLinkConfig.class);
+ teLinkConfig5.teCost(80)
+ .apply();
+
+ TeLinkConfig teLinkConfig6 = netConfigRegistry.addConfig(LinkKey.linkKey(link6), TeLinkConfig.class);
+ teLinkConfig6.teCost(80)
+ .apply();
+ }
+
+
Set<TopologyVertex> vertexes = new HashSet<TopologyVertex>();
vertexes.add(D1);
vertexes.add(D2);
@@ -256,63 +304,71 @@
deviceService.addDevice(deviceD4);
deviceService.addDevice(deviceD5);
- mkDevCap("1.1.1.1", setLabelStackCap, setPceccCap, setSrCap);
- mkDevCap("2.2.2.2", setLabelStackCap, setPceccCap, setSrCap);
- mkDevCap("3.3.3.3", setLabelStackCap, setPceccCap, setSrCap);
- mkDevCap("4.4.4.4", setLabelStackCap, setPceccCap, setSrCap);
- mkDevCap("5.5.5.5", setLabelStackCap, setPceccCap, setSrCap);
+ DeviceCapability device1Cap = netConfigRegistry.addConfig(DeviceId.deviceId("1.1.1.1"), DeviceCapability.class);
+ device1Cap.setLabelStackCap(setLabelStackCap)
+ .setLocalLabelCap(setPceccCap)
+ .setSrCap(setSrCap)
+ .apply();
- if (bandwidth != 0) {
- List<Resource> resources = new LinkedList<>();
+ DeviceCapability device2Cap = netConfigRegistry.addConfig(DeviceId.deviceId("2.2.2.2"), DeviceCapability.class);
+ device2Cap.setLabelStackCap(setLabelStackCap)
+ .setLocalLabelCap(setPceccCap)
+ .setSrCap(setSrCap)
+ .apply();
- resources.add(continuous(link1.src().deviceId(), link1.src().port(),
- Bandwidth.class).resource(bandwidth));
- resources.add(continuous(link2.src().deviceId(), link2.src().port(),
- Bandwidth.class).resource(bandwidth));
- resources.add(continuous(link3.src().deviceId(), link3.src().port(),
- Bandwidth.class).resource(bandwidth));
- resources.add(continuous(link4.src().deviceId(), link4.src().port(),
- Bandwidth.class).resource(bandwidth));
- resources.add(continuous(link5.src().deviceId(), link5.src().port(),
- Bandwidth.class).resource(bandwidth));
+ DeviceCapability device3Cap = netConfigRegistry.addConfig(DeviceId.deviceId("3.3.3.3"), DeviceCapability.class);
+ device3Cap.setLabelStackCap(setLabelStackCap)
+ .setLocalLabelCap(setPceccCap)
+ .setSrCap(setSrCap)
+ .apply();
- resources.add(continuous(link1.dst().deviceId(), link1.dst().port(),
- Bandwidth.class).resource(bandwidth));
- resources.add(continuous(link2.dst().deviceId(), link2.dst().port(),
- Bandwidth.class).resource(bandwidth));
- resources.add(continuous(link3.dst().deviceId(), link3.dst().port(),
- Bandwidth.class).resource(bandwidth));
- resources.add(continuous(link4.dst().deviceId(), link4.dst().port(),
- Bandwidth.class).resource(bandwidth));
- resources.add(continuous(link5.dst().deviceId(), link5.dst().port(),
- Bandwidth.class).resource(bandwidth));
+ DeviceCapability device4Cap = netConfigRegistry.addConfig(DeviceId.deviceId("4.4.4.4"), DeviceCapability.class);
+ device4Cap.setLabelStackCap(setLabelStackCap)
+ .setLocalLabelCap(setPceccCap)
+ .setSrCap(setSrCap)
+ .apply();
- resourceService.allocate(IntentId.valueOf(bandwidth), resources);
- }
- }
-
- private void mkDevCap(String strDeviceId, boolean setLabelStackCap,
- boolean setPceccCap, boolean setSrCap) {
- DeviceCapability deviceCap = netConfigRegistry.addConfig(
- DeviceId.deviceId(strDeviceId), DeviceCapability.class);
- deviceCap.setLabelStackCap(setLabelStackCap)
+ DeviceCapability device5Cap = netConfigRegistry.addConfig(DeviceId.deviceId("5.5.5.5"), DeviceCapability.class);
+ device4Cap.setLabelStackCap(setLabelStackCap)
.setLocalLabelCap(setPceccCap)
.setSrCap(setSrCap)
.apply();
+
+ if (bandwidth != 0) {
+ Set<Double> unreserved = new HashSet<>();
+ unreserved.add(new Double(bandwidth));
+
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link1), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link1), new Double(0));
+
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link2), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link2), new Double(0));
+
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link3), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link3), new Double(0));
+
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link4), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link4), new Double(0));
+
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link5), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link5), new Double(0));
+
+ bandwidthMgmtService.addUnreservedBw(LinkKey.linkKey(link6), unreserved);
+ bandwidthMgmtService.allocLocalReservedBw(LinkKey.linkKey(link6), new Double(0));
+ }
}
/**
* Tests path success with (IGP) cost constraint for signalled LSP.
*/
@Test
- public void setupPathSuccessIgpCostSignalledLsp() {
+ public void setupPathTest1() {
build4RouterTopo(true, false, false, false, 0); // IGP cost is set here.
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(COST);
constraints.add(costConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
assertThat(result, is(true));
}
@@ -320,15 +376,13 @@
* Tests path failure with (IGP) cost constraint for signalled LSP.
*/
@Test
- public void setupPathFailureIgpCostSignalledLsp() {
- // TE cost is set here, not IGP.
- build4RouterTopo(false, false, false, false, 0);
- List<Constraint> constraints = new LinkedList<>();
+ public void setupPathTest2() {
+ build4RouterTopo(false, false, false, false, 0); // TE cost is set here, not IGP.
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(COST);
constraints.add(costConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
assertThat(result, is(false));
}
@@ -336,16 +390,14 @@
* Tests path success with TE-cost constraint for signalled LSP.
*/
@Test
- public void setupPathSuccessTeCostSignalledLsp() {
- // TE cost is set here.
- build4RouterTopo(false, false, false, false, 0);
+ public void setupPathTest3() {
+ build4RouterTopo(false, false, false, false, 0); // TE cost is set here.
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
assertThat(result, is(true));
}
@@ -353,16 +405,14 @@
* Tests path failure with TE-cost constraint for signalled LSP.
*/
@Test
- public void setupPathFailureTeCostSignalledLsp() {
- // IGP cost is set here, not TE.
- build4RouterTopo(true, false, false, false, 0);
+ public void setupPathTest4() {
+ build4RouterTopo(true, false, false, false, 0); // IGP cost is set here, not TE.
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
assertThat(result, is(false));
}
@@ -370,16 +420,15 @@
* Tests path success with (IGP) cost constraint for non-SR non-signalled LSP.
*/
@Test
- public void setupPathSuccessIgpCostNonSignalledLsp() {
+ public void setupPathTest5() {
build4RouterTopo(true, true, false, false, 0);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(COST);
constraints.add(costConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, WITHOUT_SIGNALLING_AND_WITHOUT_SR,
- null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
+ WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
assertThat(result, is(true));
}
@@ -387,34 +436,31 @@
* Tests path success with TE-cost constraint for non-SR non-sgnalled LSP.
*/
@Test
- public void setupPathSuccessTeCostNonSignalledLsp() {
+ public void setupPathTest6() {
build4RouterTopo(false, true, false, false, 0);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, WITHOUT_SIGNALLING_AND_WITHOUT_SR,
- null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
+ WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
assertThat(result, is(true));
}
/**
- * Tests path failure with TE-cost constraint for non-SR
- * non-signalled LSP(CR). Label capability not registered.
+ * Tests path failure with TE-cost constraint for non-SR non-signalled LSP(CR). Label capability not registered.
*/
@Test
- public void setupPathFailureTeCostNonSignalledLsp() {
+ public void setupPathTest7() {
build4RouterTopo(true, false, false, false, 0);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, WITHOUT_SIGNALLING_AND_WITHOUT_SR,
- null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
+ WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
assertThat(result, is(false));
}
@@ -422,18 +468,18 @@
* Tests path failure as bandwidth is requested but is not registered.
*/
@Test
- public void setupPathFailureBandwidthNotRegistered() {
- build4RouterTopo(true, false, false, false, 0);
+ public void setupPathTest8() {
+ build4RouterTopo(true, false, false, false, 2);
+
List<Constraint> constraints = new LinkedList<>();
- BandwidthConstraint bwConstraint = new BandwidthConstraint(
- Bandwidth.bps(10.0));
+ PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
constraints.add(bwConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
+ WITH_SIGNALLING, null);
assertThat(result, is(false));
}
@@ -441,34 +487,32 @@
* Tests path failure as bandwidth requested is more than registered.
*/
@Test
- public void setupPathFailureNotEnoughBandwidthRegistered() {
+ public void setupPathTest9() {
build4RouterTopo(false, false, false, false, 5);
- List<Constraint> constraints = new LinkedList<>();
- BandwidthConstraint bwConstraint = new BandwidthConstraint(
- Bandwidth.bps(10.0));
+ List<Constraint> constraints = new LinkedList<Constraint>();
+ PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
constraints.add(bwConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
assertThat(result, is(false));
}
/**
- * Tests path setup failure(without signalling). Label capability is not
- * present.
+ * Tests path setup failure(without signalling). Label capability is not present.
*/
@Test
- public void setupPathFailureNoLabelCapability() {
+ public void setupPathTest10() {
build4RouterTopo(false, false, false, false, 0);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, SR_WITHOUT_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints,
+ SR_WITHOUT_SIGNALLING, null);
assertThat(result, is(false));
}
@@ -476,18 +520,17 @@
* Tests path setup without signalling and with bandwidth reservation.
*/
@Test
- public void setupPathSuccessWithoutSignalling() {
+ public void setupPathTest12() {
build4RouterTopo(false, true, true, true, 15);
- List<Constraint> constraints = new LinkedList<>();
- BandwidthConstraint bwConstraint = new BandwidthConstraint(
- Bandwidth.bps(10.0));
+ List<Constraint> constraints = new LinkedList<Constraint>();
+ PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
constraints.add(bwConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, SR_WITHOUT_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
+ constraints, SR_WITHOUT_SIGNALLING, null);
assertThat(result, is(true));
}
@@ -495,28 +538,26 @@
* Tests path setup without cost/bandwidth constraints.
*/
@Test
- public void setupPathSuccessWithoutConstraints() {
+ public void setupPathTest13() {
build4RouterTopo(false, false, false, false, 0);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, null, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", null, WITH_SIGNALLING, null);
assertThat(result, is(true));
}
/**
* Tests path setup with explicit path with loose node D2.
*/
- @Test
- public void setupPathExplicitPathInfoLooseD2() {
+ @Test
+ public void setupPathTest14() {
build4RouterTopo(false, false, false, false, 0);
List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
- ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE,
- D2.deviceId());
+ ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId());
explicitPathInfoList.add(obj);
- boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(),
- TUNNEL_NAME, null, WITH_SIGNALLING, explicitPathInfoList);
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123", null, WITH_SIGNALLING,
+ explicitPathInfoList);
Tunnel tunnel = pceManager.queryAllPath().iterator().next();
List<Link> links = new LinkedList<>();
@@ -530,141 +571,134 @@
/**
* Tests path setup with explicit path with loose node D3.
*/
- @Test
- public void setupPathExplicitPathInfoLooseD3() {
- build4RouterTopo(false, false, false, false, 0);
+ @Test
+ public void setupPathTest15() {
+ build4RouterTopo(false, false, false, false, 0);
- List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
- ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE,
- D3.deviceId());
- explicitPathInfoList.add(obj);
+ List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
+ ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D3.deviceId());
+ explicitPathInfoList.add(obj);
- boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(),
- TUNNEL_NAME, null, WITH_SIGNALLING, explicitPathInfoList);
+ boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
+ explicitPathInfoList);
- Tunnel tunnel = pceManager.queryAllPath().iterator().next();
- List<Link> links = new LinkedList<>();
- links.add(link3);
- links.add(link4);
- links.add(link6);
+ Tunnel tunnel = pceManager.queryAllPath().iterator().next();
+ List<Link> links = new LinkedList<>();
+ links.add(link3);
+ links.add(link4);
+ links.add(link6);
- assertThat(result, is(true));
- assertThat(tunnel.path().links().equals(links), is(true));
- }
+ assertThat(result, is(true));
+ assertThat(tunnel.path().links().equals(links), is(true));
+ }
/**
* Tests path setup with explicit path with loose node D4 , D3 - path fails.
*/
- @Test
- public void setupPathExplicitPathInfoFail() {
- build4RouterTopo(false, false, false, false, 0);
+ @Test
+ public void setupPathTest16() {
+ build4RouterTopo(false, false, false, false, 0);
- List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
- ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE,
- D4.deviceId());
- explicitPathInfoList.add(obj);
- obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D3.deviceId());
- explicitPathInfoList.add(obj);
+ List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
+ ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D4.deviceId());
+ explicitPathInfoList.add(obj);
+ obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D3.deviceId());
+ explicitPathInfoList.add(obj);
- boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(),
- TUNNEL_NAME, null, WITH_SIGNALLING, explicitPathInfoList);
+ boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
+ explicitPathInfoList);
- assertThat(result, is(false));
- }
+ assertThat(result, is(false));
+ }
/**
- * Tests path setup with explicit path with strict node D2 - without reacble
- * to src - path fails.
+ * Tests path setup with explicit path with strict node D2 - without reacble to src - path fails.
*/
- @Test
- public void setupPathExplicitPathInfoStrictD2Fail() {
- build4RouterTopo(false, false, false, false, 0);
+ @Test
+ public void setupPathTest17() {
+ build4RouterTopo(false, false, false, false, 0);
- List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
- ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT,
- D2.deviceId());
- explicitPathInfoList.add(obj);
+ List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
+ ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
+ explicitPathInfoList.add(obj);
- boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(),
- TUNNEL_NAME, null, WITH_SIGNALLING, explicitPathInfoList);
+ boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
+ explicitPathInfoList);
- assertThat(result, is(false));
- }
+ assertThat(result, is(false));
+ }
/**
* Tests path setup with explicit path with loose node D2, strict D2.
*/
- @Test
- public void setupPathExplicitPathInfoLooseAndStrictD2() {
- build4RouterTopo(false, false, false, false, 0);
+ @Test
+ public void setupPathTest18() {
+ build4RouterTopo(false, false, false, false, 0);
- List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
- ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE,
- D2.deviceId());
- explicitPathInfoList.add(obj);
- obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
- explicitPathInfoList.add(obj);
+ List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
+ ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, D2.deviceId());
+ explicitPathInfoList.add(obj);
+ obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
+ explicitPathInfoList.add(obj);
- boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(),
- TUNNEL_NAME, null, WITH_SIGNALLING, explicitPathInfoList);
+ boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
+ explicitPathInfoList);
- Tunnel tunnel = pceManager.queryAllPath().iterator().next();
- List<Link> links = new LinkedList<>();
- links.add(link1);
- links.add(link5);
+ Tunnel tunnel = pceManager.queryAllPath().iterator().next();
+ List<Link> links = new LinkedList<>();
+ links.add(link1);
+ links.add(link5);
- assertThat(result, is(true));
- assertThat(tunnel.path().links().equals(links), is(true));
- }
+ assertThat(result, is(true));
+ assertThat(tunnel.path().links().equals(links), is(true));
+ }
/**
* Tests path setup with explicit path with loose D1-D2, strict D2.
*/
- @Test
- public void setupPathExplicitPathInfoLooseLink1StrictD2() {
- build4RouterTopo(false, false, false, false, 0);
+ @Test
+ public void setupPathTest19() {
+ build4RouterTopo(false, false, false, false, 0);
- List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
- ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE,
- link1);
- explicitPathInfoList.add(obj);
- obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
- explicitPathInfoList.add(obj);
+ List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
+ ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1);
+ explicitPathInfoList.add(obj);
+ obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
+ explicitPathInfoList.add(obj);
- boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(),
- TUNNEL_NAME, null, WITH_SIGNALLING, explicitPathInfoList);
+ boolean result = pceManager.setupPath(D1.deviceId(), D5.deviceId(), "T123", null, WITH_SIGNALLING,
+ explicitPathInfoList);
- Tunnel tunnel = pceManager.queryAllPath().iterator().next();
- List<Link> links = new LinkedList<>();
- links.add(link1);
- links.add(link5);
+ Tunnel tunnel = pceManager.queryAllPath().iterator().next();
+ List<Link> links = new LinkedList<>();
+ links.add(link1);
+ links.add(link5);
- assertThat(result, is(true));
- assertThat(tunnel.path().links().equals(links), is(true));
- }
+ assertThat(result, is(true));
+ assertThat(tunnel.path().links().equals(links), is(true));
+ }
/**
* Tests path update with increase in bandwidth.
*/
@Test
- public void updatePathIncreaseBandwidth() {
+ public void updatePathTest1() {
build4RouterTopo(false, true, true, true, 100);
// Setup tunnel.
List<Constraint> constraints = new LinkedList<>();
- BandwidthConstraint bwConstraint = new BandwidthConstraint(
- Bandwidth.bps(60.0));
+ PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(60.0));
constraints.add(bwConstraint);
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
assertThat(result, is(true));
// Change constraint and update it.
constraints = new LinkedList<>();
- bwConstraint = new BandwidthConstraint(Bandwidth.bps(50.0));
+ bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(50.0));
constraints.add(bwConstraint);
constraints.add(costConstraint);
@@ -687,24 +721,23 @@
* Tests path update with decrease in bandwidth.
*/
@Test
- public void updatePathDecreaseBandwidth() {
+ public void updatePathTest2() {
build4RouterTopo(false, true, true, true, 100);
// Setup tunnel.
- List<Constraint> constraints = new LinkedList<>();
- BandwidthConstraint bwConstraint = new BandwidthConstraint(
- Bandwidth.bps(60.0));
+ List<Constraint> constraints = new LinkedList<Constraint>();
+ PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(60.0));
constraints.add(bwConstraint);
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, SR_WITHOUT_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
+ constraints, SR_WITHOUT_SIGNALLING, null);
assertThat(result, is(true));
// Change constraint and update it.
constraints.remove(bwConstraint);
- bwConstraint = new BandwidthConstraint(Bandwidth.bps(70.0));
+ bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(70.0));
constraints.add(bwConstraint);
Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
@@ -723,15 +756,15 @@
* Tests path update without cost/bandwidth constraints.
*/
@Test
- public void updatePathWithoutConstraints() {
+ public void updatePathTest3() {
build4RouterTopo(false, true, true, true, 100);
// Setup tunnel.
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
- boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
assertThat(result, is(true));
Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
@@ -743,40 +776,36 @@
}
Iterable<Tunnel> queryTunnelResult = pceManager.queryAllPath();
- assertThat((int) queryTunnelResult.spliterator().getExactSizeIfKnown(),
- is(2));
+ assertThat((int) queryTunnelResult.spliterator().getExactSizeIfKnown(), is(2));
}
/**
- * Tests path update without cost/bandwidth constraints and with explicit
- * path object.
+ * Tests path update without cost/bandwidth constraints and with explicit path object.
*/
@Test
- public void updatePathExplicitPathInfo() {
+ public void updatePathTest4() {
build4RouterTopo(false, true, true, true, 100);
// Setup tunnel.
List<Constraint> constraints = new LinkedList<>();
- BandwidthConstraint bwConstraint = new BandwidthConstraint(
- Bandwidth.bps(60.0));
+ PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(60.0));
constraints.add(bwConstraint);
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
- ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE,
- link1);
+ ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1);
explicitPathInfoList.add(obj);
obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
explicitPathInfoList.add(obj);
- boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, explicitPathInfoList);
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, explicitPathInfoList);
assertThat(result, is(true));
// Change constraint and update it.
constraints = new LinkedList<>();
- bwConstraint = new BandwidthConstraint(Bandwidth.bps(50.0));
+ bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(50.0));
constraints.add(bwConstraint);
constraints.add(costConstraint);
@@ -796,14 +825,14 @@
}
/**
- * Tests path release with explicit info.
+ * Tests path release.
*/
@Test
- public void releasePathExplicitPathInfo() {
+ public void releasePathTest1() {
build4RouterTopo(false, false, false, false, 5);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(TE_COST);
- BandwidthConstraint bwConst = new BandwidthConstraint(Bandwidth.bps(3));
+ PceBandwidthConstraint bwConst = new PceBandwidthConstraint(Bandwidth.bps(3));
constraints.add(bwConst);
constraints.add(costConstraint);
@@ -813,8 +842,7 @@
obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
explicitPathInfoList.add(obj);
- pceManager.setupPath(D1.deviceId(), D2.deviceId(), TUNNEL_NAME,
- constraints, WITH_SIGNALLING, explicitPathInfoList);
+ pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, explicitPathInfoList);
Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
assertThat(tunnels.size(), is(1));
@@ -831,14 +859,13 @@
* Tests path release failure.
*/
@Test
- public void releasePathFailure() {
+ public void releasePathTest2() {
build4RouterTopo(false, false, false, false, 5);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
- pceManager.setupPath(D1.deviceId(), D2.deviceId(), TUNNEL_NAME,
- constraints, WITH_SIGNALLING, null);
+ pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
assertThat(tunnels.size(), is(1));
@@ -852,19 +879,18 @@
}
/**
- * Tests path release.
+ * Tests path release failure.
*/
@Test
- public void releasePath() {
+ public void releasePathTest3() {
build4RouterTopo(false, false, false, false, 5);
List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(TE_COST);
- BandwidthConstraint bwConst = new BandwidthConstraint(Bandwidth.bps(3));
+ PceBandwidthConstraint bwConst = new PceBandwidthConstraint(Bandwidth.bps(3));
constraints.add(bwConst);
constraints.add(costConstraint);
- pceManager.setupPath(D1.deviceId(), D2.deviceId(), TUNNEL_NAME,
- constraints, WITH_SIGNALLING, null);
+ pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T123", constraints, WITH_SIGNALLING, null);
Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
assertThat(tunnels.size(), is(1));
@@ -881,53 +907,49 @@
* Tests tunnel events added and removed.
*/
@Test
- public void tunnelEventAddedRemoved() {
+ public void tunnelEventTest1() {
build4RouterTopo(false, true, true, true, 15);
- List<Constraint> constraints = new LinkedList<>();
- BandwidthConstraint bwConstraint = new BandwidthConstraint(
- Bandwidth.bps(10.0));
+ List<Constraint> constraints = new LinkedList<Constraint>();
+ PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
constraints.add(bwConstraint);
- pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T1", constraints,
+ boolean isSuccess = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T1", constraints,
SR_WITHOUT_SIGNALLING, null);
- assertThat(pceStore.getTunnelInfoCount(), is(1));
+ assertThat(isSuccess, is(true));
Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
for (Tunnel tunnel : tunnels) {
- TunnelEvent event = new TunnelEvent(TunnelEvent.Type.TUNNEL_ADDED,
- tunnel);
+ TunnelEvent event = new TunnelEvent(TunnelEvent.Type.TUNNEL_ADDED, tunnel);
tunnelListener.event(event);
- pceManager.releasePath(tunnel.tunnelId());
+ isSuccess = pceManager.releasePath(tunnel.tunnelId());
+ assertThat(isSuccess, is(true));
event = new TunnelEvent(TunnelEvent.Type.TUNNEL_REMOVED, tunnel);
tunnelListener.event(event);
}
-
- assertThat(pceStore.getTunnelInfoCount(), is(0));
}
/**
* Tests label allocation/removal in CR case based on tunnel event.
*/
@Test
- public void labelAllocationRemoval() {
+ public void tunnelEventTest2() {
build4RouterTopo(false, true, true, true, 15);
- List<Constraint> constraints = new LinkedList<>();
- BandwidthConstraint bwConstraint = new BandwidthConstraint(
- Bandwidth.bps(10.0));
+ List<Constraint> constraints = new LinkedList<Constraint>();
+ PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
constraints.add(bwConstraint);
- pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints,
+ boolean isSuccess = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints,
WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
- assertThat(pceStore.getTunnelInfoCount(), is(1));
+ assertThat(isSuccess, is(true));
TunnelEvent event;
Collection<Tunnel> tunnels = (Collection<Tunnel>) pceManager.queryAllPath();
@@ -944,32 +966,30 @@
event = new TunnelEvent(TunnelEvent.Type.TUNNEL_UPDATED, tunnel);
tunnelListener.event(event);
- pceManager.releasePath(tunnel.tunnelId());
+ isSuccess = pceManager.releasePath(tunnel.tunnelId());
+ assertThat(isSuccess, is(true));
event = new TunnelEvent(TunnelEvent.Type.TUNNEL_REMOVED, tunnel);
tunnelListener.event(event);
}
-
- assertThat(pceStore.getTunnelInfoCount(), is(0));
}
/**
* Tests handling UNSTABLE state based on tunnel event.
*/
@Test
- public void tunnelEventUnstable() {
+ public void tunnelEventTest3() {
build4RouterTopo(false, true, true, true, 15);
- List<Constraint> constraints = new LinkedList<>();
- BandwidthConstraint bwConstraint = new BandwidthConstraint(
- Bandwidth.bps(10.0));
+ List<Constraint> constraints = new LinkedList<Constraint>();
+ PceBandwidthConstraint bwConstraint = new PceBandwidthConstraint(Bandwidth.bps(10.0));
CostConstraint costConstraint = new CostConstraint(TE_COST);
constraints.add(costConstraint);
constraints.add(bwConstraint);
- pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints,
+ boolean isSuccess = pceManager.setupPath(D1.deviceId(), D2.deviceId(), "T2", constraints,
WITHOUT_SIGNALLING_AND_WITHOUT_SR, null);
- assertThat(pceStore.getTunnelInfoCount(), is(1));
+ assertThat(isSuccess, is(true));
assertThat(pceStore.getFailedPathInfoCount(), is(0));
TunnelEvent event;
@@ -987,35 +1007,32 @@
event = new TunnelEvent(TunnelEvent.Type.TUNNEL_UPDATED, tunnel);
tunnelListener.event(event);
}
- assertThat(pceStore.getTunnelInfoCount(), is(1));
+
assertThat(pceStore.getFailedPathInfoCount(), is(1));
}
/**
- * Tests resiliency when L2 link is down.
+ * Tests resilency when L2 link is down.
*/
@Test
- public void resiliencyLinkFail() {
+ public void resilencyTest1() {
build4RouterTopo(true, false, false, false, 10);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(COST);
constraints.add(costConstraint);
- BandwidthConstraint localBwConst = new BandwidthConstraint(
- Bandwidth.bps(10));
+ PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
constraints.add(localBwConst);
//Setup the path , tunnel created
- boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
assertThat(result, is(true));
- assertThat(pceStore.getTunnelInfoCount(), is(1));
assertThat(pceStore.getFailedPathInfoCount(), is(0));
List<Event> reasons = new LinkedList<>();
- final LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED,
- link2);
+ final LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
reasons.add(linkEvent);
final TopologyEvent event = new TopologyEvent(
TopologyEvent.Type.TOPOLOGY_CHANGED,
@@ -1025,7 +1042,7 @@
//Change Topology : remove link2
Set<TopologyEdge> tempEdges = new HashSet<>();
tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
- topologyService.changeInTopology(getGraph(null, tempEdges));
+ topologyService.changeInTopology(getGraph(null, tempEdges));
listener.event(event);
List<Link> links = new LinkedList<>();
@@ -1038,22 +1055,21 @@
}
/**
- * Tests resiliency when L2 and L4 link is down.
+ * Tests resilency when L2 and L4 link is down.
*/
@Test
- public void resiliencyMultipleLinkFailsNoAlternativePath() {
+ public void resilencyTest2() {
build4RouterTopo(true, false, false, false, 10);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(COST);
constraints.add(costConstraint);
- BandwidthConstraint localBwConst = new BandwidthConstraint(
- Bandwidth.bps(10));
+ PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
constraints.add(localBwConst);
//Setup the path , tunnel created
- boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
assertThat(result, is(true));
List<Event> reasons = new LinkedList<>();
@@ -1070,7 +1086,7 @@
Set<TopologyEdge> tempEdges = new HashSet<>();
tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
tempEdges.add(new DefaultTopologyEdge(D3, D4, link4));
- topologyService.changeInTopology(getGraph(null, tempEdges));
+ topologyService.changeInTopology(getGraph(null, tempEdges));
listener.event(event);
//No Path
@@ -1078,22 +1094,21 @@
}
/**
- * Tests resiliency when D2 device is down.
+ * Tests resilency when D2 device is down.
*/
@Test
- public void resiliencyDeviceFail() {
+ public void resilencyTest3() {
build4RouterTopo(true, false, false, false, 10);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(COST);
constraints.add(costConstraint);
- BandwidthConstraint localBwConst = new BandwidthConstraint(
- Bandwidth.bps(10));
+ PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
constraints.add(localBwConst);
//Setup the path , tunnel created
- boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
assertThat(result, is(true));
List<Event> reasons = new LinkedList<>();
@@ -1110,35 +1125,35 @@
Set<TopologyEdge> tempEdges = new HashSet<>();
tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
tempEdges.add(new DefaultTopologyEdge(D1, D2, link1));
- topologyService.changeInTopology(getGraph(null, tempEdges));
+ topologyService.changeInTopology(getGraph(null, tempEdges));
listener.event(event);
List<Link> links = new LinkedList<>();
links.add(link3);
links.add(link4);
+ Path path = tunnelService.queryAllTunnels().iterator().next().path();
//Path is D1-D3-D4
- assertThat(pathService.paths().iterator().next().links(), is(links));
- assertThat(pathService.paths().iterator().next().cost(), is((double) 180));
+ assertThat(path.links(), is(links));
+ assertThat(path.cost(), is((double) 180));
}
/**
- * Tests resiliency when ingress device is down.
+ * Tests resilency when ingress device is down.
*/
@Test
- public void resiliencyIngressDeviceFail() {
+ public void resilencyTest4() {
build4RouterTopo(true, false, false, false, 10);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(COST);
constraints.add(costConstraint);
- BandwidthConstraint localBwConst = new BandwidthConstraint(
- Bandwidth.bps(10));
+ PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
constraints.add(localBwConst);
//Setup the path , tunnel created
- boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
assertThat(result, is(true));
List<Event> reasons = new LinkedList<>();
@@ -1163,22 +1178,21 @@
}
/**
- * Tests resiliency when D2 and D3 devices are down.
+ * Tests resilency when D2 and D3 devices are down.
*/
@Test
- public void resiliencyMultipleDevicesFailNoAlternativePath() {
+ public void resilencyTest5() {
build4RouterTopo(true, false, false, false, 10);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(COST);
constraints.add(costConstraint);
- BandwidthConstraint localBwConst = new BandwidthConstraint(
- Bandwidth.bps(10));
+ PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
constraints.add(localBwConst);
//Setup the path , tunnel created
- boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
assertThat(result, is(true));
List<Event> reasons = new LinkedList<>();
@@ -1213,22 +1227,21 @@
}
/**
- * Tests resiliency when egress device is down.
+ * Tests resilency when egress device is down.
*/
@Test
- public void resiliencyEgressDeviceFail() {
+ public void resilencyTest6() {
build4RouterTopo(true, false, false, false, 10);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(COST);
constraints.add(costConstraint);
- BandwidthConstraint localBwConst = new BandwidthConstraint(
- Bandwidth.bps(10));
+ PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
constraints.add(localBwConst);
//Setup the path , tunnel created
- boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
assertThat(result, is(true));
List<Event> reasons = new LinkedList<>();
@@ -1256,22 +1269,63 @@
}
/**
- * Tests resiliency when D2 device is suspended.
+ * Tests resilency when egress device is down.
*/
@Test
- public void resiliencyDeviceSuspended() {
+ public void resilencyTest7() {
build4RouterTopo(true, false, false, false, 10);
- List<Constraint> constraints = new LinkedList<>();
+ List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(COST);
constraints.add(costConstraint);
- BandwidthConstraint localBwConst = new BandwidthConstraint(
- Bandwidth.bps(10));
+ PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
constraints.add(localBwConst);
//Setup the path , tunnel created
- boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, null);
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
+ assertThat(result, is(true));
+
+ List<Event> reasons = new LinkedList<>();
+ LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
+ reasons.add(linkEvent);
+ linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link4);
+ reasons.add(linkEvent);
+
+ final TopologyEvent event = new TopologyEvent(
+ TopologyEvent.Type.TOPOLOGY_CHANGED,
+ topology,
+ reasons);
+
+ //Change Topology : remove device4 , link2 and link4
+ Set<TopologyEdge> tempEdges = new HashSet<>();
+ tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
+ tempEdges.add(new DefaultTopologyEdge(D3, D4, link4));
+ Set<TopologyVertex> tempVertexes = new HashSet<>();
+ tempVertexes.add(D4);
+ topologyService.changeInTopology(getGraph(tempVertexes, tempEdges));
+ listener.event(event);
+
+ //No path
+ assertThat(pathService.paths().size(), is(0));
+ }
+
+ /**
+ * Tests resilency when D2 device is suspended.
+ */
+ @Test
+ public void resilencyTest8() {
+ build4RouterTopo(true, false, false, false, 10);
+
+ List<Constraint> constraints = new LinkedList<Constraint>();
+ CostConstraint costConstraint = new CostConstraint(COST);
+ constraints.add(costConstraint);
+ PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
+ constraints.add(localBwConst);
+
+ //Setup the path , tunnel created
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
assertThat(result, is(true));
List<Event> reasons = new LinkedList<>();
@@ -1298,42 +1352,89 @@
links.add(link3);
links.add(link4);
+ Path path = tunnelService.queryAllTunnels().iterator().next().path();
+
//Path is D1-D3-D4
- assertThat(pathService.paths().iterator().next().links(), is(links));
- assertThat(pathService.paths().iterator().next().cost(), is((double) 180));
+ assertThat(path.links(), is(links));
+ assertThat(path.cost(), is((double) 180));
+ }
+
+ /**
+ * Tests resilency when D2 device availability is changed.
+ */
+ @Test
+ public void resilencyTest11() {
+ build4RouterTopo(true, false, false, false, 10);
+
+ List<Constraint> constraints = new LinkedList<Constraint>();
+ CostConstraint costConstraint = new CostConstraint(COST);
+ constraints.add(costConstraint);
+ PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
+ constraints.add(localBwConst);
+
+ //Setup the path , tunnel created
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, null);
+ assertThat(result, is(true));
+
+ List<Event> reasons = new LinkedList<>();
+ LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link1);
+ reasons.add(linkEvent);
+ linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
+ reasons.add(linkEvent);
+
+ final TopologyEvent event = new TopologyEvent(
+ TopologyEvent.Type.TOPOLOGY_CHANGED,
+ topology,
+ reasons);
+
+ //Change Topology : remove device2 , link1 and link2
+ Set<TopologyEdge> tempEdges = new HashSet<>();
+ tempEdges.add(new DefaultTopologyEdge(D1, D2, link1));
+ tempEdges.add(new DefaultTopologyEdge(D2, D4, link2));
+ Set<TopologyVertex> tempVertexes = new HashSet<>();
+ tempVertexes.add(D2);
+ topologyService.changeInTopology(getGraph(tempVertexes, tempEdges));
+ listener.event(event);
+
+ List<Link> links = new LinkedList<>();
+ links.add(link3);
+ links.add(link4);
+
+ Path path = tunnelService.queryAllTunnels().iterator().next().path();
+
+ //Path is D1-D3-D4
+ assertThat(path.links(), is(links));
+ assertThat(path.cost(), is((double) 180));
}
/**
* Tests resilency when link2 availability is changed.
*/
@Test
- public void resilencyExplicitPathInfoSpecified() {
+ public void resilencyTest12() {
build4RouterTopo(true, false, false, false, 10);
List<Constraint> constraints = new LinkedList<Constraint>();
CostConstraint costConstraint = new CostConstraint(COST);
constraints.add(costConstraint);
- BandwidthConstraint localBwConst = new BandwidthConstraint(
- Bandwidth.bps(10));
+ PceBandwidthConstraint localBwConst = new PceBandwidthConstraint(Bandwidth.bps(10));
constraints.add(localBwConst);
List<ExplicitPathInfo> explicitPathInfoList = Lists.newLinkedList();
- ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE,
- link1);
+ ExplicitPathInfo obj = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, link1);
explicitPathInfoList.add(obj);
obj = new ExplicitPathInfo(ExplicitPathInfo.Type.STRICT, D2.deviceId());
explicitPathInfoList.add(obj);
//Setup the path , tunnel created
- boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(),
- TUNNEL_NAME, constraints, WITH_SIGNALLING, explicitPathInfoList);
+ boolean result = pceManager.setupPath(D1.deviceId(), D4.deviceId(), "T123",
+ constraints, WITH_SIGNALLING, explicitPathInfoList);
assertThat(result, is(true));
- assertThat(pceStore.getTunnelInfoCount(), is(1));
assertThat(pceStore.getFailedPathInfoCount(), is(0));
List<Event> reasons = new LinkedList<>();
- final LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED,
- link2);
+ final LinkEvent linkEvent = new LinkEvent(LinkEvent.Type.LINK_REMOVED, link2);
reasons.add(linkEvent);
final TopologyEvent event = new TopologyEvent(
TopologyEvent.Type.TOPOLOGY_CHANGED,
@@ -1358,7 +1459,6 @@
public void tearDown() {
pceManager.deactivate();
pceManager.pathService = null;
- pceManager.resourceService = null;
pceManager.tunnelService = null;
pceManager.coreService = null;
pceManager.storageService = null;
@@ -1367,6 +1467,7 @@
pceManager.pceStore = null;
pceManager.topologyService = null;
pceManager.mastershipService = null;
+ flowsDownloaded = 0;
}
private class MockTopologyService extends TopologyServiceAdapter {
@@ -1375,8 +1476,7 @@
}
@Override
- public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst,
- LinkWeight weight) {
+ public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst, LinkWeight weight) {
DefaultTopologyVertex srcV = new DefaultTopologyVertex(src);
DefaultTopologyVertex dstV = new DefaultTopologyVertex(dst);
Set<TopologyVertex> vertices = graph.getVertexes();
@@ -1385,9 +1485,8 @@
return ImmutableSet.of();
}
- GraphPathSearch.Result<TopologyVertex, TopologyEdge> result =
- PathComputationTest.graphSearch()
- .search(graph, srcV, dstV, adapt(weight), ALL_PATHS);
+ GraphPathSearch.Result<TopologyVertex, TopologyEdge> result = PathComputationTest.graphSearch()
+ .search(graph, srcV, dstV, adapt(weight), ALL_PATHS);
ImmutableSet.Builder<Path> builder = ImmutableSet.builder();
for (org.onlab.graph.Path<TopologyVertex, TopologyEdge> path : result.paths()) {
builder.add(PathComputationTest.networkPath(path));
@@ -1396,14 +1495,24 @@
}
}
- private TopologyGraph getGraph(Set<TopologyVertex> removedVertex,
- Set<TopologyEdge> removedEdges) {
+ private TopologyGraph getGraph(Set<TopologyVertex> removedVertex, Set<TopologyEdge> removedEdges) {
if (removedVertex != null) {
- removedVertex.forEach(vertexes::remove);
+ vertexes.remove(removedVertex);
+ removedVertex.forEach(new Consumer<TopologyVertex>() {
+ @Override
+ public void accept(TopologyVertex v) {
+ vertexes.remove(v);
+ }
+ });
}
if (removedEdges != null) {
- removedEdges.forEach(edges::remove);
+ removedEdges.forEach(new Consumer<TopologyEdge>() {
+ @Override
+ public void accept(TopologyEdge e) {
+ edges.remove(e);
+ }
+ });
}
return new DefaultTopologyGraph(vertexes, edges);
@@ -1420,8 +1529,7 @@
// Otherwise get all paths between the source and destination edge
// devices.
- computedPaths = topologyService.getPaths(null, (DeviceId) src,
- (DeviceId) dst, weight);
+ computedPaths = topologyService.getPaths(null, (DeviceId) src, (DeviceId) dst, weight);
return computedPaths;
}
@@ -1431,18 +1539,15 @@
}
private class MockTunnelServiceAdapter extends TunnelServiceAdapter {
- private HashMap<TunnelId, Tunnel> tunnelIdAsKeyStore = new HashMap<>();
+ private HashMap<TunnelId, Tunnel> tunnelIdAsKeyStore = new HashMap<TunnelId, Tunnel>();
private int tunnelIdCounter = 0;
@Override
- public TunnelId setupTunnel(ApplicationId producerId,
- ElementId srcElementId,
- Tunnel tunnel, Path path) {
+ public TunnelId setupTunnel(ApplicationId producerId, ElementId srcElementId, Tunnel tunnel, Path path) {
TunnelId tunnelId = TunnelId.valueOf(String.valueOf(++tunnelIdCounter));
- Tunnel tunnelToInsert = new DefaultTunnel(tunnel.providerId(),
- tunnel.src(), tunnel.dst(), tunnel.type(),
- tunnel.state(), tunnel.groupId(), tunnelId,
- tunnel.tunnelName(), path, tunnel.annotations());
+ Tunnel tunnelToInsert = new DefaultTunnel(tunnel.providerId(), tunnel.src(), tunnel.dst(), tunnel.type(),
+ tunnel.state(), tunnel.groupId(), tunnelId, tunnel.tunnelName(),
+ path, tunnel.annotations());
tunnelIdAsKeyStore.put(tunnelId, tunnelToInsert);
return tunnelId;
}
@@ -1453,33 +1558,28 @@
}
/**
- * Stimulates the effect of receiving PLSP id and LSP id from protocol
- * PCRpt msg.
+ * Stimulates the effect of receiving PLSP id and LSP id from protocol PCRpt msg.
*/
- public TunnelId updateTunnelWithLspIds(Tunnel tunnel, String pLspId,
- String localLspId, State state) {
+ public TunnelId updateTunnelWithLspIds(Tunnel tunnel, String pLspId, String localLspId, State state) {
TunnelId tunnelId = tunnel.tunnelId();
Builder annotationBuilder = DefaultAnnotations.builder();
annotationBuilder.putAll(tunnel.annotations());
- // PCRpt in response to PCInitate msg will carry PLSP id allocated
- // by PCC.
+ // PCRpt in response to PCInitate msg will carry PLSP id allocated by PCC.
if (tunnel.annotations().value(PLSP_ID) == null) {
annotationBuilder.set(PLSP_ID, pLspId);
}
- // Signalled LSPs will carry local LSP id allocated by signalling
- // protocol(PCC).
+ // Signalled LSPs will carry local LSP id allocated by signalling protocol(PCC).
if (tunnel.annotations().value(LOCAL_LSP_ID) == null) {
annotationBuilder.set(LOCAL_LSP_ID, localLspId);
}
SparseAnnotations annotations = annotationBuilder.build();
tunnelIdAsKeyStore.remove(tunnelId, tunnel);
- Tunnel tunnelToInsert = new DefaultTunnel(tunnel.providerId(),
- tunnel.src(), tunnel.dst(), tunnel.type(),
- state, tunnel.groupId(), tunnelId, tunnel.tunnelName(),
- tunnel.path(), annotations);
+ Tunnel tunnelToInsert = new DefaultTunnel(tunnel.providerId(), tunnel.src(), tunnel.dst(), tunnel.type(),
+ state, tunnel.groupId(), tunnelId, tunnel.tunnelName(),
+ tunnel.path(), annotations);
tunnelIdAsKeyStore.put(tunnelId, tunnelToInsert);
@@ -1508,45 +1608,40 @@
}
@Override
- public Collection<Tunnel> queryTunnel(TunnelEndPoint src,
- TunnelEndPoint dst) {
- Collection<Tunnel> result = new HashSet<>();
+ public Collection<Tunnel> queryTunnel(TunnelEndPoint src, TunnelEndPoint dst) {
+ Collection<Tunnel> result = new HashSet<Tunnel>();
Tunnel tunnel = null;
for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
tunnel = tunnelIdAsKeyStore.get(tunnelId);
- if ((null != tunnel) && (src.equals(tunnel.src())) &&
- (dst.equals(tunnel.dst()))) {
+ if ((null != tunnel) && (src.equals(tunnel.src())) && (dst.equals(tunnel.dst()))) {
result.add(tunnel);
}
}
- return result.size() == 0 ? Collections.emptySet() :
- ImmutableSet.copyOf(result);
+ return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
}
@Override
public Collection<Tunnel> queryTunnel(Tunnel.Type type) {
- Collection<Tunnel> result = new HashSet<>();
+ Collection<Tunnel> result = new HashSet<Tunnel>();
for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
result.add(tunnelIdAsKeyStore.get(tunnelId));
}
- return result.size() == 0 ? Collections.emptySet() :
- ImmutableSet.copyOf(result);
+ return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
}
@Override
public Collection<Tunnel> queryAllTunnels() {
- Collection<Tunnel> result = new HashSet<>();
+ Collection<Tunnel> result = new HashSet<Tunnel>();
for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
result.add(tunnelIdAsKeyStore.get(tunnelId));
}
- return result.size() == 0 ? Collections.emptySet() :
- ImmutableSet.copyOf(result);
+ return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
}
@Override
@@ -1555,8 +1650,7 @@
for (Tunnel t : tunnelIdAsKeyStore.values()) {
for (Link l : t.path().links()) {
- if (l.src().deviceId().equals(deviceId) ||
- l.dst().deviceId().equals(deviceId)) {
+ if (l.src().deviceId().equals(deviceId) || l.dst().deviceId().equals(deviceId)) {
tunnelList.add(t);
break;
}
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java b/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java
index c7e6ac9..0039c3c 100644
--- a/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java
+++ b/apps/pce/app/src/test/java/org/onosproject/pce/pcestore/DistributedPceStoreTest.java
@@ -15,20 +15,11 @@
*/
package org.onosproject.pce.pcestore;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
-
import org.onlab.util.DataRateUnit;
import org.onosproject.incubator.net.resource.label.LabelResourceId;
import org.onosproject.incubator.net.tunnel.TunnelId;
@@ -36,16 +27,24 @@
import org.onosproject.net.DefaultAnnotations;
import org.onosproject.net.DefaultLink;
import org.onosproject.net.DeviceId;
-import org.onosproject.net.intent.Constraint;
-import org.onosproject.net.intent.constraint.BandwidthConstraint;
import org.onosproject.net.Link;
import org.onosproject.net.PortNumber;
+import org.onosproject.net.intent.Constraint;
+import org.onosproject.net.intent.constraint.BandwidthConstraint;
+import org.onosproject.net.provider.ProviderId;
import org.onosproject.net.resource.ResourceConsumer;
+import org.onosproject.pce.pceservice.ExplicitPathInfo;
import org.onosproject.pce.pceservice.LspType;
import org.onosproject.pce.pceservice.TunnelConsumerId;
-import org.onosproject.net.provider.ProviderId;
import org.onosproject.store.service.TestStorageService;
+import java.util.LinkedList;
+import java.util.List;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
/**
* Unit tests for DistributedPceStore class.
*/
@@ -164,18 +163,16 @@
* Checks the operation of addTunnelInfo() method.
*/
@Test
- public void testAddTunnelInfo() {
+ public void testAddExplicitPathInfo() {
// initialization
distrPceStore.storageService = new TestStorageService();
distrPceStore.activate();
- // TunnelId with device label store information
- distrPceStore.addTunnelInfo(tunnelId1, tunnelConsumerId1);
- assertThat(distrPceStore.existsTunnelInfo(tunnelId1), is(true));
- assertThat(distrPceStore.getTunnelInfo(tunnelId1), is(tunnelConsumerId1));
- distrPceStore.addTunnelInfo(tunnelId2, tunnelConsumerId2);
- assertThat(distrPceStore.existsTunnelInfo(tunnelId2), is(true));
- assertThat(distrPceStore.getTunnelInfo(tunnelId2), is(tunnelConsumerId2));
+ List<ExplicitPathInfo> infoList = new LinkedList<>();
+ ExplicitPathInfo info1 = new ExplicitPathInfo(ExplicitPathInfo.Type.LOOSE, DeviceId.deviceId("D1"));
+ infoList.add(info1);
+ distrPceStore.tunnelNameExplicitPathInfoMap("Sample1", infoList);
+ assertThat(distrPceStore.getTunnelNameExplicitPathInfoMap("Sample1"), is(infoList));
}
/**
@@ -195,19 +192,6 @@
}
/**
- * Checks the operation of existsTunnelInfo() method.
- */
- @Test
- public void testExistsTunnelInfo() {
- testAddTunnelInfo();
-
- assertThat(distrPceStore.existsTunnelInfo(tunnelId1), is(true));
- assertThat(distrPceStore.existsTunnelInfo(tunnelId2), is(true));
- assertThat(distrPceStore.existsTunnelInfo(tunnelId3), is(false));
- assertThat(distrPceStore.existsTunnelInfo(tunnelId4), is(false));
- }
-
- /**
* Checks the operation of existsFailedPathInfo() method.
*/
@Test
@@ -221,16 +205,6 @@
}
/**
- * Checks the operation of getTunnelInfoCount() method.
- */
- @Test
- public void testGetTunnelInfoCount() {
- testAddTunnelInfo();
-
- assertThat(distrPceStore.getTunnelInfoCount(), is(2));
- }
-
- /**
* Checks the operation of getFailedPathInfoCount() method.
*/
@Test
@@ -241,19 +215,6 @@
}
/**
- * Checks the operation of getTunnelInfos() method.
- */
- @Test
- public void testGetTunnelInfos() {
- testAddTunnelInfo();
-
- Map<TunnelId, ResourceConsumer> tunnelInfoMap = distrPceStore.getTunnelInfos();
- assertThat(tunnelInfoMap, is(notNullValue()));
- assertThat(tunnelInfoMap.isEmpty(), is(false));
- assertThat(tunnelInfoMap.size(), is(2));
- }
-
- /**
* Checks the operation of getFailedPathInfos() method.
*/
@Test
@@ -266,33 +227,6 @@
}
/**
- * Checks the operation of getTunnelInfo() method.
- */
- @Test
- public void testGetTunnelInfo() {
- testAddTunnelInfo();
-
- // tunnelId1 with device label store info
- assertThat(tunnelId1, is(notNullValue()));
- assertThat(distrPceStore.getTunnelInfo(tunnelId1), is(tunnelConsumerId1));
-
- // tunnelId2 with device label store info
- assertThat(tunnelId2, is(notNullValue()));
- assertThat(distrPceStore.getTunnelInfo(tunnelId2), is(tunnelConsumerId2));
- }
-
- /**
- * Checks the operation of removeTunnelInfo() method.
- */
- @Test
- public void testRemoveTunnelInfo() {
- testAddTunnelInfo();
-
- assertThat(distrPceStore.removeTunnelInfo(tunnelId1), is(true));
- assertThat(distrPceStore.removeTunnelInfo(tunnelId2), is(true));
- }
-
- /**
* Checks the operation of removeFailedPathInfo() method.
*/
@Test
diff --git a/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java b/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java
index cba8801..8688fb3 100644
--- a/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java
+++ b/apps/pce/app/src/test/java/org/onosproject/pce/util/PceStoreAdapter.java
@@ -16,22 +16,15 @@
package org.onosproject.pce.util;
import com.google.common.collect.ImmutableSet;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
+import org.onosproject.pce.pceservice.ExplicitPathInfo;
+import org.onosproject.pce.pcestore.PcePathInfo;
+import org.onosproject.pce.pcestore.api.PceStore;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.onosproject.incubator.net.tunnel.TunnelId;
-import org.onosproject.net.resource.ResourceConsumer;
-import org.onosproject.pce.pceservice.ExplicitPathInfo;
-import org.onosproject.pce.pcestore.PcePathInfo;
-import org.onosproject.pce.pcestore.api.PceStore;
/**
* Provides test implementation of PceStore.
@@ -39,7 +32,6 @@
public class PceStoreAdapter implements PceStore {
// Mapping tunnel with device local info with tunnel consumer id
- private ConcurrentMap<TunnelId, ResourceConsumer> tunnelInfoMap = new ConcurrentHashMap<>();
// Set of Path info
private Set<PcePathInfo> failedPathInfoSet = new HashSet<>();
@@ -48,61 +40,26 @@
private Map<String, List<ExplicitPathInfo>> tunnelNameExplicitPathInfoMap = new HashMap<>();
@Override
- public boolean existsTunnelInfo(TunnelId tunnelId) {
- return tunnelInfoMap.containsKey(tunnelId);
- }
-
- @Override
public boolean existsFailedPathInfo(PcePathInfo pathInfo) {
return failedPathInfoSet.contains(pathInfo);
}
@Override
- public int getTunnelInfoCount() {
- return tunnelInfoMap.size();
- }
-
- @Override
public int getFailedPathInfoCount() {
return failedPathInfoSet.size();
}
@Override
- public Map<TunnelId, ResourceConsumer> getTunnelInfos() {
- return tunnelInfoMap.entrySet().stream()
- .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()));
- }
-
- @Override
public Iterable<PcePathInfo> getFailedPathInfos() {
return ImmutableSet.copyOf(failedPathInfoSet);
}
@Override
- public ResourceConsumer getTunnelInfo(TunnelId tunnelId) {
- return tunnelInfoMap.get(tunnelId);
- }
-
- @Override
- public void addTunnelInfo(TunnelId tunnelId, ResourceConsumer tunnelConsumerId) {
- tunnelInfoMap.put(tunnelId, tunnelConsumerId);
- }
-
- @Override
public void addFailedPathInfo(PcePathInfo pathInfo) {
failedPathInfoSet.add(pathInfo);
}
@Override
- public boolean removeTunnelInfo(TunnelId tunnelId) {
- tunnelInfoMap.remove(tunnelId);
- if (tunnelInfoMap.containsKey(tunnelId)) {
- return false;
- }
- return true;
- }
-
- @Override
public boolean removeFailedPathInfo(PcePathInfo pathInfo) {
if (failedPathInfoSet.remove(pathInfo)) {
return false;