Esempio n. 1
0
        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));
        }
Esempio n. 2
0
 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));
 }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        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));
        }