ONOS-4751-Fix:creating GroupType INDIRECT, multiple bucket(REST API)
Change-Id: Ic8d5a04b8b00ca43bfadbb3019aa5d72e799da6f
diff --git a/core/api/src/main/java/org/onosproject/net/group/DefaultGroupDescription.java b/core/api/src/main/java/org/onosproject/net/group/DefaultGroupDescription.java
index 119d535..1962e0a 100644
--- a/core/api/src/main/java/org/onosproject/net/group/DefaultGroupDescription.java
+++ b/core/api/src/main/java/org/onosproject/net/group/DefaultGroupDescription.java
@@ -17,6 +17,7 @@
import static com.google.common.base.MoreObjects.toStringHelper;
import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkArgument;
import java.util.Objects;
@@ -61,6 +62,10 @@
this.type = checkNotNull(type);
this.deviceId = checkNotNull(deviceId);
this.buckets = checkNotNull(buckets);
+ if (this.type == GroupDescription.Type.INDIRECT) {
+ checkArgument(buckets.buckets().size() == 1, "Indirect group " +
+ "should have only one action bucket");
+ }
this.appCookie = appCookie;
this.givenGroupId = groupId;
this.appId = appId;
diff --git a/core/api/src/test/java/org/onosproject/net/group/DefaultGroupTest.java b/core/api/src/test/java/org/onosproject/net/group/DefaultGroupTest.java
index feb10e8..691852dd 100644
--- a/core/api/src/test/java/org/onosproject/net/group/DefaultGroupTest.java
+++ b/core/api/src/test/java/org/onosproject/net/group/DefaultGroupTest.java
@@ -34,6 +34,8 @@
public class DefaultGroupTest {
private final GroupId id1 = new DefaultGroupId(6);
private final GroupId id2 = new DefaultGroupId(7);
+ private final GroupId id3 = new DefaultGroupId(1234);
+
private final GroupBucket bucket =
DefaultGroupBucket.createSelectGroupBucket(
DefaultTrafficTreatment.emptyTreatment());
@@ -48,10 +50,16 @@
GroupDescription.Type.FAILOVER,
groupBuckets);
+ private final GroupDescription groupDesc3 =
+ new DefaultGroupDescription(did("3"),
+ GroupDescription.Type.INDIRECT,
+ groupBuckets);
+
DefaultGroup group1 = new DefaultGroup(id1, groupDesc1);
DefaultGroup sameAsGroup1 = new DefaultGroup(id1, groupDesc1);
DefaultGroup group2 = new DefaultGroup(id1, groupDesc2);
DefaultGroup group3 = new DefaultGroup(id2, groupDesc2);
+ DefaultGroup group4 = new DefaultGroup(id3, groupDesc3);
/**
* Tests for proper operation of equals(), hashCode() and toString() methods.
@@ -62,6 +70,7 @@
.addEqualityGroup(group1, sameAsGroup1)
.addEqualityGroup(group2)
.addEqualityGroup(group3)
+ .addEqualityGroup(group4)
.testEquals();
}
@@ -85,7 +94,7 @@
@Test
public void checkConstructionWithDid() {
DefaultGroup group = new DefaultGroup(id2, NetTestTools.did("1"),
- GroupDescription.Type.INDIRECT, groupBuckets);
+ GroupDescription.Type.ALL, groupBuckets);
assertThat(group.id(), is(id2));
assertThat(group.bytes(), is(0L));
assertThat(group.life(), is(0L));