More Unit tests
Change-Id: I32dd3851e490979621c4a5205c6e041dee900244
diff --git a/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/Match.java b/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/Match.java
index 804514c..5f707d6 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/Match.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/Match.java
@@ -108,12 +108,13 @@
return Objects.hash(matchAny, value);
}
+ @SuppressWarnings("unchecked")
@Override
public boolean equals(Object other) {
if (!(other instanceof Match)) {
return false;
}
- Match<T> that = (Match) other;
+ Match<T> that = (Match<T>) other;
return Objects.equals(this.matchAny, that.matchAny) &&
Objects.equals(this.value, that.value);
}
diff --git a/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/Result.java b/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/Result.java
index 548174a..856f706 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/Result.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/Result.java
@@ -15,6 +15,10 @@
*/
package org.onosproject.store.consistent.impl;
+import static com.google.common.base.MoreObjects.toStringHelper;
+
+import java.util.Objects;
+
/**
* Result of a database update operation.
*
@@ -74,6 +78,7 @@
/**
* Returns the status of database update operation.
+ *
* @return database update status
*/
public Status status() {
@@ -82,10 +87,35 @@
/**
* Returns the return value for the update.
+ *
* @return value returned by database update. If the status is another
* other than Status.OK, this returns a null
*/
public V value() {
return value;
}
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(value, status);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean equals(Object other) {
+ if (!(other instanceof Result)) {
+ return false;
+ }
+ Result<V> that = (Result<V>) other;
+ return Objects.equals(this.value, that.value) &&
+ Objects.equals(this.status, that.status);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("status", status)
+ .add("value", value)
+ .toString();
+ }
}
\ No newline at end of file
diff --git a/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java b/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
index 2de8947..b56d74b 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
@@ -653,7 +653,7 @@
public void processItems(List<UpdateEntry<K, V>> items) {
Map<K, UpdateEntry<K, V>> map = Maps.newHashMap();
items.forEach(item -> map.compute(item.key(), (key, existing) ->
- existing == null || item.compareTo(existing) > 0 ? item : existing));
+ item.isNewerThan(existing) ? item : existing));
communicationExecutor.submit(() -> {
clusterCommunicator.unicast(ImmutableList.copyOf(map.values()),
updateMessageSubject,
diff --git a/core/store/dist/src/main/java/org/onosproject/store/ecmap/MapValue.java b/core/store/dist/src/main/java/org/onosproject/store/ecmap/MapValue.java
index 1a89c6b..bb69b47 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/ecmap/MapValue.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/ecmap/MapValue.java
@@ -83,10 +83,11 @@
return Objects.hashCode(timestamp, value);
}
+ @SuppressWarnings("unchecked")
@Override
public boolean equals(Object other) {
if (other instanceof MapValue) {
- MapValue<V> that = (MapValue) other;
+ MapValue<V> that = (MapValue<V>) other;
return Objects.equal(this.timestamp, that.timestamp) &&
Objects.equal(this.value, that.value);
}
diff --git a/core/store/dist/src/main/java/org/onosproject/store/ecmap/UpdateEntry.java b/core/store/dist/src/main/java/org/onosproject/store/ecmap/UpdateEntry.java
index 41eb3a2..fcf6198 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/ecmap/UpdateEntry.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/ecmap/UpdateEntry.java
@@ -22,7 +22,7 @@
/**
* Describes a single update event in an EventuallyConsistentMap.
*/
-final class UpdateEntry<K, V> implements Comparable<UpdateEntry<K, V>> {
+final class UpdateEntry<K, V> {
private final K key;
private final MapValue<V> value;
@@ -55,9 +55,13 @@
return value;
}
- @Override
- public int compareTo(UpdateEntry<K, V> o) {
- return this.value.timestamp().compareTo(o.value.timestamp());
+ /**
+ * Returns if this entry is newer than other entry.
+ * @param other other entry
+ * @return true if this entry is newer; false otherwise
+ */
+ public boolean isNewerThan(UpdateEntry<K, V> other) {
+ return other == null || value.isNewerThan(other.value);
}
@Override
diff --git a/core/store/dist/src/test/java/org/onosproject/store/consistent/impl/ResultTest.java b/core/store/dist/src/test/java/org/onosproject/store/consistent/impl/ResultTest.java
new file mode 100644
index 0000000..2a3bab8
--- /dev/null
+++ b/core/store/dist/src/test/java/org/onosproject/store/consistent/impl/ResultTest.java
@@ -0,0 +1,42 @@
+package org.onosproject.store.consistent.impl;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertFalse;
+import static junit.framework.TestCase.assertNull;
+import static junit.framework.TestCase.assertTrue;
+
+import org.junit.Test;
+
+/**
+ * Unit tests for Result.
+ */
+public class ResultTest {
+
+ @Test
+ public void testLocked() {
+ Result<String> r = Result.locked();
+ assertFalse(r.success());
+ assertNull(r.value());
+ assertEquals(Result.Status.LOCKED, r.status());
+ }
+
+ @Test
+ public void testOk() {
+ Result<String> r = Result.ok("foo");
+ assertTrue(r.success());
+ assertEquals("foo", r.value());
+ assertEquals(Result.Status.OK, r.status());
+ }
+
+ @Test
+ public void testEquality() {
+ Result<String> r1 = Result.ok("foo");
+ Result<String> r2 = Result.locked();
+ Result<String> r3 = Result.ok("bar");
+ Result<String> r4 = Result.ok("foo");
+ assertTrue(r1.equals(r4));
+ assertFalse(r1.equals(r2));
+ assertFalse(r1.equals(r3));
+ assertFalse(r2.equals(r3));
+ }
+}