public void TestLongSMTPDataSessionIncludingNewline() { long memoryUsage = Shared.GetCurrentMemoryUsage(); _application.Settings.MaxMessageSize = 0; TCPSocket socket = new TCPSocket(); socket.Connect(25); socket.Receive(); socket.Send("HELO test.com\r\n"); socket.Receive(); // Build a large string... StringBuilder sb = new StringBuilder(); sb.Append("A01"); for (int i = 0; i < 10000; i++) { sb.Append("01234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890\r\n"); } int length = sb.Length; sb.Append(Environment.NewLine); socket.Send("MAIL FROM: [email protected]\r\n"); socket.Receive(); socket.Send("RCPT TO: [email protected]\r\n"); socket.Receive(); socket.Send("DATA\r\n"); socket.Receive(); for (int i = 0; i < 100; i++) { Shared.AssertLowMemoryUsage(memoryUsage + 30); try { socket.Send(sb.ToString()); } catch (Exception) { return; } } socket.Send("\r\n.\r\n"); string result = socket.Receive(); Assert.IsTrue(result.StartsWith("250")); socket.Send("QUIT\r\n"); result = socket.Receive(); socket.Disconnect(); POP3Simulator.AssertMessageCount(_domain.Accounts[0].Address, "test", 1); }
public void TestLongSMTPDataSessionWithoutNewline() { long memoryUsage = Shared.GetCurrentMemoryUsage(); var socket = new TcpConnection(); socket.Connect(25); socket.Receive(); socket.Send("HELO test.com\r\n"); socket.Receive(); // Build a large string... var sb = new StringBuilder(); sb.Append("A01"); for (int i = 0; i < 10000; i++) { sb.Append("01234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890"); } socket.Send("MAIL FROM: [email protected]\r\n"); socket.Receive(); socket.Send("RCPT TO: [email protected]\r\n"); socket.Receive(); socket.Send("DATA\r\n"); socket.Receive(); for (int i = 1; i <= 1000; i++) { Shared.AssertLowMemoryUsage(memoryUsage + 30); try { socket.Send(sb.ToString()); } catch (Exception) { return; } if ((i % 10) == 0) { TestTracer.WriteTraceInfo("{0}/{1}", i, 1000); } } socket.Send("\r\n.\r\n"); string result = socket.Receive(); Assert.IsTrue(result.StartsWith("554 Too long line was received. Transmission aborted.")); socket.Send("QUIT\r\n"); socket.Receive(); socket.Disconnect(); }
public void TestSendViaSpamAssassin() { Utilities.AssertSpamAssassinIsRunning(); SingletonProvider <Utilities> .Instance.GetApp().Settings.AntiSpam.SpamAssassinEnabled = true; hMailServer.Accounts accounts = _domain.Accounts; hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(accounts, string.Format("*****@*****.**"), "test"); string dataDir = Path.Combine(SingletonProvider <Utilities> .Instance.GetApp().Settings.Directories.DataDirectory, "test.com"); string accountDir = Path.Combine(dataDir, "test"); int memoryUsage = Shared.GetCurrentMemoryUsage(); int maxMemoryUsage = memoryUsage + 2; const int numberOfMessages = 100; string executableName = Shared.GetExecutableName(); MailMessage mail = new MailMessage(); mail.From = new System.Net.Mail.MailAddress("*****@*****.**"); mail.To.Add("*****@*****.**"); mail.Subject = "Automatiskt servertest"; mail.Body = "Detta är ett automatiskt test av epostservern."; mail.BodyEncoding = System.Text.Encoding.GetEncoding(1252); mail.SubjectEncoding = System.Text.Encoding.GetEncoding(1252); for (int i = 0; i < numberOfMessages; i++) { SmtpClient oClient = new SmtpClient("localhost", 25); oClient.Send(mail); if (i % 5 == 0) { Shared.AssertLowMemoryUsage(maxMemoryUsage); } } WaitForFilesInFolder(accountDir, numberOfMessages, maxMemoryUsage); _domain.Delete(); }
public void TestSendAttachments() { 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 = 1000; string executableName = Shared.GetExecutableName(); var mail = new MailMessage { From = new MailAddress("*****@*****.**") }; mail.To.Add("*****@*****.**"); mail.Subject = "Automatic test"; mail.Body = "Automatic test"; mail.BodyEncoding = Encoding.GetEncoding(1252); mail.SubjectEncoding = Encoding.GetEncoding(1252); mail.Attachments.Add(new Attachment(executableName)); for (int i = 1; i <= numberOfMessages; i++) { var oClient = new SmtpClient("127.0.0.1", 25); oClient.Send(mail); if (i % 10 == 0) { TestTracer.WriteTraceInfo("{0}/{1}", i, 1000); WaitForFilesInFolder(accountDir, i); Shared.AssertLowMemoryUsage(maxMemoryUsage); } } _domain.Delete(); }
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 TestSendLargeBatch() { hMailServer.Accounts accounts = _domain.Accounts; hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(accounts, string.Format("*****@*****.**"), "test"); string dataDir = Path.Combine(SingletonProvider <Utilities> .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; for (int i = 0; i < numberOfMessages; i++) { Assert.IsTrue(SMTPSimulator.StaticSend("*****@*****.**", "*****@*****.**", "Test", "Test message")); if (i % 100 == 0) { Shared.AssertLowMemoryUsage(maxMemoryUsage); } } // Check number of delivered messages. while (true) { if (GetNumberOfFilesInFolder(accountDir) == numberOfMessages) { break; } Shared.AssertLowMemoryUsage(maxMemoryUsage); System.Threading.Thread.Sleep(60 * 1000); } _domain.Delete(); }
public void TestSendViaSpamAssassin() { CustomAsserts.AssertSpamAssassinIsRunning(); SingletonProvider <TestSetup> .Instance.GetApp().Settings.AntiSpam.SpamAssassinEnabled = true; 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 + 2; const int numberOfMessages = 100; var mail = new MailMessage(); mail.From = new MailAddress("*****@*****.**"); mail.To.Add("*****@*****.**"); mail.Subject = "Automatic server test"; mail.Body = "Automatic server test"; mail.BodyEncoding = Encoding.GetEncoding(1252); mail.SubjectEncoding = Encoding.GetEncoding(1252); for (int i = 1; i <= numberOfMessages; i++) { var oClient = new SmtpClient("localhost", 25); oClient.Send(mail); if (i % 5 == 0) { Shared.AssertLowMemoryUsage(maxMemoryUsage); TestTracer.WriteTraceInfo("{0}/{1}", i, numberOfMessages); } } WaitForFilesInFolder(accountDir, numberOfMessages); _domain.Delete(); }
public void Send100MBMessage() { long memoryUsage = Shared.GetCurrentMemoryUsage(); _application.Settings.MaxMessageSize = 0; TcpConnection socket = new TcpConnection(); socket.Connect(25); socket.Receive(); socket.Send("HELO test.com\r\n"); socket.Receive(); // Build a large string... StringBuilder sb = new StringBuilder(); sb.Append("A01"); for (int i = 0; i < 10000; i++) { sb.Append("01234567890012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890\r\n"); } int length = sb.Length; sb.Append(Environment.NewLine); socket.Send("MAIL FROM: [email protected]\r\n"); socket.Receive(); socket.Send("RCPT TO: [email protected]\r\n"); socket.Receive(); socket.Send("DATA\r\n"); socket.Receive(); for (int i = 1; i <= 100; i++) { Shared.AssertLowMemoryUsage(memoryUsage + 30); try { socket.Send(sb.ToString()); } catch (Exception) { return; } if ((i % 10) == 0) { TestTracer.WriteTraceInfo("{0}/{1}", i, 1000); } } socket.Send("\r\n.\r\n"); string result = socket.Receive(); Assert.IsTrue(result.StartsWith("250")); socket.Send("QUIT\r\n"); result = socket.Receive(); socket.Disconnect(); Pop3ClientSimulator.AssertMessageCount(_domain.Accounts[0].Address, "test", 1); }