AWSSDK_DotNet.IntegrationTests.Tests.General.TestServiceCallForClockSkew C# (CSharp) Method

TestServiceCallForClockSkew() private static method

private static TestServiceCallForClockSkew ( System.Action action ) : void
action System.Action
return void
        private static void TestServiceCallForClockSkew(Action action)
        {
            var oldCorrectClockSkew = AWSConfigs.CorrectForClockSkew;
            var oldClockSkewCorrection = AWSConfigs.ClockOffset;

            try
            {
                // Enable clock skew correction
                AWSConfigs.CorrectForClockSkew = true;

                // Make call to possibly set the offset
                action();

                // Determine if skew exists
                var skewCorrection = AWSConfigs.ClockOffset;
                var skewExists = skewCorrection > TimeSpan.Zero;

                if (skewExists)
                {
                    Console.WriteLine("Clock skew exists, offset is " + AWSConfigs.ClockOffset);

                    // If skew exists, test that disabling correction results in an error
                    AWSConfigs.CorrectForClockSkew = false;
                    AssertExtensions.ExpectException(action);
                }
                else
                {
                    Console.WriteLine("No clock skew found");

                    // If no skew exists, set invalid skew correction and
                    // verify an exception is thrown before the invalid correction is
                    // corrected by the SDK

                    // Do this twice, once for positive offset and once for negative

                    SetClockSkewCorrection(IncorrectPositiveClockSkewOffset);
                    action();
                    Assert.AreNotEqual(IncorrectPositiveClockSkewOffset, AWSConfigs.ClockOffset);

                    SetClockSkewCorrection(IncorrectNegativeClockSkewOffset);
                    action();
                    Assert.AreNotEqual(IncorrectNegativeClockSkewOffset, AWSConfigs.ClockOffset);
                }
            }
            finally
            {
                AWSConfigs.CorrectForClockSkew = oldCorrectClockSkew;
                SetClockSkewCorrection(oldClockSkewCorrection);
            }
        }