LeadershipStore updates:
- Now tracking leader and candidates for a topic using a single map.
- Using term numbers that are incremented by one every time a new leader is elected.
- Introduced a separate LeadershipStore to conform to the manager-store pattern
Change-Id: I1d03a6c5e8ff0e68ef0c1e3a6c2d425c4856e470
diff --git a/core/api/src/test/java/org/onosproject/cluster/LeadershipEventTest.java b/core/api/src/test/java/org/onosproject/cluster/LeadershipEventTest.java
index be0321b..792d295 100644
--- a/core/api/src/test/java/org/onosproject/cluster/LeadershipEventTest.java
+++ b/core/api/src/test/java/org/onosproject/cluster/LeadershipEventTest.java
@@ -15,6 +15,8 @@
*/
package org.onosproject.cluster;
+import java.util.Arrays;
+
import org.junit.Test;
import com.google.common.testing.EqualsTester;
@@ -28,10 +30,11 @@
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 Leadership lead1 = new Leadership("topic1", new Leader(node1, 1L, 2L), Arrays.asList(node1));
+ private final Leadership lead2 = new Leadership("topic1", new Leader(node1, 1L, 2L), Arrays.asList(node1, node2));
+ private final Leadership lead3 = new Leadership("topic1", new Leader(node2, 1L, 2L), Arrays.asList(node2));
private final LeadershipEvent event1 =
- new LeadershipEvent(LeadershipEvent.Type.LEADER_ELECTED, lead1);
+ new LeadershipEvent(LeadershipEvent.Type.LEADER_CHANGED, lead1);
private final long time = System.currentTimeMillis();
private final LeadershipEvent event2 =
new LeadershipEvent(LeadershipEvent.Type.CANDIDATES_CHANGED,
@@ -40,11 +43,9 @@
new LeadershipEvent(LeadershipEvent.Type.CANDIDATES_CHANGED,
lead2, time);
private final LeadershipEvent event3 =
- new LeadershipEvent(LeadershipEvent.Type.LEADER_BOOTED, lead1);
+ new LeadershipEvent(LeadershipEvent.Type.LEADER_CHANGED, lead2);
private final LeadershipEvent event4 =
- new LeadershipEvent(LeadershipEvent.Type.LEADER_REELECTED, lead1);
- private final LeadershipEvent event5 =
- new LeadershipEvent(LeadershipEvent.Type.LEADER_REELECTED, lead2);
+ new LeadershipEvent(LeadershipEvent.Type.LEADER_AND_CANDIDATES_CHANGED, lead3);
/**
* Tests for proper operation of equals(), hashCode() and toString() methods.
@@ -56,7 +57,6 @@
.addEqualityGroup(event2, sameAsEvent2)
.addEqualityGroup(event3)
.addEqualityGroup(event4)
- .addEqualityGroup(event5)
.testEquals();
}
@@ -65,7 +65,7 @@
*/
@Test
public void checkConstruction() {
- assertThat(event1.type(), is(LeadershipEvent.Type.LEADER_ELECTED));
+ assertThat(event1.type(), is(LeadershipEvent.Type.LEADER_CHANGED));
assertThat(event1.subject(), is(lead1));
assertThat(event2.time(), is(time));
diff --git a/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java b/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java
index e1d421d..72595e4 100644
--- a/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java
+++ b/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java
@@ -18,7 +18,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.CompletableFuture;
/**
* Test adapter for leadership service.
@@ -41,13 +40,12 @@
}
@Override
- public CompletableFuture<Leadership> runForLeadership(String path) {
+ public Leadership runForLeadership(String path) {
return null;
}
@Override
- public CompletableFuture<Void> withdraw(String path) {
- return null;
+ public void withdraw(String path) {
}
@Override
@@ -74,14 +72,4 @@
public List<NodeId> getCandidates(String path) {
return null;
}
-
- @Override
- public boolean stepdown(String path) {
- return false;
- }
-
- @Override
- public boolean makeTopCandidate(String path, NodeId nodeId) {
- return false;
- }
}
\ No newline at end of file
diff --git a/core/api/src/test/java/org/onosproject/cluster/LeadershipTest.java b/core/api/src/test/java/org/onosproject/cluster/LeadershipTest.java
index e2a8658..defc671 100644
--- a/core/api/src/test/java/org/onosproject/cluster/LeadershipTest.java
+++ b/core/api/src/test/java/org/onosproject/cluster/LeadershipTest.java
@@ -15,12 +15,13 @@
*/
package org.onosproject.cluster;
+import java.util.Arrays;
+
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;
@@ -31,16 +32,14 @@
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);
+ private final Leadership lead1 = new Leadership("topic1", new Leader(node1, 1L, 2L), Arrays.asList(node1));
+ private final Leadership sameAsLead1 = new Leadership("topic1", new Leader(node1, 1L, 2L), Arrays.asList(node1));
+ private final Leadership lead2 = new Leadership("topic2", new Leader(node1, 1L, 2L), Arrays.asList(node1));
+ private final Leadership lead3 = new Leadership("topic1", new Leader(node1, 2L, 2L), Arrays.asList(node1));
+ private final Leadership lead4 = new Leadership("topic1", new Leader(node1, 3L, 2L), Arrays.asList(node1));
+ private final Leadership lead5 = new Leadership("topic1", new Leader(node1, 3L, 3L), Arrays.asList(node1));
+ private final Leadership lead6 = new Leadership("topic1", new Leader(node2, 1L, 2L), Arrays.asList(node2, node1));
+ private final Leadership lead7 = new Leadership("topic1", null, ImmutableList.of());
/**
* Tests for proper operation of equals(), hashCode() and toString() methods.
@@ -64,12 +63,10 @@
*/
@Test
public void checkConstruction() {
- assertThat(lead6.electedTime(), is(2L));
- assertThat(lead6.epoch(), is(1L));
- assertThat(lead6.leader(), is(node1));
+ assertThat(lead6.leader(), is(new Leader(node2, 1L, 2L)));
assertThat(lead6.topic(), is("topic1"));
- assertThat(lead6.candidates(), hasSize(1));
- assertThat(lead6.candidates(), contains(node2));
+ assertThat(lead6.candidates(), hasSize(2));
+ assertThat(lead6.candidates().get(1), is(node1));
+ assertThat(lead6.candidates().get(0), is(node2));
}
-
}