Unit tests for Leadership and LeadershipEvent classes
Change-Id: I0bd902348607f27976ad39f18ec4b3fc6f1b1d1a
diff --git a/core/api/src/main/java/org/onosproject/cluster/Leadership.java b/core/api/src/main/java/org/onosproject/cluster/Leadership.java
index 44a05a6..113e19c 100644
--- a/core/api/src/main/java/org/onosproject/cluster/Leadership.java
+++ b/core/api/src/main/java/org/onosproject/cluster/Leadership.java
@@ -132,7 +132,7 @@
@Override
public int hashCode() {
- return Objects.hash(topic, leader, candidates, epoch);
+ return Objects.hash(topic, leader, candidates, epoch, electedTime);
}
@Override
@@ -143,7 +143,10 @@
if (obj instanceof Leadership) {
final Leadership other = (Leadership) obj;
return Objects.equals(this.topic, other.topic) &&
- Objects.equals(this.epoch, other.epoch);
+ Objects.equals(this.leader, other.leader) &&
+ Objects.equals(this.candidates, other.candidates) &&
+ Objects.equals(this.epoch, other.epoch) &&
+ Objects.equals(this.electedTime, other.electedTime);
}
return false;
}
diff --git a/core/api/src/test/java/org/onosproject/cluster/LeadershipEventTest.java b/core/api/src/test/java/org/onosproject/cluster/LeadershipEventTest.java
new file mode 100644
index 0000000..be0321b
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/cluster/LeadershipEventTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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.cluster;
+
+import org.junit.Test;
+
+import com.google.common.testing.EqualsTester;
+
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit tests for the leadership event test.
+ */
+public class LeadershipEventTest {
+ private final NodeId node1 = new NodeId("1");
+ private final NodeId node2 = new NodeId("2");
+ private final Leadership lead1 = new Leadership("topic1", node1, 1L, 2L);
+ private final Leadership lead2 = new Leadership("topic1", node2, 1L, 2L);
+ private final LeadershipEvent event1 =
+ new LeadershipEvent(LeadershipEvent.Type.LEADER_ELECTED, lead1);
+ private final long time = System.currentTimeMillis();
+ private final LeadershipEvent event2 =
+ new LeadershipEvent(LeadershipEvent.Type.CANDIDATES_CHANGED,
+ lead2, time);
+ private final LeadershipEvent sameAsEvent2 =
+ new LeadershipEvent(LeadershipEvent.Type.CANDIDATES_CHANGED,
+ lead2, time);
+ private final LeadershipEvent event3 =
+ new LeadershipEvent(LeadershipEvent.Type.LEADER_BOOTED, lead1);
+ private final LeadershipEvent event4 =
+ new LeadershipEvent(LeadershipEvent.Type.LEADER_REELECTED, lead1);
+ private final LeadershipEvent event5 =
+ new LeadershipEvent(LeadershipEvent.Type.LEADER_REELECTED, lead2);
+
+ /**
+ * Tests for proper operation of equals(), hashCode() and toString() methods.
+ */
+ @Test
+ public void checkEquals() {
+ new EqualsTester()
+ .addEqualityGroup(event1)
+ .addEqualityGroup(event2, sameAsEvent2)
+ .addEqualityGroup(event3)
+ .addEqualityGroup(event4)
+ .addEqualityGroup(event5)
+ .testEquals();
+ }
+
+ /**
+ * Tests that objects are created properly.
+ */
+ @Test
+ public void checkConstruction() {
+ assertThat(event1.type(), is(LeadershipEvent.Type.LEADER_ELECTED));
+ assertThat(event1.subject(), is(lead1));
+
+ assertThat(event2.time(), is(time));
+ assertThat(event2.type(), is(LeadershipEvent.Type.CANDIDATES_CHANGED));
+ assertThat(event2.subject(), is(lead2));
+ }
+
+}
diff --git a/core/api/src/test/java/org/onosproject/cluster/LeadershipTest.java b/core/api/src/test/java/org/onosproject/cluster/LeadershipTest.java
new file mode 100644
index 0000000..e2a8658
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/cluster/LeadershipTest.java
@@ -0,0 +1,75 @@
+/*
+ * 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.cluster;
+
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.testing.EqualsTester;
+
+import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.Matchers.hasSize;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit tests for the Leadership class.
+ */
+public class LeadershipTest {
+ private final NodeId node1 = new NodeId("1");
+ private final NodeId node2 = new NodeId("2");
+ private final Leadership lead1 = new Leadership("topic1", node1, 1L, 2L);
+ private final Leadership sameAsLead1 = new Leadership("topic1", node1, 1L, 2L);
+ private final Leadership lead2 = new Leadership("topic2", node1, 1L, 2L);
+ private final Leadership lead3 = new Leadership("topic1", node1, 2L, 2L);
+ private final Leadership lead4 = new Leadership("topic1", node1, 3L, 2L);
+ private final Leadership lead5 = new Leadership("topic1", node1, 3L, 3L);
+ private final Leadership lead6 = new Leadership("topic1", node1,
+ ImmutableList.of(node2), 1L, 2L);
+ private final Leadership lead7 = new Leadership("topic1",
+ ImmutableList.of(node2), 1L, 2L);
+
+ /**
+ * Tests for proper operation of equals(), hashCode() and toString() methods.
+ */
+ @Test
+ public void checkEquals() {
+ new EqualsTester()
+ .addEqualityGroup(lead1, sameAsLead1)
+ .addEqualityGroup(lead2)
+ .addEqualityGroup(lead3)
+ .addEqualityGroup(lead4)
+ .addEqualityGroup(lead5)
+ .addEqualityGroup(lead6)
+ .addEqualityGroup(lead7)
+ .testEquals();
+ }
+
+ /**
+ * Tests that objects are created properly and accessor methods return
+ * the correct vsalues.
+ */
+ @Test
+ public void checkConstruction() {
+ assertThat(lead6.electedTime(), is(2L));
+ assertThat(lead6.epoch(), is(1L));
+ assertThat(lead6.leader(), is(node1));
+ assertThat(lead6.topic(), is("topic1"));
+ assertThat(lead6.candidates(), hasSize(1));
+ assertThat(lead6.candidates(), contains(node2));
+ }
+
+}