Add unit tests for cluster messaging classes
Change-Id: I77dd4155956dca77e86e9990c7d4f5de394c0e87
diff --git a/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessageSubject.java b/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessageSubject.java
index d81e6f1..8d5e313 100644
--- a/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessageSubject.java
+++ b/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessageSubject.java
@@ -24,7 +24,7 @@
* Cluster messages have associated subjects that dictate how they get handled
* on the receiving side.
*/
-public class MessageSubject {
+public final class MessageSubject {
private final String value;
diff --git a/core/api/src/test/java/org/onosproject/store/cluster/messaging/ClusterMessageTest.java b/core/api/src/test/java/org/onosproject/store/cluster/messaging/ClusterMessageTest.java
new file mode 100644
index 0000000..22f841b
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/store/cluster/messaging/ClusterMessageTest.java
@@ -0,0 +1,82 @@
+/*
+ * 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.store.cluster.messaging;
+
+import org.junit.Test;
+import org.onosproject.cluster.NodeId;
+
+import com.google.common.testing.EqualsTester;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+
+/**
+ * Units tests for ClusterMessage class.
+ */
+public class ClusterMessageTest {
+ private final MessageSubject subject1 = new MessageSubject("Message 1");
+ private final MessageSubject subject2 = new MessageSubject("Message 2");
+
+ private final byte[] payload1 = {0, 1, 2, 3, 4, 5};
+ private final byte[] payload2 = {0, 1, 2, 3, 4, 5, 6};
+
+ private final NodeId nodeId = new NodeId("node");
+
+ private final ClusterMessage message1 =
+ new ClusterMessage(nodeId, subject1, payload1);
+ private final ClusterMessage sameAsMessage1 =
+ new ClusterMessage(nodeId, subject1, payload1);
+ private final ClusterMessage message2 =
+ new ClusterMessage(nodeId, subject1, payload2);
+ private final ClusterMessage message3 =
+ new ClusterMessage(nodeId, subject2, payload1);
+
+ /**
+ * Checks the operation of equals(), hashCode() and toString() methods.
+ */
+ @Test
+ public void testEquals() {
+ new EqualsTester()
+ .addEqualityGroup(message1, sameAsMessage1)
+ .addEqualityGroup(message2)
+ .addEqualityGroup(message3)
+ .testEquals();
+ }
+
+ /**
+ * Checks the construction of a FlowId object.
+ */
+ @Test
+ public void testConstruction() {
+ assertThat(message1.payload(), is(payload1));
+ assertThat(message1.sender(), is(nodeId));
+ assertThat(message1.subject(), is(subject1));
+
+ byte[] response = {2, 2, 2, 2, 2, 2, 2, 2};
+ message1.respond(response);
+ assertThat(message1.response(), is(response));
+ }
+
+ /**
+ * Tests the toBytes and fromBytes methods.
+ */
+ @Test
+ public void testByteMethods() {
+ byte[] fromBytes = message3.getBytes();
+ ClusterMessage message = ClusterMessage.fromBytes(fromBytes);
+ assertThat(message, is(message3));
+ }
+}
diff --git a/core/api/src/test/java/org/onosproject/store/cluster/messaging/EndpointTest.java b/core/api/src/test/java/org/onosproject/store/cluster/messaging/EndpointTest.java
new file mode 100644
index 0000000..c88c711
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/store/cluster/messaging/EndpointTest.java
@@ -0,0 +1,68 @@
+/*
+ * 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.store.cluster.messaging;
+
+
+import org.junit.Test;
+import org.onlab.packet.IpAddress;
+
+import com.google.common.testing.EqualsTester;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
+
+/**
+ * Unit tests for the Endpoint class.
+ */
+public class EndpointTest {
+ IpAddress host1 = IpAddress.valueOf("1.2.3.4");
+ IpAddress host2 = IpAddress.valueOf("1.2.3.5");
+
+ private final Endpoint endpoint1 = new Endpoint(host1, 1);
+ private final Endpoint sameAsEndpoint1 = new Endpoint(host1, 1);
+ private final Endpoint endpoint2 = new Endpoint(host2, 1);
+ private final Endpoint endpoint3 = new Endpoint(host1, 2);
+
+ /**
+ * Checks that the MessageSubject class is immutable.
+ */
+ @Test
+ public void testImmutability() {
+ assertThatClassIsImmutable(Endpoint.class);
+ }
+
+ /**
+ * Checks the operation of equals(), hashCode() and toString() methods.
+ */
+ @Test
+ public void testEquals() {
+ new EqualsTester()
+ .addEqualityGroup(endpoint1, sameAsEndpoint1)
+ .addEqualityGroup(endpoint2)
+ .addEqualityGroup(endpoint3)
+ .testEquals();
+ }
+
+ /**
+ * Checks the construction of a MessageSubject object.
+ */
+ @Test
+ public void testConstruction() {
+ assertThat(endpoint2.host(), is(host2));
+ assertThat(endpoint2.port(), is(1));
+ }
+}
diff --git a/core/api/src/test/java/org/onosproject/store/cluster/messaging/MessageSubjectTest.java b/core/api/src/test/java/org/onosproject/store/cluster/messaging/MessageSubjectTest.java
new file mode 100644
index 0000000..498edd3
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/store/cluster/messaging/MessageSubjectTest.java
@@ -0,0 +1,64 @@
+/*
+ * 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.store.cluster.messaging;
+
+import org.junit.Test;
+
+import com.google.common.testing.EqualsTester;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
+
+/**
+ * Unit tests for MessageSubject class.
+ */
+public class MessageSubjectTest {
+ private final MessageSubject subject1 = new MessageSubject("Message 1");
+ private final MessageSubject sameAsSubject1 = new MessageSubject("Message 1");
+ private final MessageSubject subject2 = new MessageSubject("Message 2");
+ private final MessageSubject subject3 = new MessageSubject("Message 3");
+
+ /**
+ * Checks that the MessageSubject class is immutable.
+ */
+ @Test
+ public void testImmutability() {
+ assertThatClassIsImmutable(MessageSubject.class);
+ }
+
+ /**
+ * Checks the operation of equals(), hashCode() and toString() methods.
+ */
+ @Test
+ public void testEquals() {
+ new EqualsTester()
+ .addEqualityGroup(subject1, sameAsSubject1)
+ .addEqualityGroup(subject2)
+ .addEqualityGroup(subject3)
+ .testEquals();
+ }
+
+ /**
+ * Checks the construction of a MessageSubject object.
+ */
+ @Test
+ public void testConstruction() {
+ assertThat(subject3.value(), is("Message 3"));
+ MessageSubject serializerObject = new MessageSubject();
+ assertThat(serializerObject.value(), is(""));
+ }
+}