public bool SendEmailUsingMultipleHosts(IEnumerable <string> hostsList, string email) { var retryer = new TaskRetryer() { // Optional configuration attempts Config = new RetryConfig { RetryInterval = 0, // Time in milliseconds to wait (default = 0) MaximumAttempts = 10, // Default = 0 indicating no limit of attempts }, }; var mailer = new FakeMailer(); var enumerator = hostsList.GetEnumerator(); retryer.RetryableOperation = delegate { enumerator.MoveNext(); // No need to check since it will only be called servers.Count times string host = enumerator.Current; mailer.SmtpHost = host.Trim(); var output = mailer.SendEmail(email); if (output == false) { TestContext.WriteLine("Failure when sending email. Chilkat error: {0}", mailer.LastErrorText); } return(output); }; retryer.ExceptionLogger = args => TestContext.WriteLine("Email send failure, try #{0}: {1}", args.TryCount, args.Exception.Message); return(retryer.ProcessRetries()); }
public void FailureSyncStaticTest() { Exception error = null; var instance = TaskRetryer.DefaultInstance; instance.Config = GetConfigForFailure(); instance.RetryableOperation = Try; instance.ExceptionLogger = (ex) => error = ex.Exception; // Trying with exception suppression bool actual = TaskRetryer.ProcessRetries(Try, null); // out error Assert.AreEqual(_tries, TriesToFail); Assert.AreEqual(_tries, actual); Assert.IsInstanceOfType(error, typeof(OperationCanceledException)); // Trying without exception suppression TestInitialize(); TaskRetryer.ProcessRetries(Try, null); }