From: Matthew Endsley Date: Wed, 3 Feb 2021 11:03:38 +0000 (-0800) Subject: Delegate listener and connection creation to subclass X-Git-Tag: 1.0.0~20^2~7^2~3 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=94f52b9765a833d75bf59bafee283469d3c12a80;p=rhonda%2Fimpostor.hazel.git Delegate listener and connection creation to subclass --- diff --git a/Hazel.UnitTests/ThreadLimitedUdpConnectionTests.cs b/Hazel.UnitTests/ThreadLimitedUdpConnectionTests.cs index dc04aeb..56a2748 100644 --- a/Hazel.UnitTests/ThreadLimitedUdpConnectionTests.cs +++ b/Hazel.UnitTests/ThreadLimitedUdpConnectionTests.cs @@ -11,10 +11,22 @@ namespace Hazel.UnitTests [TestClass] public class ThreadLimitedUdpConnectionTests : BaseThreadLimitedUdpConnectionTests { + protected override ThreadLimitedUdpConnectionListener CreateListener(int numWorkers, IPEndPoint endPoint, ILogger logger, IPMode ipMode = IPMode.IPv4) + { + return new ThreadLimitedUdpConnectionListener(numWorkers, endPoint, logger, ipMode); + } + + protected override UdpConnection CreateConnection(IPEndPoint endPoint, ILogger logger, IPMode ipMode = IPMode.IPv4) + { + return new UdpClientConnection(endPoint, ipMode); + } } public abstract class BaseThreadLimitedUdpConnectionTests { + protected abstract ThreadLimitedUdpConnectionListener CreateListener(int numWorkers, IPEndPoint endPoint, ILogger logger, IPMode ipMode = IPMode.IPv4); + protected abstract UdpConnection CreateConnection(IPEndPoint endPoint, ILogger logger, IPMode ipMode = IPMode.IPv4); + [TestMethod] public void ServerDisposeDisconnectsTest() { @@ -24,8 +36,8 @@ namespace Hazel.UnitTests bool serverDisconnected = false; bool clientDisconnected = false; - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(ep)) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(ep, new NullLogger())) { listener.NewConnection += (evt) => { @@ -56,8 +68,8 @@ namespace Hazel.UnitTests bool serverDisconnected = false; bool clientDisconnected = false; - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(ep)) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(ep, new NullLogger())) { listener.NewConnection += (evt) => { @@ -89,8 +101,8 @@ namespace Hazel.UnitTests { IPEndPoint ep = new IPEndPoint(IPAddress.Loopback, 4296); - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(ep)) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(ep, new NullLogger())) { listener.Start(); @@ -110,8 +122,8 @@ namespace Hazel.UnitTests public void UdpHandshakeTest() { byte[] TestData = new byte[] { 1, 2, 3, 4, 5, 6 }; - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { listener.Start(); @@ -135,8 +147,8 @@ namespace Hazel.UnitTests public void UdpUnreliableMessageSendTest() { byte[] TestData = new byte[] { 1, 2, 3, 4, 5, 6 }; - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { MessageReader output = null; listener.NewConnection += delegate (NewConnectionEventArgs e) @@ -172,8 +184,8 @@ namespace Hazel.UnitTests [TestMethod] public void UdpIPv4ConnectionTest() { - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { listener.Start(); @@ -187,7 +199,7 @@ namespace Hazel.UnitTests [TestMethod] public void ConnectLikeAJerkTest() { - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) { int connects = 0; @@ -221,7 +233,7 @@ namespace Hazel.UnitTests public void MixedConnectionTest() { - using (ThreadLimitedUdpConnectionListener listener2 = new ThreadLimitedUdpConnectionListener(4, new IPEndPoint(IPAddress.IPv6Any, 4296), new ConsoleLogger(), IPMode.IPv6)) + using (ThreadLimitedUdpConnectionListener listener2 = this.CreateListener(4, new IPEndPoint(IPAddress.IPv6Any, 4296), new ConsoleLogger(), IPMode.IPv6)) { listener2.Start(); @@ -230,13 +242,13 @@ namespace Hazel.UnitTests Console.WriteLine($"Connection: {evt.Connection.EndPoint}"); }; - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4296))) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4296), new NullLogger())) { connection.Connect(); Assert.AreEqual(ConnectionState.Connected, connection.State); } - using (UdpConnection connection2 = new UdpClientConnection(new IPEndPoint(IPAddress.IPv6Loopback, 4296), IPMode.IPv6)) + using (UdpConnection connection2 = this.CreateConnection(new IPEndPoint(IPAddress.IPv6Loopback, 4296), new NullLogger(), IPMode.IPv6)) { connection2.Connect(); Assert.AreEqual(ConnectionState.Connected, connection2.State); @@ -250,11 +262,11 @@ namespace Hazel.UnitTests [TestMethod] public void UdpIPv6ConnectionTest() { - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger(), IPMode.IPv6)) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger(), IPMode.IPv6)) { listener.Start(); - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4296), IPMode.IPv6)) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4296), new NullLogger(), IPMode.IPv6)) { connection.Connect(); } @@ -267,8 +279,8 @@ namespace Hazel.UnitTests [TestMethod] public void UdpUnreliableServerToClientTest() { - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { TestHelper.RunServerToClientTest(listener, connection, 10, SendOption.None); } @@ -280,8 +292,8 @@ namespace Hazel.UnitTests [TestMethod] public void UdpReliableServerToClientTest() { - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { TestHelper.RunServerToClientTest(listener, connection, 10, SendOption.Reliable); } @@ -293,8 +305,8 @@ namespace Hazel.UnitTests [TestMethod] public void UdpUnreliableClientToServerTest() { - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { TestHelper.RunClientToServerTest(listener, connection, 10, SendOption.None); } @@ -306,8 +318,8 @@ namespace Hazel.UnitTests [TestMethod] public void UdpReliableClientToServerTest() { - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { TestHelper.RunClientToServerTest(listener, connection, 10, SendOption.Reliable); } @@ -319,8 +331,8 @@ namespace Hazel.UnitTests [TestMethod] public void KeepAliveClientTest() { - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { listener.Start(); @@ -346,8 +358,8 @@ namespace Hazel.UnitTests { ManualResetEvent mutex = new ManualResetEvent(false); - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { UdpConnection client = null; listener.NewConnection += delegate (NewConnectionEventArgs args) @@ -382,8 +394,8 @@ namespace Hazel.UnitTests [TestMethod] public void ClientDisconnectTest() { - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { ManualResetEvent mutex = new ManualResetEvent(false); ManualResetEvent mutex2 = new ManualResetEvent(false); @@ -416,8 +428,8 @@ namespace Hazel.UnitTests [TestMethod] public void ServerDisconnectTest() { - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { ManualResetEvent mutex = new ManualResetEvent(false); @@ -446,8 +458,8 @@ namespace Hazel.UnitTests [TestMethod] public void ServerExtraDataDisconnectTest() { - using (ThreadLimitedUdpConnectionListener listener = new ThreadLimitedUdpConnectionListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) - using (UdpConnection connection = new UdpClientConnection(new IPEndPoint(IPAddress.Loopback, 4296))) + using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new NullLogger())) + using (UdpConnection connection = this.CreateConnection(new IPEndPoint(IPAddress.Loopback, 4296), new NullLogger())) { MessageReader received = null; ManualResetEvent mutex = new ManualResetEvent(false);