summaryrefslogtreecommitdiffstats
path: root/src/test/java
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-11-23 13:22:07 -0500
committerSam Anthony <sam@samanthony.xyz>2024-11-23 13:22:07 -0500
commite3b72053e8b04f2df013da0d7d49fe33927461a9 (patch)
treecdefb9adc63971655ad0bae7d799e28db46dc441 /src/test/java
parent1272127b76fa70739adac269698018bc12a3d696 (diff)
downloadsoen423-e3b72053e8b04f2df013da0d7d49fe33927461a9.zip
very basic tests
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/derms/net/StringMessage.java34
-rw-r--r--src/test/java/derms/net/rmulticast/ReliableMulticastTest.java41
-rw-r--r--src/test/java/derms/net/runicast/ReliableUnicastTest.java45
-rw-r--r--src/test/java/derms/net/tomulticast/TotalOrderMulticastTest.java37
4 files changed, 157 insertions, 0 deletions
diff --git a/src/test/java/derms/net/StringMessage.java b/src/test/java/derms/net/StringMessage.java
new file mode 100644
index 0000000..9f648b6
--- /dev/null
+++ b/src/test/java/derms/net/StringMessage.java
@@ -0,0 +1,34 @@
+package derms.net;
+
+public class StringMessage implements MessagePayload {
+ String s;
+
+ public StringMessage(String s) {
+ this.s = s;
+ }
+
+ @Override
+ public int hash() {
+ return s.hashCode();
+ }
+
+ @Override
+ public int hashCode() {
+ return hash();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null)
+ return false;
+ if (obj.getClass() != this.getClass())
+ return false;
+ StringMessage other = (StringMessage) obj;
+ return other.s.equals(this.s);
+ }
+
+ @Override
+ public String toString() {
+ return s;
+ }
+}
diff --git a/src/test/java/derms/net/rmulticast/ReliableMulticastTest.java b/src/test/java/derms/net/rmulticast/ReliableMulticastTest.java
new file mode 100644
index 0000000..9d272d5
--- /dev/null
+++ b/src/test/java/derms/net/rmulticast/ReliableMulticastTest.java
@@ -0,0 +1,41 @@
+package derms.net.rmulticast;
+
+import derms.net.StringMessage;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.util.concurrent.TimeUnit;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+class ReliableMulticastTest {
+ static final InetSocketAddress group = new InetSocketAddress("225.1.2.3", 12345);
+
+ static ReliableMulticast<StringMessage> sock;
+
+ @BeforeAll
+ static void setup() throws IOException {
+ InetAddress laddr = InetAddress.getLocalHost();
+ sock = new ReliableMulticast<StringMessage>(group, laddr);
+ }
+
+ @AfterAll
+ static void teardown() throws IOException {
+ sock.close();
+ }
+
+ // A process should receive its own messages that it sent to the group.
+ @Test
+ @Timeout(value = 3, unit = TimeUnit.SECONDS)
+ void loopback() throws IOException, InterruptedException {
+ StringMessage want = new StringMessage("foo");
+ sock.send(want);
+ StringMessage got = sock.receive();
+ assertEquals(want, got);
+ }
+}
diff --git a/src/test/java/derms/net/runicast/ReliableUnicastTest.java b/src/test/java/derms/net/runicast/ReliableUnicastTest.java
new file mode 100644
index 0000000..0a66315
--- /dev/null
+++ b/src/test/java/derms/net/runicast/ReliableUnicastTest.java
@@ -0,0 +1,45 @@
+package derms.net.runicast;
+
+import derms.net.StringMessage;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class ReliableUnicastTest {
+ static final int port = 12345;
+
+ static InetAddress laddr;
+
+ @BeforeAll
+ static void setup() throws UnknownHostException {
+ laddr = InetAddress.getLocalHost();
+ }
+
+ @Test
+ void openClose() throws IOException, InterruptedException {
+ ReliableUnicastSender<StringMessage> sender = new ReliableUnicastSender<StringMessage>(new InetSocketAddress(laddr, port));
+ ReliableUnicastReceiver<StringMessage> receiver = new ReliableUnicastReceiver<StringMessage>(new InetSocketAddress(laddr, port));
+ sender.close();
+ receiver.close();
+ }
+
+ @Test
+ void sendRecv() throws IOException, InterruptedException {
+ ReliableUnicastSender<StringMessage> sender = new ReliableUnicastSender<StringMessage>(new InetSocketAddress(laddr, port));
+ ReliableUnicastReceiver<StringMessage> receiver = new ReliableUnicastReceiver<StringMessage>(new InetSocketAddress(laddr, port));
+
+ StringMessage want = new StringMessage("foo");
+ sender.send(want);
+ StringMessage got = receiver.receive();
+ assertEquals(want, got);
+
+ sender.close();
+ receiver.close();
+ }
+}
diff --git a/src/test/java/derms/net/tomulticast/TotalOrderMulticastTest.java b/src/test/java/derms/net/tomulticast/TotalOrderMulticastTest.java
new file mode 100644
index 0000000..aa488b0
--- /dev/null
+++ b/src/test/java/derms/net/tomulticast/TotalOrderMulticastTest.java
@@ -0,0 +1,37 @@
+package derms.net.tomulticast;
+
+import derms.net.StringMessage;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class TotalOrderMulticastTest {
+ static final InetSocketAddress group = new InetSocketAddress("225.1.2.3", 12345);
+
+ static InetAddress laddr;
+
+ @BeforeAll
+ static void setup() throws UnknownHostException {
+ laddr = InetAddress.getLocalHost();
+ }
+
+ @Test
+ void sendRecv1() throws IOException, InterruptedException {
+ TotalOrderMulticastSender<StringMessage> sender = new TotalOrderMulticastSender<StringMessage>(group, laddr);
+ TotalOrderMulticastReceiver<StringMessage> receiver = new TotalOrderMulticastReceiver<StringMessage>(group, laddr);
+
+ StringMessage want = new StringMessage("foo");
+ sender.send(want);
+ StringMessage got = receiver.receive();
+ assertEquals(want, got);
+
+ receiver.close();
+ sender.close();
+ }
+}