public void TestManyInvalidConnectDisconnect() { var status = _application.Status; int before = status.get_SessionCount(eSessionType.eSTSMTP); int count = 1000; var connections = new List <TcpConnection>(); for (int i = 0; i < count; i++) { var conn = new TcpConnection(false); conn.Connect(25); connections.Add(conn); } RetryHelper.TryAction(() => { int connCount = status.get_SessionCount(eSessionType.eSTSMTP); Assert.GreaterOrEqual(connCount, count); }, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(1)); foreach (var conn in connections) { conn.Dispose(); } RetryHelper.TryAction(() => { int after = status.get_SessionCount(eSessionType.eSTSMTP); Assert.GreaterOrEqual(before, after); }, TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(1)); }
private void WaitForFilesInFolder(string folder, int expectedCount) { // Check number of delivered messages. RetryHelper.TryAction(() => { int filesInFolder = GetNumberOfFilesInFolder(folder); Assert.AreEqual(expectedCount, filesInFolder); }, TimeSpan.FromSeconds(5), TimeSpan.FromMinutes(5)); }
public void TestSendToManyRecipients() { // Add distribution list hMailServer.Accounts accounts = _domain.Accounts; var recipients = new List <string>(); for (int i = 0; i < 1000; i++) { hMailServer.Account account = SingletonProvider <TestSetup> .Instance.AddAccount(accounts, string.Format("recipient{0}@test.com", i), "test"); recipients.Add(account.Address); Marshal.ReleaseComObject(account); if (i % 10 == 0) { TestTracer.WriteTraceInfo("Creating accounts: {0}/{1}", i, 1000); } } Marshal.ReleaseComObject(accounts); var sw = new Stopwatch(); sw.Start(); SmtpClientSimulator.StaticSend("*****@*****.**", recipients, "Test", "Test message"); sw.Stop(); Console.WriteLine("Elapsed time: " + sw.Elapsed.TotalSeconds); string dataDir = Path.Combine(SingletonProvider <TestSetup> .Instance.GetApp().Settings.Directories.DataDirectory, "test.com"); // Check number of accounts. RetryHelper.TryAction(() => { if (IsFolderCountReached(dataDir, 1000)) { return; } throw new Exception("Not enough files in folder yet."); }, TimeSpan.FromSeconds(5), TimeSpan.FromMinutes(2)); }
public void TestSend200KMessages() { string dataDir = Path.Combine(SingletonProvider <TestSetup> .Instance.GetApp().Settings.Directories.DataDirectory, "test.com"); string accountDir = Path.Combine(dataDir, "test"); int memoryUsage = Shared.GetCurrentMemoryUsage(); int maxMemoryUsage = memoryUsage + 5; const int numberOfMessages = 200000; var stopwatch = Stopwatch.StartNew(); for (int i = 1; i <= numberOfMessages; i++) { SmtpClientSimulator.StaticSend("*****@*****.**", "*****@*****.**", "Test", "Test message"); if (i % 100 == 0) { double messagesPerSecond = 100 / stopwatch.Elapsed.TotalSeconds; Shared.AssertLowMemoryUsage(maxMemoryUsage); TestTracer.WriteTraceInfo("{0}/{1}. Messages per second: {2}", i, numberOfMessages, messagesPerSecond); stopwatch.Reset(); stopwatch.Start(); ; } } // Check number of delivered messages. RetryHelper.TryAction(() => { Shared.AssertLowMemoryUsage(maxMemoryUsage); int actualNumberOfMessages = GetNumberOfFilesInFolder(accountDir); TestTracer.WriteTraceInfo("{0}/{1}", actualNumberOfMessages, numberOfMessages); Assert.AreEqual(numberOfMessages, actualNumberOfMessages); }, TimeSpan.FromSeconds(30), TimeSpan.FromHours(12)); _domain.Delete(); }
public void TestManyTCPIPConnections() { LogHandler.DeleteCurrentDefaultLog(); const int count = 1000; List <TcpConnection> sockets = new List <TcpConnection>(); for (int i = 1; i <= count; i++) { TcpConnection socket = new TcpConnection(); Assert.IsTrue(socket.Connect(25)); if ((i % 10) == 0) { TestTracer.WriteTraceInfo("{0}/{1}", i, 1000); } sockets.Add(socket); } foreach (TcpConnection socket in sockets) { socket.Disconnect(); } RetryHelper.TryAction(() => { string log = LogHandler.ReadCurrentDefaultLog(); string connectionCreated = "TCP - 127.0.0.1 connected to 127.0.0.1:25."; string connectionEnded = "Ending session "; var created = Regex.Matches(log, connectionCreated); var ended = Regex.Matches(log, connectionEnded); Assert.AreEqual(count, created.Count); Assert.AreEqual(count, ended.Count); }, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(30)); }