示例#1
0
        public void IotHubPollyRetryExecuteTest(Type actualEx)
        {
            // Delay時間の指定は、テスト時間を縮めるため
            IotHubPolly target    = CreateTestTarget(1, 2);
            var         startAt   = DateTime.UtcNow;
            int         execCount = 0;

            try
            {
                // 引数を付けているのはIotHubExceptionは引数つきコンストラクタしかないため。
                target.Execute(() =>
                {
                    execCount++;
                    throw Activator.CreateInstance(actualEx, "message") as Exception;
                });
            }
            catch (Exception)
            {
                // リトライ1回なので、2回実行
                Assert.AreEqual(2, execCount);

                // 2秒(1 * 2)以上経過しているはず。
                var elapsedTime = DateTime.UtcNow - startAt;
                Assert.AreEqual(-1, new TimeSpan(0, 0, 2).CompareTo(elapsedTime), $"経過時間:{elapsedTime}");
                return;
            }
            Assert.Fail();
        }
示例#2
0
        public void IotHubPollyExecuteDefaultTest()
        {
            // アプリケーション設定がない場合デフォルト設定(3回、3秒)で動作する
            IotHubPolly target    = CreateTestTarget();
            var         startAt   = DateTime.UtcNow;
            int         execCount = 0;

            try
            {
                // 引数を付けているのはUnauthorizedExceptionは引数つきコンストラクタしかないため。
                target.Execute(() =>
                {
                    execCount++;
                    throw new IotHubException("message");
                });
            }
            catch (Exception)
            {
                // 初回 + リトライ回数を期待する
                Assert.AreEqual(4, execCount);
                // 18秒(0 + 3 + 6 + 9)以上経過しているはず。
                var elapsedTime = DateTime.UtcNow - startAt;
                Assert.AreEqual(-1, new TimeSpan(0, 0, 18).CompareTo(elapsedTime), $"経過時間:{elapsedTime}");
                return;
            }
            Assert.Fail();
        }