Ray Milkey
Committed by Gerrit Code Review

Improve test coverage for ConsistentMapEvent and WallClockTimestamp

Change-Id: Id8276966c227e2a66d40fca9ac43145b8a419982
......@@ -22,7 +22,7 @@ import java.util.Objects;
/**
* Representation of a EventuallyConsistentMap update notification.
*/
public class EventuallyConsistentMapEvent<K, V> {
public final class EventuallyConsistentMapEvent<K, V> {
public enum Type {
/**
......
/*
* 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.store.service;
import org.junit.Test;
import com.google.common.testing.EqualsTester;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.PUT;
import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.REMOVE;
/**
* Unit tests for the EventuallyConsistentMapEvent class.
*/
public class EventuallyConsistentMapEventTest {
EventuallyConsistentMapEvent<String, String> event1 =
new EventuallyConsistentMapEvent<>("map1", PUT, "k1", "v1");
EventuallyConsistentMapEvent<String, String> event2 =
new EventuallyConsistentMapEvent<>("map1", REMOVE, "k1", "v1");
EventuallyConsistentMapEvent<String, String> sameAsEvent2 =
new EventuallyConsistentMapEvent<>("map1", REMOVE, "k1", "v1");
EventuallyConsistentMapEvent<String, String> event3 =
new EventuallyConsistentMapEvent<>("map1", PUT, "k2", "v1");
EventuallyConsistentMapEvent<String, String> event4 =
new EventuallyConsistentMapEvent<>("map1", PUT, "k1", "v2");
EventuallyConsistentMapEvent<String, String> event5 =
new EventuallyConsistentMapEvent<>("map2", REMOVE, "k1", "v2");
/**
* Checks the equals(), hashCode() and toString() operations.
*/
@Test
public void testEquals() {
new EqualsTester()
.addEqualityGroup(event1)
.addEqualityGroup(event2, sameAsEvent2)
.addEqualityGroup(event3)
.addEqualityGroup(event4)
.addEqualityGroup(event5)
.testEquals();
}
/**
* Checks that the EventuallyConsistentMapEvent class is immutable.
*/
@Test
public void testImmutability() {
assertThatClassIsImmutable(EventuallyConsistentMapEvent.class);
}
/**
* Checks that construction of the object is correct.
*/
@Test
public void testConstruction() {
assertThat(event1.type(), is(PUT));
assertThat(event1.key(), is("k1"));
assertThat(event1.value(), is("v1"));
assertThat(event1.name(), is("map1"));
}
}
/*
* Copyright 2014 Open Networking Laboratory
* 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.
......@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.store.impl;
package org.onosproject.store.service;
import static org.junit.Assert.assertTrue;
......@@ -24,7 +24,6 @@ import org.onosproject.store.Timestamp;
import org.onlab.util.KryoNamespace;
import com.google.common.testing.EqualsTester;
import org.onosproject.store.service.WallClockTimestamp;
/**
* Tests for {@link WallClockTimestamp}.
......@@ -36,15 +35,20 @@ public class WallClockTimestampTest {
WallClockTimestamp ts1 = new WallClockTimestamp();
Thread.sleep(50);
WallClockTimestamp ts2 = new WallClockTimestamp();
long stamp = System.currentTimeMillis() + 10000;
WallClockTimestamp ts3 = new WallClockTimestamp(stamp);
assertTrue(ts1.compareTo(ts1) == 0);
assertTrue(ts2.compareTo(ts1) > 0);
assertTrue(ts1.compareTo(ts2) < 0);
assertTrue(ts3.unixTimestamp() == stamp);
}
@Test
public final void testKryoSerializable() {
WallClockTimestamp ts1 = new WallClockTimestamp();
WallClockTimestamp ts2 = new WallClockTimestamp(System.currentTimeMillis() + 10000);
final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024);
final KryoNamespace kryos = KryoNamespace.newBuilder()
.register(WallClockTimestamp.class)
......@@ -55,7 +59,8 @@ public class WallClockTimestampTest {
Timestamp copy = kryos.deserialize(buffer);
new EqualsTester()
.addEqualityGroup(ts1, copy)
.testEquals();
.addEqualityGroup(ts1, copy)
.addEqualityGroup(ts2)
.testEquals();
}
}
......