Ray Milkey
Committed by Gerrit Code Review

Unit tests for GroupBucket and GroupOperation

Also added the group type to the equals()
method for GroupOperation.

Change-Id: I733f32ee740fd17dd6c3d488abbb8b1656514073
......@@ -171,10 +171,11 @@ public final class GroupOperation {
if (obj instanceof GroupOperation) {
GroupOperation that = (GroupOperation) obj;
return Objects.equals(groupId, that.groupId) &&
Objects.equals(groupType, that.groupType) &&
Objects.equals(opType, that.opType) &&
Objects.equals(buckets, that.buckets);
}
return false;
}
}
\ No newline at end of file
}
......
/*
* Copyright 2015 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.net.group;
import org.junit.Test;
import org.onosproject.core.DefaultGroupId;
import org.onosproject.core.GroupId;
import org.onosproject.net.PortNumber;
import org.onosproject.net.flow.DefaultTrafficTreatment;
import org.onosproject.net.flow.TrafficTreatment;
import com.google.common.testing.EqualsTester;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.onosproject.net.group.GroupDescription.Type.FAILOVER;
import static org.onosproject.net.group.GroupDescription.Type.INDIRECT;
import static org.onosproject.net.group.GroupDescription.Type.SELECT;
/**
* Unit tests for the group bucket class.
*/
public class GroupBucketTest {
private final GroupId groupId = new DefaultGroupId(7);
private final GroupId nullGroup = null;
private final PortNumber nullPort = null;
private final TrafficTreatment treatment =
DefaultTrafficTreatment.emptyTreatment();
private final GroupBucket selectGroupBucket =
DefaultGroupBucket.createSelectGroupBucket(treatment);
private final GroupBucket sameAsSelectGroupBucket =
DefaultGroupBucket.createSelectGroupBucket(treatment);
private final GroupBucket failoverGroupBucket =
DefaultGroupBucket.createFailoverGroupBucket(treatment,
PortNumber.IN_PORT, groupId);
private final GroupBucket indirectGroupBucket =
DefaultGroupBucket.createIndirectGroupBucket(treatment);
private final GroupBucket selectGroupBucketWithWeight =
DefaultGroupBucket.createSelectGroupBucket(treatment, (short) 5);
/**
* Tests for proper operation of equals(), hashCode() and toString() methods.
*/
@Test
public void checkEquals() {
new EqualsTester()
.addEqualityGroup(selectGroupBucket,
sameAsSelectGroupBucket,
selectGroupBucketWithWeight)
.addEqualityGroup(failoverGroupBucket)
.addEqualityGroup(indirectGroupBucket)
.testEquals();
}
private void checkValues(GroupBucket bucket, GroupDescription.Type type,
long bytes, long packets, short weight,
GroupId groupId, PortNumber portNumber) {
assertThat(bucket.type(), is(type));
assertThat(bucket.bytes(), is(bytes));
assertThat(bucket.packets(), is(packets));
assertThat(bucket.treatment(), is(treatment));
assertThat(bucket.weight(), is(weight));
assertThat(bucket.watchGroup(), is(groupId));
assertThat(bucket.watchPort(), is(portNumber));
}
/**
* Checks that construction of a select group was correct.
*/
@Test
public void checkSelectGroup() {
// Casting needed because only the store accesses the set methods.
((DefaultGroupBucket) selectGroupBucket).setBytes(4);
((DefaultGroupBucket) selectGroupBucket).setPackets(44);
checkValues(selectGroupBucket, SELECT, 4L, 44L, (short) 1,
nullGroup, nullPort);
}
/**
* Checks that construction of a select group with a weight was correct.
*/
@Test
public void checkSelectGroupWithPriority() {
checkValues(selectGroupBucketWithWeight, SELECT, 0L, 0L, (short) 5,
nullGroup, nullPort);
}
/**
* Checks that construction of an indirect group was correct.
*/
@Test
public void checkFailoverGroup() {
checkValues(failoverGroupBucket, FAILOVER, 0L, 0L, (short) -1,
groupId, PortNumber.IN_PORT);
}
/**
* Checks that construction of an indirect group was correct.
*/
@Test
public void checkIndirectGroup() {
checkValues(indirectGroupBucket, INDIRECT, 0L, 0L, (short) -1,
nullGroup, nullPort);
}
/**
* Checks that a weight of 0 results in no group getting created.
*/
@Test
public void checkZeroWeight() {
GroupBucket bucket =
DefaultGroupBucket.createSelectGroupBucket(treatment, (short) 0);
assertThat(bucket, nullValue());
}
}
/*
* Copyright 2015 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.net.group;
import org.junit.Test;
import org.onosproject.core.DefaultGroupId;
import org.onosproject.core.GroupId;
import org.onosproject.net.flow.DefaultTrafficTreatment;
import org.onosproject.net.flow.TrafficTreatment;
import com.google.common.collect.ImmutableList;
import com.google.common.testing.EqualsTester;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
import static org.onosproject.net.group.GroupDescription.Type.ALL;
import static org.onosproject.net.group.GroupDescription.Type.INDIRECT;
import static org.onosproject.net.group.GroupOperation.Type.ADD;
/**
* Tests for the group operation class.
*/
public class GroupOperationTest {
private final GroupId groupId = new DefaultGroupId(6);
private final TrafficTreatment treatment =
DefaultTrafficTreatment.emptyTreatment();
private final GroupBucket bucket =
DefaultGroupBucket.createSelectGroupBucket(treatment);
private final GroupBuckets groupBuckets =
new GroupBuckets(ImmutableList.of(bucket));
private final GroupOperation op1 =
GroupOperation.createAddGroupOperation(groupId, ALL, groupBuckets);
private final GroupOperation sameAsOp1 =
GroupOperation.createAddGroupOperation(groupId, ALL, groupBuckets);
private final GroupOperation op2 =
GroupOperation.createAddGroupOperation(groupId, INDIRECT, groupBuckets);
private final GroupOperation op3 =
GroupOperation.createDeleteGroupOperation(groupId, INDIRECT);
private final GroupOperation op4 =
GroupOperation.createModifyGroupOperation(groupId, INDIRECT, groupBuckets);
/**
* Checks that the GroupOperation class is immutable.
*/
@Test
public void testImmutability() {
assertThatClassIsImmutable(GroupOperation.class);
}
/**
* Tests for proper operation of equals(), hashCode() and toString() methods.
*/
@Test
public void checkEquals() {
new EqualsTester()
.addEqualityGroup(op1, sameAsOp1)
.addEqualityGroup(op2)
.addEqualityGroup(op3)
.addEqualityGroup(op4)
.testEquals();
}
/**
* Checks that the construction of the add operation is correct.
*/
@Test
public void testAddGroupOperation() {
assertThat(op1.buckets(), is(groupBuckets));
assertThat(op1.groupId(), is(groupId));
assertThat(op1.groupType(), is(ALL));
assertThat(op1.opType(), is(ADD));
}
}