Resource group to share resources between intents
Change-Id: I5bf7d4261197449924d07dabac841cf8ccbe9389
diff --git a/core/api/src/test/java/org/onosproject/net/intent/ConnectivityIntentTest.java b/core/api/src/test/java/org/onosproject/net/intent/ConnectivityIntentTest.java
index bab715f..3ac5a62 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/ConnectivityIntentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/ConnectivityIntentTest.java
@@ -26,6 +26,7 @@
import org.onosproject.net.DeviceId;
import org.onosproject.net.FilteredConnectPoint;
import org.onosproject.net.PortNumber;
+import org.onosproject.net.ResourceGroup;
import org.onosproject.net.flow.DefaultTrafficSelector;
import org.onosproject.net.flow.DefaultTrafficTreatment;
import org.onosproject.net.flow.TrafficSelector;
@@ -65,6 +66,8 @@
public static final Set<FilteredConnectPoint> FPS1 = itemSet(new FilteredConnectPoint[]{FP1, FP3});
public static final Set<FilteredConnectPoint> FPS2 = itemSet(new FilteredConnectPoint[]{FP2, FP3});
+ public static final ResourceGroup RESOURCE_GROUP = ResourceGroup.of(0L);
+
public static final Map<ConnectPoint, TrafficSelector> VLANMATCHES = Maps.newHashMap();
static {
VLANMATCHES.put(P1, VLANMATCH1);
diff --git a/core/api/src/test/java/org/onosproject/net/intent/FlowObjectiveIntentTest.java b/core/api/src/test/java/org/onosproject/net/intent/FlowObjectiveIntentTest.java
index 69418a9..0b72e34 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/FlowObjectiveIntentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/FlowObjectiveIntentTest.java
@@ -24,6 +24,7 @@
import org.onosproject.core.DefaultApplicationId;
import org.onosproject.net.DeviceId;
import org.onosproject.net.NetworkResource;
+import org.onosproject.net.ResourceGroup;
import org.onosproject.net.flow.DefaultTrafficSelector;
import org.onosproject.net.flow.DefaultTrafficTreatment;
import org.onosproject.net.flow.criteria.Criteria;
@@ -59,6 +60,7 @@
private static final List<Objective> OBJECTIVES = ImmutableList.of(FO1, FO2);
private static final Collection<NetworkResource> RESOURCES = ImmutableSet.of();
private static final List<DeviceId> DEVICE = ImmutableList.of(DeviceId.NONE, DeviceId.NONE);
+ private static final ResourceGroup RESOURCE_GROUP = ResourceGroup.of(0L);
/**
* Tests basics of construction and getters.
@@ -66,11 +68,12 @@
@Test
public void basics() {
FlowObjectiveIntent intent =
- new FlowObjectiveIntent(APP_ID, KEY, DEVICE, OBJECTIVES, RESOURCES);
+ new FlowObjectiveIntent(APP_ID, KEY, DEVICE, OBJECTIVES, RESOURCES, RESOURCE_GROUP);
assertEquals("incorrect app id", APP_ID, intent.appId());
assertEquals("incorrect key", KEY, intent.key());
assertEquals("incorrect objectives", OBJECTIVES, intent.objectives());
assertEquals("incorrect resources", RESOURCES, intent.resources());
+ assertEquals("incorrect resource group", RESOURCE_GROUP, intent.resourceGroup());
assertTrue("should be installable", intent.isInstallable());
}
diff --git a/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java b/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java
index 0f373ff..3aba876 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/HostToHostIntentTest.java
@@ -20,6 +20,7 @@
import org.onosproject.TestApplicationId;
import org.onosproject.core.ApplicationId;
import org.onosproject.net.HostId;
+import org.onosproject.net.ResourceGroup;
import org.onosproject.net.flow.TrafficSelector;
import org.onosproject.net.intent.constraint.BandwidthConstraint;
import com.google.common.collect.ImmutableList;
@@ -41,6 +42,7 @@
private final HostId id1 = hid("12:34:56:78:91:ab/1");
private final HostId id2 = hid("12:34:56:78:92:ab/1");
private final HostId id3 = hid("12:34:56:78:93:ab/1");
+ private final ResourceGroup resourceGrouop = ResourceGroup.of(0L);
private static final ApplicationId APPID = new TestApplicationId("foo");
@@ -154,6 +156,18 @@
}
+ @Test
+ public void testResourceGroup() {
+ final HostToHostIntent intent = (HostToHostIntent) createWithResourceGroup();
+ assertThat("incorrect app id", intent.appId(), is(APPID));
+ assertThat("incorrect host one", intent.one(), is(id1));
+ assertThat("incorrect host two", intent.two(), is(id3));
+ assertThat("incorrect selector", intent.selector(), is(selector));
+ assertThat("incorrect treatment", intent.treatment(), is(treatment));
+ assertThat("incorrect resource group", intent.resourceGroup(), is(resourceGrouop));
+
+ }
+
@Override
protected Intent createOne() {
return HostToHostIntent.builder()
@@ -175,4 +189,15 @@
.treatment(treatment)
.build();
}
+
+ protected Intent createWithResourceGroup() {
+ return HostToHostIntent.builder()
+ .appId(APPID)
+ .one(id1)
+ .two(id3)
+ .selector(selector)
+ .treatment(treatment)
+ .resourceGroup(resourceGrouop)
+ .build();
+ }
}
diff --git a/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java b/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java
index cb25b3c..9f45582 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java
@@ -27,6 +27,7 @@
import org.onosproject.net.FilteredConnectPoint;
import org.onosproject.net.Link;
import org.onosproject.net.NetTestTools;
+import org.onosproject.net.ResourceGroup;
import org.onosproject.net.flow.TrafficSelector;
import com.google.common.collect.ImmutableSet;
@@ -53,6 +54,7 @@
final IntentTestsMocks.MockTreatment treatment = new IntentTestsMocks.MockTreatment();
final FilteredConnectPoint filteredIngress = new FilteredConnectPoint(ingress);
final FilteredConnectPoint filteredEgress = new FilteredConnectPoint(egress);
+ final ResourceGroup resourceGroup = ResourceGroup.of(0L);
/**
* Checks that the LinkCollectionIntent class is immutable.
@@ -78,6 +80,7 @@
.links(links1)
.ingressPoints(ImmutableSet.of(ingress))
.egressPoints(ImmutableSet.of(egress))
+ .resourceGroup(resourceGroup)
.build();
final HashSet<Link> links2 = new HashSet<>();
@@ -90,6 +93,7 @@
.links(links2)
.ingressPoints(ImmutableSet.of(ingress))
.egressPoints(ImmutableSet.of(egress))
+ .resourceGroup(resourceGroup)
.build();
new EqualsTester()
@@ -113,6 +117,7 @@
.links(links1)
.ingressPoints(ImmutableSet.of(ingress))
.egressPoints(ImmutableSet.of(egress))
+ .resourceGroup(resourceGroup)
.build();
final Set<Link> createdLinks = collectionIntent.links();
@@ -122,6 +127,7 @@
assertThat(collectionIntent.selector(), is(selector));
assertThat(collectionIntent.ingressPoints(), is(ImmutableSet.of(ingress)));
assertThat(collectionIntent.egressPoints(), is(ImmutableSet.of(egress)));
+ assertThat(collectionIntent.resourceGroup(), is(resourceGroup));
assertThat(collectionIntent.resources(), hasSize(1));
final List<Constraint> createdConstraints = collectionIntent.constraints();
assertThat(createdConstraints, hasSize(0));
diff --git a/core/api/src/test/java/org/onosproject/net/intent/MultiPointToSinglePointIntentTest.java b/core/api/src/test/java/org/onosproject/net/intent/MultiPointToSinglePointIntentTest.java
index a41214b..5fcd8d4 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/MultiPointToSinglePointIntentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/MultiPointToSinglePointIntentTest.java
@@ -56,6 +56,14 @@
assertEquals("incorrect match", VLANMATCH1, intent.selector());
assertEquals("incorrect ingress", PS1, intent.ingressPoints());
assertEquals("incorrect egress", P2, intent.egressPoint());
+
+ intent = createWithResourceGroup();
+ assertEquals("incorrect id", APPID, intent.appId());
+ assertEquals("incorrect match", MATCH, intent.selector());
+ assertEquals("incorrect ingress", PS1, intent.ingressPoints());
+ assertEquals("incorrect egress", P2, intent.egressPoint());
+ assertEquals("incorrect resource group", RESOURCE_GROUP, intent.resourceGroup());
+
}
/**
@@ -109,6 +117,17 @@
.build();
}
+ protected MultiPointToSinglePointIntent createWithResourceGroup() {
+ return MultiPointToSinglePointIntent.builder()
+ .appId(APPID)
+ .selector(MATCH)
+ .treatment(NOP)
+ .ingressPoints(PS1)
+ .egressPoint(P2)
+ .resourceGroup(RESOURCE_GROUP)
+ .build();
+ }
+
protected MultiPointToSinglePointIntent createFilteredOne() {
return MultiPointToSinglePointIntent.builder()
diff --git a/core/api/src/test/java/org/onosproject/net/intent/PathIntentTest.java b/core/api/src/test/java/org/onosproject/net/intent/PathIntentTest.java
index e388468..da13af0 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/PathIntentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/PathIntentTest.java
@@ -73,6 +73,21 @@
assertEquals("incorrect action", NOP, intent.treatment());
assertEquals("incorrect path", PATH1, intent.path());
assertEquals("incorrect key", KEY, intent.key());
+
+ intent = createAnother();
+ assertEquals("incorrect id", APPID, intent.appId());
+ assertEquals("incorrect match", MATCH, intent.selector());
+ assertEquals("incorrect action", NOP, intent.treatment());
+ assertEquals("incorrect path", PATH2, intent.path());
+ assertEquals("incorrect key", KEY, intent.key());
+
+ intent = createWithResourceGroup();
+ assertEquals("incorrect id", APPID, intent.appId());
+ assertEquals("incorrect match", MATCH, intent.selector());
+ assertEquals("incorrect action", NOP, intent.treatment());
+ assertEquals("incorrect path", PATH2, intent.path());
+ assertEquals("incorrect key", KEY, intent.key());
+ assertEquals("incorrect resource group", RESOURCE_GROUP, intent.resourceGroup());
}
@Override
@@ -90,12 +105,24 @@
protected PathIntent createAnother() {
return PathIntent.builder()
.appId(APPID)
+ .key(KEY)
.selector(MATCH)
.treatment(NOP)
.path(PATH2)
.build();
}
+ protected PathIntent createWithResourceGroup() {
+ return PathIntent.builder()
+ .appId(APPID)
+ .key(KEY)
+ .selector(MATCH)
+ .treatment(NOP)
+ .path(PATH2)
+ .resourceGroup(RESOURCE_GROUP)
+ .build();
+ }
+
/**
* Tests the constructor raises IllegalArgumentException when the same device is specified in
* source and destination of a link.
diff --git a/core/api/src/test/java/org/onosproject/net/intent/PointToPointIntentTest.java b/core/api/src/test/java/org/onosproject/net/intent/PointToPointIntentTest.java
index 7f83850..8d0f900 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/PointToPointIntentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/PointToPointIntentTest.java
@@ -40,6 +40,13 @@
assertEquals("incorrect match", MATCH, intent.selector());
assertEquals("incorrect ingress", P1, intent.ingressPoint());
assertEquals("incorrect egress", P2, intent.egressPoint());
+
+ intent = createWithResourceGroup();
+ assertEquals("incorrect id", APPID, intent.appId());
+ assertEquals("incorrect match", MATCH, intent.selector());
+ assertEquals("incorrect ingress", P1, intent.ingressPoint());
+ assertEquals("incorrect egress", P2, intent.egressPoint());
+ assertEquals("incorrect resource group", RESOURCE_GROUP, intent.resourceGroup());
}
@Test
@@ -62,6 +69,17 @@
.build();
}
+ protected PointToPointIntent createWithResourceGroup() {
+ return PointToPointIntent.builder()
+ .appId(APPID)
+ .selector(MATCH)
+ .treatment(NOP)
+ .ingressPoint(P1)
+ .egressPoint(P2)
+ .resourceGroup(RESOURCE_GROUP)
+ .build();
+ }
+
@Override
protected PointToPointIntent createAnother() {
return PointToPointIntent.builder()
diff --git a/core/api/src/test/java/org/onosproject/net/intent/SinglePointToMultiPointIntentTest.java b/core/api/src/test/java/org/onosproject/net/intent/SinglePointToMultiPointIntentTest.java
index 76aaa85..1aef3bb 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/SinglePointToMultiPointIntentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/SinglePointToMultiPointIntentTest.java
@@ -46,6 +46,13 @@
assertEquals("incorrect match", MATCH, intent.selector());
assertEquals("incorrect ingress", P2, intent.ingressPoint());
assertEquals("incorrect egress", PS1, intent.egressPoints());
+
+ intent = createWithResourceGroup();
+ assertEquals("incorrect id", APPID, intent.appId());
+ assertEquals("incorrect match", MATCH, intent.selector());
+ assertEquals("incorrect ingress", P2, intent.ingressPoint());
+ assertEquals("incorrect egress", PS1, intent.egressPoints());
+ assertEquals("incorrect resource group", RESOURCE_GROUP, intent.resourceGroup());
}
@Test
@@ -61,7 +68,6 @@
assertEquals("incorrect match", MATCH, intent.selector());
assertEquals("incorrect filtered ingress", FP1, intent.filteredIngressPoint());
assertEquals("incorrect filtered egress", FPS2, intent.filteredEgressPoints());
-
}
@Override
@@ -86,6 +92,17 @@
.build();
}
+ protected SinglePointToMultiPointIntent createWithResourceGroup() {
+ return SinglePointToMultiPointIntent.builder()
+ .appId(APPID)
+ .selector(MATCH)
+ .treatment(NOP)
+ .ingressPoint(P2)
+ .egressPoints(PS1)
+ .resourceGroup(RESOURCE_GROUP)
+ .build();
+ }
+
protected SinglePointToMultiPointIntent createFilteredOne() {
return SinglePointToMultiPointIntent.builder()
.appId(APPID)