diff options
Diffstat (limited to 'src/test')
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(); + } +} |