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"))); }
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); } } }
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); }
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); }
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))); }
public FolderRoute() { m_copyHandler = this.CopyToFolder; m_loadBalancer = new FolderBalancer <ISmtpMessage>(m_copyHandler); }
public FolderRoute() { m_copyHandler = this.CopyToFolder; m_loadBalancer = new FolderBalancer<ISmtpMessage>(m_copyHandler); }
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"))); }
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; }
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))); }