public void SetUp() { Retries = 0; // log messages so we can see what is going on RetryStrategy = new MyRetryStrategy(); RetryStrategy.Retrying += (sender, re) => { Retries++; }; // by default only retry once or tests will take long RetryStrategy.MaxRetryCount = 1; RetryStrategy.MaxBackOff = new TimeSpan(0, 0, 0, 0, 10); }
public void RetryWithTableParameterShouldSendRecords() { var retryStrategy = new MyRetryStrategy(); retryStrategy.MaxRetryCount = 1; retryStrategy.MaxBackOff = new TimeSpan(0, 0, 0, 0, 1); try { Connection().ExecuteSql("CREATE TYPE TestTable AS TABLE (value int)"); using (var connection = Connection()) { var reliable = new ReliableConnection((DbConnection)connection, retryStrategy); reliable.ExecuteSql("CREATE TABLE TestTableFlag (id int)"); reliable.ExecuteSql(@" CREATE PROC ProcWithTestTable (@table TestTable READONLY) AS IF NOT EXISTS (SELECT * FROM TestTableFlag) BEGIN INSERT INTO TestTableFlag VALUES (1); RAISERROR ('Force a Retry', 16, 1); END ELSE SELECT COUNT(*) FROM @table; " ); var list = new List <TestData>() { new TestData() { i = 1 } }; var count = reliable.ExecuteScalar <int>("ProcWithTestTable", new { table = list }); Assert.AreEqual(list.Count, count); } } finally { Connection().ExecuteSql("DROP PROC ProcWithTestTable"); Connection().ExecuteSql("DROP TABLE TestTableFlag"); Connection().ExecuteSql("DROP TYPE TestTable"); } }