public void HundredOf2mbPacket_transmitsViaTcp_oneByOne() { var origin = TntBuilder .UseContract <ISingleMessageContract <Company>, SingleMessageContract <Company> >() .SetMaxAnsDelay(5 * 60 * 1000); var proxy = TntBuilder .UseContract <ISingleMessageContract <Company> >() .SetMaxAnsDelay(5 * 60 * 1000); using (var tcpPair = new MockConnectionPair <ISingleMessageContract <Company>, ISingleMessageContract <Company>, SingleMessageContract <Company> >(origin, proxy)) { var receivedList = new List <Company>(200); tcpPair.OriginContract.SayCalled += (Sender, received) => receivedList.Add(received); var company = IntegrationTestsHelper.CreateCompany(2000); int sendCount = 100; for (int i = 0; i < sendCount; i++) { tcpPair.ProxyConnection.Contract.Ask(company); } Assert.AreEqual(sendCount, receivedList.Count); foreach (var received in receivedList) { received.AssertIsSameTo(company); } } }
public void HundredOf2mbPacket_transmitsViaTcp_concurent() { var origin = TntBuilder .UseContract <ISingleMessageContract <Company>, SingleMessageContract <Company> >() .SetMaxAnsDelay(5 * 60 * 1000); var proxy = TntBuilder .UseContract <ISingleMessageContract <Company> >() .SetMaxAnsDelay(5 * 60 * 1000); using (var tcpPair = new MockConnectionPair <ISingleMessageContract <Company>, ISingleMessageContract <Company>, SingleMessageContract <Company> >(origin, proxy)) { var receivedList = new List <Company>(200); tcpPair.OriginContract.SayCalled += (Sender, received) => receivedList.Add(received); tcpPair.ClientChannel.OnDisconnect += (s, err) => { Console.WriteLine("asdasd"); }; var company = IntegrationTestsHelper.CreateCompany(2000); int sendCount = 100; List <Task> sendTasks = new List <Task>(sendCount); for (int i = 0; i < sendCount; i++) { sendTasks.Add(new Task(() => tcpPair.ProxyConnection.Contract.Ask(company))); } foreach (Task task in sendTasks) { task.Start(); } if (!Task.WaitAll(sendTasks.ToArray(), 5 * 60 * 1000)) { Assert.Fail("Test timeout "); } Assert.AreEqual(sendCount, receivedList.Count); foreach (var received in receivedList) { received.AssertIsSameTo(company); } } }
public void StringPackets_transmitsViaTcp_concurent(int stringLengthInBytes) { using (var tcpPair = new MockConnectionPair <ISingleMessageContract <string>, ISingleMessageContract <string>, SingleMessageContract <string> >()) { //Tasks count: int sentCount = 10; string originStringArgument = generateRandomString(stringLengthInBytes / 2); var receivedList = new List <string>(200); tcpPair.OriginContract.SayCalled += (Sender, received) => receivedList.Add(received); //start monitoring disconnection events. var serverDisconnectAwaiter = new EventAwaiter <ClientDisconnectEventArgs <ISingleMessageContract <string>, TestChannel> >(); tcpPair.Server.Disconnected += serverDisconnectAwaiter.EventRaised; var clientDisconnectAwaiter = new EventAwaiter <ErrorMessage>(); tcpPair.ClientChannel.OnDisconnect += clientDisconnectAwaiter.EventRaised; #region sending var sentTasks = new List <Task>(sentCount); for (var i = 0; i < sentCount; i++) { sentTasks.Add(new Task(() => tcpPair.ProxyConnection.Contract.Ask(originStringArgument))); } foreach (var task in sentTasks) { task.Start(); } #endregion #region checking for exceptions bool allDoneSucc = false; Exception doneException = null; try { allDoneSucc = Task.WaitAll(sentTasks.ToArray(), 60000); } catch (Exception e) { doneException = e; } //Check for client disconnection var clientDisconnectArgs = clientDisconnectAwaiter.WaitOneOrDefault(500); //Check for server disconnection var serverDisconnectedArg = serverDisconnectAwaiter.WaitOneOrDefault(500); if (clientDisconnectArgs != null || serverDisconnectedArg != null) { if (clientDisconnectArgs != null) { Assert.Fail("Client disconnected. Reason: " + clientDisconnectArgs); } else if (serverDisconnectedArg != null) { Assert.Fail("Server disconnected. Reason: " + serverDisconnectedArg.ErrorMessageOrNull); } } //check for tasks agregate exception if (doneException != null) { Assert.Fail("Client side thrown exception during the interaction: " + doneException.ToString()); } //Check for timeout if (!allDoneSucc) { Assert.Fail("Test timeout "); } #endregion #region checking for serialization results Assert.AreEqual(sentCount, receivedList.Count); foreach (var received in receivedList) { Assert.AreEqual(originStringArgument, received); } #endregion } }
public void ProtobuffPackets_transmitViaTcp_concurent(int sizeOfCompanyInUsers, int parralelTasksCount) { //1000 = 0.5mb //2000 = 2mb //5000 = 10mb //10000 = 50mb 5 var origin = TntBuilder .UseContract <ISingleMessageContract <Company>, SingleMessageContract <Company> >() .SetMaxAnsDelay(5 * 60 * 1000); var proxy = TntBuilder .UseContract <ISingleMessageContract <Company> >() .SetMaxAnsDelay(5 * 60 * 1000); using (var mockPair = new MockConnectionPair <ISingleMessageContract <Company>, ISingleMessageContract <Company>, SingleMessageContract <Company> >(origin, proxy)) { var originCompany = IntegrationTestsHelper.CreateCompany(sizeOfCompanyInUsers); var receivedList = new List <Company>(parralelTasksCount); mockPair.OriginContract.SayCalled += (Sender, received) => receivedList.Add(received); //start monitoring the server disconnection event. var serverDisconnectAwaiter = new EventAwaiter <ClientDisconnectEventArgs <ISingleMessageContract <Company>, TestChannel> >(); mockPair.Server.Disconnected += serverDisconnectAwaiter.EventRaised; var clientDisconnectAwaiter = new EventAwaiter <ErrorMessage>(); mockPair.ClientChannel.OnDisconnect += clientDisconnectAwaiter.EventRaised; mockPair.ClientChannel.OnDisconnect += (s, arg) => { Console.WriteLine(); }; #region sending var sentTasks = new List <Task>(parralelTasksCount); for (var i = 0; i < parralelTasksCount; i++) { sentTasks.Add(new Task(() => mockPair.ProxyConnection.Contract.Ask(originCompany))); } foreach (var task in sentTasks) { task.Start(); } #endregion #region checking for exceptions bool allDoneSucc = false; Exception doneException = null; try { allDoneSucc = Task.WaitAll(sentTasks.ToArray(), 60000); } catch (Exception e) { doneException = e; } //Check for client disconnection var clientDisconnectArgs = clientDisconnectAwaiter.WaitOneOrDefault(500); //Check for server disconnection var serverDisconnectedArg = serverDisconnectAwaiter.WaitOneOrDefault(500); if (clientDisconnectArgs != null || serverDisconnectedArg != null) { if (clientDisconnectArgs != null) { Assert.Fail("Client disconnected. Reason: " + clientDisconnectArgs); } else if (serverDisconnectedArg != null) { Assert.Fail("Server disconnected. Reason: " + serverDisconnectedArg.ErrorMessageOrNull); } } //check for tasks agregate exception if (doneException != null) { Assert.Fail("Client side thrown exception during the interaction: " + doneException.ToString()); } //Check for timeout if (!allDoneSucc) { Assert.Fail("Test timeout "); } #endregion #region checking for serialization results Assert.AreEqual(parralelTasksCount, receivedList.Count); foreach (var received in receivedList) { received.AssertIsSameTo(originCompany); } #endregion } }