Committed by
Gerrit Code Review
Improve test coverage for ConsistentMapEvent and WallClockTimestamp
Change-Id: Id8276966c227e2a66d40fca9ac43145b8a419982
Showing
3 changed files
with
89 additions
and
6 deletions
| ... | @@ -22,7 +22,7 @@ import java.util.Objects; | ... | @@ -22,7 +22,7 @@ import java.util.Objects; |
| 22 | /** | 22 | /** |
| 23 | * Representation of a EventuallyConsistentMap update notification. | 23 | * Representation of a EventuallyConsistentMap update notification. |
| 24 | */ | 24 | */ |
| 25 | -public class EventuallyConsistentMapEvent<K, V> { | 25 | +public final class EventuallyConsistentMapEvent<K, V> { |
| 26 | 26 | ||
| 27 | public enum Type { | 27 | public enum Type { |
| 28 | /** | 28 | /** | ... | ... |
core/api/src/test/java/org/onosproject/store/service/EventuallyConsistentMapEventTest.java
0 → 100644
| 1 | +/* | ||
| 2 | + * Copyright 2015 Open Networking Laboratory | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | +package org.onosproject.store.service; | ||
| 17 | + | ||
| 18 | +import org.junit.Test; | ||
| 19 | + | ||
| 20 | +import com.google.common.testing.EqualsTester; | ||
| 21 | + | ||
| 22 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
| 23 | +import static org.hamcrest.Matchers.is; | ||
| 24 | +import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; | ||
| 25 | +import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.PUT; | ||
| 26 | +import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.REMOVE; | ||
| 27 | + | ||
| 28 | +/** | ||
| 29 | + * Unit tests for the EventuallyConsistentMapEvent class. | ||
| 30 | + */ | ||
| 31 | +public class EventuallyConsistentMapEventTest { | ||
| 32 | + | ||
| 33 | + EventuallyConsistentMapEvent<String, String> event1 = | ||
| 34 | + new EventuallyConsistentMapEvent<>("map1", PUT, "k1", "v1"); | ||
| 35 | + EventuallyConsistentMapEvent<String, String> event2 = | ||
| 36 | + new EventuallyConsistentMapEvent<>("map1", REMOVE, "k1", "v1"); | ||
| 37 | + EventuallyConsistentMapEvent<String, String> sameAsEvent2 = | ||
| 38 | + new EventuallyConsistentMapEvent<>("map1", REMOVE, "k1", "v1"); | ||
| 39 | + EventuallyConsistentMapEvent<String, String> event3 = | ||
| 40 | + new EventuallyConsistentMapEvent<>("map1", PUT, "k2", "v1"); | ||
| 41 | + EventuallyConsistentMapEvent<String, String> event4 = | ||
| 42 | + new EventuallyConsistentMapEvent<>("map1", PUT, "k1", "v2"); | ||
| 43 | + EventuallyConsistentMapEvent<String, String> event5 = | ||
| 44 | + new EventuallyConsistentMapEvent<>("map2", REMOVE, "k1", "v2"); | ||
| 45 | + | ||
| 46 | + /** | ||
| 47 | + * Checks the equals(), hashCode() and toString() operations. | ||
| 48 | + */ | ||
| 49 | + @Test | ||
| 50 | + public void testEquals() { | ||
| 51 | + new EqualsTester() | ||
| 52 | + .addEqualityGroup(event1) | ||
| 53 | + .addEqualityGroup(event2, sameAsEvent2) | ||
| 54 | + .addEqualityGroup(event3) | ||
| 55 | + .addEqualityGroup(event4) | ||
| 56 | + .addEqualityGroup(event5) | ||
| 57 | + .testEquals(); | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + /** | ||
| 61 | + * Checks that the EventuallyConsistentMapEvent class is immutable. | ||
| 62 | + */ | ||
| 63 | + @Test | ||
| 64 | + public void testImmutability() { | ||
| 65 | + assertThatClassIsImmutable(EventuallyConsistentMapEvent.class); | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + /** | ||
| 69 | + * Checks that construction of the object is correct. | ||
| 70 | + */ | ||
| 71 | + @Test | ||
| 72 | + public void testConstruction() { | ||
| 73 | + assertThat(event1.type(), is(PUT)); | ||
| 74 | + assertThat(event1.key(), is("k1")); | ||
| 75 | + assertThat(event1.value(), is("v1")); | ||
| 76 | + assertThat(event1.name(), is("map1")); | ||
| 77 | + } | ||
| 78 | +} |
| 1 | /* | 1 | /* |
| 2 | - * Copyright 2014 Open Networking Laboratory | 2 | + * Copyright 2015 Open Networking Laboratory |
| 3 | * | 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. | 5 | * you may not use this file except in compliance with the License. |
| ... | @@ -13,7 +13,7 @@ | ... | @@ -13,7 +13,7 @@ |
| 13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. | 14 | * limitations under the License. |
| 15 | */ | 15 | */ |
| 16 | -package org.onosproject.store.impl; | 16 | +package org.onosproject.store.service; |
| 17 | 17 | ||
| 18 | import static org.junit.Assert.assertTrue; | 18 | import static org.junit.Assert.assertTrue; |
| 19 | 19 | ||
| ... | @@ -24,7 +24,6 @@ import org.onosproject.store.Timestamp; | ... | @@ -24,7 +24,6 @@ import org.onosproject.store.Timestamp; |
| 24 | import org.onlab.util.KryoNamespace; | 24 | import org.onlab.util.KryoNamespace; |
| 25 | 25 | ||
| 26 | import com.google.common.testing.EqualsTester; | 26 | import com.google.common.testing.EqualsTester; |
| 27 | -import org.onosproject.store.service.WallClockTimestamp; | ||
| 28 | 27 | ||
| 29 | /** | 28 | /** |
| 30 | * Tests for {@link WallClockTimestamp}. | 29 | * Tests for {@link WallClockTimestamp}. |
| ... | @@ -36,15 +35,20 @@ public class WallClockTimestampTest { | ... | @@ -36,15 +35,20 @@ public class WallClockTimestampTest { |
| 36 | WallClockTimestamp ts1 = new WallClockTimestamp(); | 35 | WallClockTimestamp ts1 = new WallClockTimestamp(); |
| 37 | Thread.sleep(50); | 36 | Thread.sleep(50); |
| 38 | WallClockTimestamp ts2 = new WallClockTimestamp(); | 37 | WallClockTimestamp ts2 = new WallClockTimestamp(); |
| 38 | + long stamp = System.currentTimeMillis() + 10000; | ||
| 39 | + WallClockTimestamp ts3 = new WallClockTimestamp(stamp); | ||
| 40 | + | ||
| 39 | 41 | ||
| 40 | assertTrue(ts1.compareTo(ts1) == 0); | 42 | assertTrue(ts1.compareTo(ts1) == 0); |
| 41 | assertTrue(ts2.compareTo(ts1) > 0); | 43 | assertTrue(ts2.compareTo(ts1) > 0); |
| 42 | assertTrue(ts1.compareTo(ts2) < 0); | 44 | assertTrue(ts1.compareTo(ts2) < 0); |
| 45 | + assertTrue(ts3.unixTimestamp() == stamp); | ||
| 43 | } | 46 | } |
| 44 | 47 | ||
| 45 | @Test | 48 | @Test |
| 46 | public final void testKryoSerializable() { | 49 | public final void testKryoSerializable() { |
| 47 | WallClockTimestamp ts1 = new WallClockTimestamp(); | 50 | WallClockTimestamp ts1 = new WallClockTimestamp(); |
| 51 | + WallClockTimestamp ts2 = new WallClockTimestamp(System.currentTimeMillis() + 10000); | ||
| 48 | final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024); | 52 | final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024); |
| 49 | final KryoNamespace kryos = KryoNamespace.newBuilder() | 53 | final KryoNamespace kryos = KryoNamespace.newBuilder() |
| 50 | .register(WallClockTimestamp.class) | 54 | .register(WallClockTimestamp.class) |
| ... | @@ -55,7 +59,8 @@ public class WallClockTimestampTest { | ... | @@ -55,7 +59,8 @@ public class WallClockTimestampTest { |
| 55 | Timestamp copy = kryos.deserialize(buffer); | 59 | Timestamp copy = kryos.deserialize(buffer); |
| 56 | 60 | ||
| 57 | new EqualsTester() | 61 | new EqualsTester() |
| 58 | - .addEqualityGroup(ts1, copy) | 62 | + .addEqualityGroup(ts1, copy) |
| 59 | - .testEquals(); | 63 | + .addEqualityGroup(ts2) |
| 64 | + .testEquals(); | ||
| 60 | } | 65 | } |
| 61 | } | 66 | } | ... | ... |
-
Please register or login to post a comment