Пример #1
0
        public void TestNoRoute()
        {
            string receiverRoot = EnsureCleanFolder(Path.Combine(m_root, "receivers"));
            FolderBalancer <KeyValuePair <string, string> > balancer = new FolderBalancer <KeyValuePair <string, string> >(this.TextCopy);

            Assert.False(balancer.Process(new KeyValuePair <string, string>("foo", "Hello")));
        }
Пример #2
0
        public void TestFailure(int folderCount, int failureCount)
        {
            string receiverRoot = EnsureCleanFolder(Path.Combine(m_root, "receivers"));
            FolderBalancer <KeyValuePair <string, string> > balancer = this.CreateBalancer(folderCount);

            //
            // Fail folders by deleting them
            //
            for (int i = 0; i < failureCount; ++i)
            {
                Directory.Delete(balancer.Receivers[i]);
            }

            int    fileNumber = -1;
            string fileName   = null;

            if (failureCount < folderCount)
            {
                //
                // These should all succeed
                //
                for (int i = 0; i < folderCount; ++i)
                {
                    ++fileNumber;
                    fileName = fileNumber.ToString();
                    Assert.Null(Record.Exception(() => balancer.Process(new KeyValuePair <string, string>(fileName, "Hello"))));
                    Assert.True(Locate(balancer, fileName) >= 0);
                }
            }
            else
            {
                //
                // These should all fail
                //
                for (int i = 0; i < folderCount; ++i)
                {
                    ++fileNumber;
                    fileName = fileNumber.ToString();
                    Assert.False(balancer.Process(new KeyValuePair <string, string>(fileName, "Hello")));
                    Assert.True(Locate(balancer, fileName) < 0);
                }
            }
        }
Пример #3
0
        public void TestRoundRobin(int folderCount)
        {
            string receiverRoot = EnsureCleanFolder(Path.Combine(m_root, "receivers"));
            FolderBalancer <KeyValuePair <string, string> > balancer = this.CreateBalancer(folderCount);

            int fileNumber = -1;

            //
            // These should all succeed
            //
            for (int i = 0; i < folderCount; ++i)
            {
                ++fileNumber;
                Process(balancer, fileNumber.ToString(), i);
            }

            ++fileNumber;
            Process(balancer, fileNumber.ToString(), 0);
        }
Пример #4
0
        int Locate(FolderBalancer <KeyValuePair <string, string> > balancer, string fileName)
        {
            string[] folders = balancer.Receivers;
            for (int i = 0; i < folders.Length; ++i)
            {
                try
                {
                    if (File.Exists(Path.Combine(folders[i], fileName)))
                    {
                        return(i);
                    }
                }
                catch
                {
                }
            }

            return(-1);
        }
Пример #5
0
 void Process(FolderBalancer <KeyValuePair <string, string> > balancer, string fileName, int expectedIndex)
 {
     Assert.Null(Record.Exception(() => balancer.Process(new KeyValuePair <string, string>(fileName, "Hello"))));
     Assert.True(File.Exists(Path.Combine(balancer.Receivers[expectedIndex], fileName)));
 }
Пример #6
0
 public FolderRoute()
 {
     m_copyHandler  = this.CopyToFolder;
     m_loadBalancer = new FolderBalancer <ISmtpMessage>(m_copyHandler);
 }
Пример #7
0
 public FolderRoute()
 {
     m_copyHandler = this.CopyToFolder;
     m_loadBalancer = new FolderBalancer<ISmtpMessage>(m_copyHandler);
 }
Пример #8
0
 public void TestNoRoute()
 {
     string receiverRoot = EnsureCleanFolder(Path.Combine(m_root, "receivers"));
     FolderBalancer<KeyValuePair<string, string>> balancer = new FolderBalancer<KeyValuePair<string,string>>(this.TextCopy);
     Assert.False(balancer.Process(new KeyValuePair<string,string>("foo", "Hello")));
 }
Пример #9
0
 int Locate(FolderBalancer<KeyValuePair<string, string>> balancer, string fileName)
 {
     string[] folders = balancer.Receivers;
     for (int i = 0; i < folders.Length; ++i)
     {
         try
         {
             if (File.Exists(Path.Combine(folders[i], fileName)))
             {
                 return i;
             }
         }
         catch
         {
         }
     }
     
     return -1;
 }
Пример #10
0
 void Process(FolderBalancer<KeyValuePair<string, string>> balancer, string fileName, int expectedIndex)
 {
     Assert.DoesNotThrow(() => balancer.Process(new KeyValuePair<string, string>(fileName, "Hello")));
     Assert.True(File.Exists(Path.Combine(balancer.Receivers[expectedIndex], fileName)));
 }