Exemple #1
0
        public async Task DpsPollyRetryExecuteAsyncTest(Type actualEx, HttpStatusCode?code)
        {
            // Delay時間の指定は、テスト時間を縮めるため
            DpsPolly target    = CreateTestTarget(1, 2);
            var      startAt   = DateTime.UtcNow;
            int      execCount = 0;

            try
            {
                await target.ExecuteAsync(() =>
                {
                    execCount++;
                    throw CreateException(actualEx, code);
                });
            }
            catch (Exception)
            {
                // リトライ1回なので、2回実行
                Assert.AreEqual(2, execCount);

                // 2秒(1 * 2)以上経過しているはず。
                var elapsedTime = DateTime.UtcNow - startAt;
                // 本来なら期待結果を2にしたいが、微妙な揺らぎで1.999xになることがあるため、1.9とする。
                Assert.AreEqual(-1, TimeSpan.FromSeconds(1.9).CompareTo(elapsedTime), $"経過時間:{elapsedTime}");
                return;
            }
            Assert.Fail();
        }
Exemple #2
0
        public async Task DpsPollyExecuteAsyncDefaultTest()
        {
            // アプリケーション設定がない場合デフォルト設定(3回、3秒)で動作する
            DpsPolly target    = CreateTestTarget();
            var      startAt   = DateTime.UtcNow;
            int      execCount = 0;

            try
            {
                // 引数を付けているのはUnauthorizedExceptionは引数つきコンストラクタしかないため。
                await target.ExecuteAsync(() =>
                {
                    execCount++;
                    throw CreateDpsException(HttpStatusCode.Forbidden);
                });
            }
            catch (Exception)
            {
                // 初回 + リトライ回数を期待する
                Assert.AreEqual(4, execCount);
                // 18秒(0 + 3 + 6 + 9)以上経過しているはず。
                var elapsedTime = DateTime.UtcNow - startAt;
                Assert.AreEqual(-1, TimeSpan.FromSeconds(18).CompareTo(elapsedTime), $"経過時間:{elapsedTime}");
                return;
            }
            Assert.Fail();
        }
Exemple #3
0
        public async Task DpsPollyNoRetryExecuteAsyncTest(Type actualEx, HttpStatusCode?code)
        {
            DpsPolly target    = CreateTestTarget();
            int      execCount = 0;

            try
            {
                await target.ExecuteAsync(() =>
                {
                    execCount++;
                    throw CreateException(actualEx, code);
                });
            }
            catch (Exception)
            {
                Assert.AreEqual(1, execCount);
                return;
            }
            Assert.Fail();
        }
Exemple #4
0
        public async Task DpsPollyNoRetryExecuteAsyncWithInnerExTest(HttpStatusCode statusCode)
        {
            DpsPolly target        = CreateTestTarget();
            var      executedCount = 0;

            try
            {
#pragma warning disable 1998
                await target.ExecuteAsync(async() => {
                    executedCount++;
                    throw CreateInnerDpsException(statusCode);
                });

#pragma warning restore 1998
            }
            catch (Exception)
            {
                Assert.AreEqual(1, executedCount);
                return;
            }
            Assert.Fail();
        }