blob: 7b791f43df233b262e0587baeb146a8e9f6722ee [file] [log] [blame]
Jon Hall672a3ed2017-04-05 13:03:37 -07001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2017-present Open Networking Foundation
Jon Hall672a3ed2017-04-05 13:03:37 -07003 *
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 */
16package org.onosproject.mastership;
17
Jordan Halterman0a2bd452018-06-13 17:24:58 -070018import com.google.common.collect.ImmutableMap;
Jon Hall672a3ed2017-04-05 13:03:37 -070019import com.google.common.testing.EqualsTester;
20import org.junit.Test;
21
22import org.onosproject.cluster.NodeId;
Jon Hall672a3ed2017-04-05 13:03:37 -070023import org.onosproject.net.DeviceId;
Jordan Halterman0a2bd452018-06-13 17:24:58 -070024import org.onosproject.net.MastershipRole;
Jon Hall672a3ed2017-04-05 13:03:37 -070025
Jordan Halterman0a2bd452018-06-13 17:24:58 -070026import java.util.Optional;
Jon Hall672a3ed2017-04-05 13:03:37 -070027
28import static org.hamcrest.Matchers.is;
29import static org.junit.Assert.assertThat;
30
31/**
32 * Unit tests for the mastership event.
33 */
34public class MastershipEventTest {
35 private final long time = System.currentTimeMillis();
36 private final DeviceId deviceId1 = DeviceId.deviceId("foo:bar");
37 private final DeviceId deviceId2 = DeviceId.deviceId("bar:baz");
38 private final NodeId node1 = new NodeId("1");
39 private final NodeId node2 = new NodeId("2");
Jordan Halterman0a2bd452018-06-13 17:24:58 -070040 private final MastershipInfo mastershipInfo1 = new MastershipInfo(
41 1,
42 Optional.of(node1),
43 ImmutableMap.<NodeId, MastershipRole>builder()
44 .put(node1, MastershipRole.MASTER)
45 .put(node2, MastershipRole.STANDBY)
46 .build());
47 private final MastershipInfo mastershipInfo2 = new MastershipInfo(
48 2,
49 Optional.of(node1),
50 ImmutableMap.<NodeId, MastershipRole>builder()
51 .put(node2, MastershipRole.MASTER)
52 .put(node1, MastershipRole.STANDBY)
53 .build());
Jon Hall672a3ed2017-04-05 13:03:37 -070054
55 private final MastershipEvent event1 =
Jordan Halterman0a2bd452018-06-13 17:24:58 -070056 new MastershipEvent(MastershipEvent.Type.BACKUPS_CHANGED, deviceId1, mastershipInfo1);
Jon Hall672a3ed2017-04-05 13:03:37 -070057 private final MastershipEvent event2 =
Jordan Halterman0a2bd452018-06-13 17:24:58 -070058 new MastershipEvent(MastershipEvent.Type.MASTER_CHANGED, deviceId1, mastershipInfo1);
Jon Hall672a3ed2017-04-05 13:03:37 -070059 private final MastershipEvent event3 =
Jordan Halterman0a2bd452018-06-13 17:24:58 -070060 new MastershipEvent(MastershipEvent.Type.SUSPENDED, deviceId1, mastershipInfo1);
Jon Hall672a3ed2017-04-05 13:03:37 -070061 private final MastershipEvent event4 =
Jordan Halterman0a2bd452018-06-13 17:24:58 -070062 new MastershipEvent(MastershipEvent.Type.MASTER_CHANGED, deviceId1, mastershipInfo2, time);
Jon Hall672a3ed2017-04-05 13:03:37 -070063 private final MastershipEvent sameAsEvent4 =
Jordan Halterman0a2bd452018-06-13 17:24:58 -070064 new MastershipEvent(MastershipEvent.Type.MASTER_CHANGED, deviceId1, mastershipInfo2, time);
Jon Hall672a3ed2017-04-05 13:03:37 -070065 private final MastershipEvent event5 =
Jordan Halterman0a2bd452018-06-13 17:24:58 -070066 new MastershipEvent(MastershipEvent.Type.BACKUPS_CHANGED, deviceId2, mastershipInfo1);
Jon Hall672a3ed2017-04-05 13:03:37 -070067
68 /**
69 * Tests for proper operation of equals(), hashCode() and toString() methods.
70 */
71 @Test
72 public void checkEquals() {
73 new EqualsTester()
74 .addEqualityGroup(event1)
75 .addEqualityGroup(event2)
76 .addEqualityGroup(event3)
77 .addEqualityGroup(event4, sameAsEvent4)
78 .addEqualityGroup(event5)
79 .testEquals();
80 }
81
82 /**
83 * Tests that objects are created properly.
84 */
85 @Test
86 public void checkConstruction() {
87 assertThat(event1.type(), is(MastershipEvent.Type.BACKUPS_CHANGED));
88 assertThat(event1.subject(), is(deviceId1));
Jordan Halterman0a2bd452018-06-13 17:24:58 -070089 assertThat(event1.mastershipInfo(), is(mastershipInfo1));
Jon Hall672a3ed2017-04-05 13:03:37 -070090
91 assertThat(event4.time(), is(time));
92 assertThat(event4.type(), is(MastershipEvent.Type.MASTER_CHANGED));
93 assertThat(event4.subject(), is(deviceId1));
Jordan Halterman0a2bd452018-06-13 17:24:58 -070094 assertThat(event4.mastershipInfo(), is(mastershipInfo2));
Jon Hall672a3ed2017-04-05 13:03:37 -070095 }
96
97}