Committed by
Brian O'Connor
Unit tests for Leadership and LeadershipEvent classes
Change-Id: I0bd902348607f27976ad39f18ec4b3fc6f1b1d1a
Showing
3 changed files
with
156 additions
and
2 deletions
... | @@ -132,7 +132,7 @@ public class Leadership { | ... | @@ -132,7 +132,7 @@ public class Leadership { |
132 | 132 | ||
133 | @Override | 133 | @Override |
134 | public int hashCode() { | 134 | public int hashCode() { |
135 | - return Objects.hash(topic, leader, candidates, epoch); | 135 | + return Objects.hash(topic, leader, candidates, epoch, electedTime); |
136 | } | 136 | } |
137 | 137 | ||
138 | @Override | 138 | @Override |
... | @@ -143,7 +143,10 @@ public class Leadership { | ... | @@ -143,7 +143,10 @@ public class Leadership { |
143 | if (obj instanceof Leadership) { | 143 | if (obj instanceof Leadership) { |
144 | final Leadership other = (Leadership) obj; | 144 | final Leadership other = (Leadership) obj; |
145 | return Objects.equals(this.topic, other.topic) && | 145 | return Objects.equals(this.topic, other.topic) && |
146 | - Objects.equals(this.epoch, other.epoch); | 146 | + Objects.equals(this.leader, other.leader) && |
147 | + Objects.equals(this.candidates, other.candidates) && | ||
148 | + Objects.equals(this.epoch, other.epoch) && | ||
149 | + Objects.equals(this.electedTime, other.electedTime); | ||
147 | } | 150 | } |
148 | return false; | 151 | return false; |
149 | } | 152 | } | ... | ... |
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.cluster; | ||
17 | + | ||
18 | +import org.junit.Test; | ||
19 | + | ||
20 | +import com.google.common.testing.EqualsTester; | ||
21 | + | ||
22 | +import static org.hamcrest.Matchers.is; | ||
23 | +import static org.junit.Assert.assertThat; | ||
24 | + | ||
25 | +/** | ||
26 | + * Unit tests for the leadership event test. | ||
27 | + */ | ||
28 | +public class LeadershipEventTest { | ||
29 | + private final NodeId node1 = new NodeId("1"); | ||
30 | + private final NodeId node2 = new NodeId("2"); | ||
31 | + private final Leadership lead1 = new Leadership("topic1", node1, 1L, 2L); | ||
32 | + private final Leadership lead2 = new Leadership("topic1", node2, 1L, 2L); | ||
33 | + private final LeadershipEvent event1 = | ||
34 | + new LeadershipEvent(LeadershipEvent.Type.LEADER_ELECTED, lead1); | ||
35 | + private final long time = System.currentTimeMillis(); | ||
36 | + private final LeadershipEvent event2 = | ||
37 | + new LeadershipEvent(LeadershipEvent.Type.CANDIDATES_CHANGED, | ||
38 | + lead2, time); | ||
39 | + private final LeadershipEvent sameAsEvent2 = | ||
40 | + new LeadershipEvent(LeadershipEvent.Type.CANDIDATES_CHANGED, | ||
41 | + lead2, time); | ||
42 | + private final LeadershipEvent event3 = | ||
43 | + new LeadershipEvent(LeadershipEvent.Type.LEADER_BOOTED, lead1); | ||
44 | + private final LeadershipEvent event4 = | ||
45 | + new LeadershipEvent(LeadershipEvent.Type.LEADER_REELECTED, lead1); | ||
46 | + private final LeadershipEvent event5 = | ||
47 | + new LeadershipEvent(LeadershipEvent.Type.LEADER_REELECTED, lead2); | ||
48 | + | ||
49 | + /** | ||
50 | + * Tests for proper operation of equals(), hashCode() and toString() methods. | ||
51 | + */ | ||
52 | + @Test | ||
53 | + public void checkEquals() { | ||
54 | + new EqualsTester() | ||
55 | + .addEqualityGroup(event1) | ||
56 | + .addEqualityGroup(event2, sameAsEvent2) | ||
57 | + .addEqualityGroup(event3) | ||
58 | + .addEqualityGroup(event4) | ||
59 | + .addEqualityGroup(event5) | ||
60 | + .testEquals(); | ||
61 | + } | ||
62 | + | ||
63 | + /** | ||
64 | + * Tests that objects are created properly. | ||
65 | + */ | ||
66 | + @Test | ||
67 | + public void checkConstruction() { | ||
68 | + assertThat(event1.type(), is(LeadershipEvent.Type.LEADER_ELECTED)); | ||
69 | + assertThat(event1.subject(), is(lead1)); | ||
70 | + | ||
71 | + assertThat(event2.time(), is(time)); | ||
72 | + assertThat(event2.type(), is(LeadershipEvent.Type.CANDIDATES_CHANGED)); | ||
73 | + assertThat(event2.subject(), is(lead2)); | ||
74 | + } | ||
75 | + | ||
76 | +} |
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.cluster; | ||
17 | + | ||
18 | +import org.junit.Test; | ||
19 | + | ||
20 | +import com.google.common.collect.ImmutableList; | ||
21 | +import com.google.common.testing.EqualsTester; | ||
22 | + | ||
23 | +import static org.hamcrest.Matchers.contains; | ||
24 | +import static org.hamcrest.Matchers.hasSize; | ||
25 | +import static org.hamcrest.Matchers.is; | ||
26 | +import static org.junit.Assert.assertThat; | ||
27 | + | ||
28 | +/** | ||
29 | + * Unit tests for the Leadership class. | ||
30 | + */ | ||
31 | +public class LeadershipTest { | ||
32 | + private final NodeId node1 = new NodeId("1"); | ||
33 | + private final NodeId node2 = new NodeId("2"); | ||
34 | + private final Leadership lead1 = new Leadership("topic1", node1, 1L, 2L); | ||
35 | + private final Leadership sameAsLead1 = new Leadership("topic1", node1, 1L, 2L); | ||
36 | + private final Leadership lead2 = new Leadership("topic2", node1, 1L, 2L); | ||
37 | + private final Leadership lead3 = new Leadership("topic1", node1, 2L, 2L); | ||
38 | + private final Leadership lead4 = new Leadership("topic1", node1, 3L, 2L); | ||
39 | + private final Leadership lead5 = new Leadership("topic1", node1, 3L, 3L); | ||
40 | + private final Leadership lead6 = new Leadership("topic1", node1, | ||
41 | + ImmutableList.of(node2), 1L, 2L); | ||
42 | + private final Leadership lead7 = new Leadership("topic1", | ||
43 | + ImmutableList.of(node2), 1L, 2L); | ||
44 | + | ||
45 | + /** | ||
46 | + * Tests for proper operation of equals(), hashCode() and toString() methods. | ||
47 | + */ | ||
48 | + @Test | ||
49 | + public void checkEquals() { | ||
50 | + new EqualsTester() | ||
51 | + .addEqualityGroup(lead1, sameAsLead1) | ||
52 | + .addEqualityGroup(lead2) | ||
53 | + .addEqualityGroup(lead3) | ||
54 | + .addEqualityGroup(lead4) | ||
55 | + .addEqualityGroup(lead5) | ||
56 | + .addEqualityGroup(lead6) | ||
57 | + .addEqualityGroup(lead7) | ||
58 | + .testEquals(); | ||
59 | + } | ||
60 | + | ||
61 | + /** | ||
62 | + * Tests that objects are created properly and accessor methods return | ||
63 | + * the correct vsalues. | ||
64 | + */ | ||
65 | + @Test | ||
66 | + public void checkConstruction() { | ||
67 | + assertThat(lead6.electedTime(), is(2L)); | ||
68 | + assertThat(lead6.epoch(), is(1L)); | ||
69 | + assertThat(lead6.leader(), is(node1)); | ||
70 | + assertThat(lead6.topic(), is("topic1")); | ||
71 | + assertThat(lead6.candidates(), hasSize(1)); | ||
72 | + assertThat(lead6.candidates(), contains(node2)); | ||
73 | + } | ||
74 | + | ||
75 | +} |
-
Please register or login to post a comment