Ejemplo n.º 1
0
        private static void TestServiceCallForClockSkew(ClockSkewTestContext context)
        {
            var oldCorrectClockSkew    = AWSConfigs.CorrectForClockSkew;
            var oldClockSkewCorrection = context.Config.ClockOffset;
            var oldUtcNowSource        = GetUtcNowSource();

            try
            {
                AWSConfigs.CorrectForClockSkew = true;
                SetClockSkewCorrection(context.Config, TimeSpan.Zero);
                context.TestAction();

#pragma warning disable CS0618 // Type or member is obsolete
                Assert.IsTrue(AWSConfigs.ClockOffset == TimeSpan.Zero);
#pragma warning restore CS0618 // Type or member is obsolete
                Assert.IsTrue(context.Config.ClockOffset == TimeSpan.Zero);

                SetClockSkewCorrection(context.Config, IncorrectPositiveClockSkewOffset);
                context.TestAction();
#pragma warning disable CS0618 // Type or member is obsolete
                Assert.AreNotEqual(IncorrectPositiveClockSkewOffset, AWSConfigs.ClockOffset);
#pragma warning restore CS0618 // Type or member is obsolete
                Assert.AreNotEqual(IncorrectPositiveClockSkewOffset, context.Config.ClockOffset);

                SetClockSkewCorrection(context.Config, IncorrectNegativeClockSkewOffset);
                context.TestAction();
#pragma warning disable CS0618 // Type or member is obsolete
                Assert.AreNotEqual(IncorrectPositiveClockSkewOffset, AWSConfigs.ClockOffset);
#pragma warning restore CS0618 // Type or member is obsolete
                Assert.AreNotEqual(IncorrectNegativeClockSkewOffset, context.Config.ClockOffset);

                Console.WriteLine("Simulating positive clock skew");
                SetUtcNowSource(() => DateTime.UtcNow + IncorrectPositiveClockSkewOffset);
                AWSConfigs.CorrectForClockSkew = false;
                AssertExtensions.ExpectException(context.TestAction);

                AWSConfigs.CorrectForClockSkew = true;
                SetClockSkewCorrection(context.Config, TimeSpan.Zero);
                context.TestAction();

                Console.WriteLine("Simulating negative clock skew");
                SetUtcNowSource(() => DateTime.UtcNow + IncorrectNegativeClockSkewOffset);
                AWSConfigs.CorrectForClockSkew = true;
                SetClockSkewCorrection(context.Config, TimeSpan.Zero);
                context.TestAction();

                AWSConfigs.CorrectForClockSkew = false;
                AssertExtensions.ExpectException(context.TestAction);
            }
            finally
            {
                AWSConfigs.CorrectForClockSkew = oldCorrectClockSkew;
                SetClockSkewCorrection(context.Config, oldClockSkewCorrection);
                SetUtcNowSource(oldUtcNowSource);
            }
        }
Ejemplo n.º 2
0
        private static void TestServiceCallForManualClockCorrection(ClockSkewTestContext context)
        {
            var oldManualClockCorrection = AWSConfigs.ManualClockCorrection;
            var oldCorrectClockSkew      = AWSConfigs.CorrectForClockSkew;
            var oldClockSkewCorrection   = context.Config.ClockOffset;
            var oldUtcNowSource          = GetUtcNowSource();

            try
            {
                AWSConfigs.CorrectForClockSkew = false;

                SetUtcNowSource(() => DateTime.UtcNow + IncorrectPositiveClockSkewOffset);
                AWSConfigs.ManualClockCorrection = null;
                AssertExtensions.ExpectException(context.TestAction);

                AWSConfigs.ManualClockCorrection = IncorrectPositiveClockSkewOffset.Negate();
                context.TestAction();

                SetUtcNowSource(() => DateTime.UtcNow + IncorrectNegativeClockSkewOffset);
                AWSConfigs.ManualClockCorrection = IncorrectNegativeClockSkewOffset.Negate();
                context.TestAction();

                AWSConfigs.ManualClockCorrection = TimeSpan.FromTicks(IncorrectNegativeClockSkewOffset.Negate().Ticks * 2);
                AssertExtensions.ExpectException(context.TestAction);

                AWSConfigs.ManualClockCorrection = TimeSpan.Zero;
                AssertExtensions.ExpectException(context.TestAction);
            }
            finally
            {
                AWSConfigs.ManualClockCorrection = oldManualClockCorrection;
                AWSConfigs.CorrectForClockSkew   = oldCorrectClockSkew;
                SetClockSkewCorrection(context.Config, oldClockSkewCorrection);
                SetUtcNowSource(oldUtcNowSource);
            }
        }