public void DefaultConfigurationAutoModeIsCachedWhenSpecifiedInEnvironmentVariable()
        {
            // validate behavior by confirming IDefaultConfigurationAutoModeResolver is only called once

            // ARRANGE
            var mockEnvironmentVariableProvider = BuildEnvironmentVariableMock(DefaultConfigurationMode.Auto);
            var mockAutoModeResolver            = new Mock <IDefaultConfigurationAutoModeResolver>();

            mockAutoModeResolver
            .Setup(x => x.Resolve(It.IsAny <RegionEndpoint>(), It.IsAny <Func <RegionEndpoint> >()))
            .Returns(_fakeDefaultConfigurations[0].Name);

            var clientConfig =
                new TestClientConfig(
                    new DefaultConfigurationProvider(
                        mockEnvironmentVariableProvider.Object,
                        mockAutoModeResolver.Object,
                        _fakeDefaultConfigurations));

            // ACT
            // load properties - this will cause ClientConfig
            // to invoke DefaultConfigurationProvider multiple times
            var timeout   = clientConfig.Timeout;
            var retryMode = clientConfig.RetryMode;
            var timeout2  = clientConfig.Timeout;

            // ASSERT
            mockAutoModeResolver
            .Verify(
                x => x.Resolve(It.IsAny <RegionEndpoint>(), It.IsAny <Func <RegionEndpoint> >()),
                // if we're caching correctly, mockAutoModeResolver.Resolve should only be called once
                Times.Once);
        }
示例#2
0
        public TestClient(ILogging logging, IRestClient client, TestClientConfig config) : base(logging, client, config.BaseUrl)
        {
            _client  = client;
            _config  = config;
            _logging = logging;

            if (string.IsNullOrEmpty(config.BaseUrl))
            {
                throw new NullReferenceException("PromoServicesHostname AppSettings does not exist.");
            }
        }
        public void DefaultConfigurationAutoModeIsRefreshedIfRegionChangesWhenPassedInMethodParameter()
        {
            // validate behavior by confirming IDefaultConfigurationAutoModeResolver is called once per RegionEndpoint

            // ARRANGE
            var mockEnvironmentVariableProvider = BuildEnvironmentVariableMock();
            var mockAutoModeResolver            = new Mock <IDefaultConfigurationAutoModeResolver>();

            mockAutoModeResolver
            .Setup(x => x.Resolve(It.IsAny <RegionEndpoint>(), It.IsAny <Func <RegionEndpoint> >()))
            .Returns(_fakeDefaultConfigurations[0].Name);

            var clientConfig =
                new TestClientConfig(
                    new DefaultConfigurationProvider(
                        mockEnvironmentVariableProvider.Object,
                        mockAutoModeResolver.Object,
                        _fakeDefaultConfigurations));

            clientConfig.DefaultConfigurationMode = DefaultConfigurationMode.Auto;

            // set initial RegionEndpoint
            clientConfig.RegionEndpoint = RegionEndpoint.APEast1;

            // ACT

            // load properties - this will cause ClientConfig
            // to invoke DefaultConfigurationProvider multiple times
            var timeout   = clientConfig.Timeout;
            var retryMode = clientConfig.RetryMode;

            // change RegionEndpoint
            clientConfig.RegionEndpoint = RegionEndpoint.USWest2;
            var timeout2   = clientConfig.Timeout;
            var retryMode2 = clientConfig.RetryMode;


            // ASSERT
            mockAutoModeResolver
            .Verify(
                x => x.Resolve(It.IsAny <RegionEndpoint>(), It.IsAny <Func <RegionEndpoint> >()),
                // if we're caching correctly, mockAutoModeResolver.Resolve should only be called once
                // per Region Endpoint change
                Times.Exactly(2));
        }
        public void UnknownDefaultConfigurationModeThrowsAnError()
        {
            // ARRANGE
            var mockEnvironmentVariableProvider = new Mock <IEnvironmentVariableRetriever>();
            var mockAutoModeResolver            = new Mock <IDefaultConfigurationAutoModeResolver>();

            var clientConfig =
                new TestClientConfig(
                    new DefaultConfigurationProvider(
                        mockEnvironmentVariableProvider.Object,
                        mockAutoModeResolver.Object,
                        _fakeDefaultConfigurations));

            var sharedConfigFile =
                "[default]\r\n" +
                "defaults_mode=NON-EXISTENT-DEFAULT-CONFIG-MODE";

            Exception expectedException = null;
            TimeSpan? actualTimeout     = null;

            try
            {
                using (new FallbackFactoryTest.FallbackFactoryTestFixture(sharedConfigFile, "default"))
                {
                    // ACT
                    actualTimeout = clientConfig.Timeout;
                }
            }
            catch (Exception e)
            {
                expectedException = e;
            }

            // ASSERT
            Assert.IsNotNull(expectedException);
            Assert.IsInstanceOfType(expectedException, typeof(AmazonClientException));
            Assert.IsTrue(expectedException.Message.StartsWith("Failed to find requested Default Configuration Mode"));

            Assert.IsNull(actualTimeout);
        }
        public void OrderOfOperationsTest(
            DefaultConfigurationMode?clientConfigDefaultMode,
            DefaultConfigurationMode?environmentVariableDefaultMode,
            DefaultConfigurationMode?sharedConfigDefaultMode,
            DefaultConfigurationMode expectedDefaultMode)
        {
            // ARRANGE
            var mockEnvironmentVariableProvider = BuildEnvironmentVariableMock(environmentVariableDefaultMode);
            var mockAutoModeResolver            = new Mock <IDefaultConfigurationAutoModeResolver>();

            var clientConfig =
                new TestClientConfig(
                    new DefaultConfigurationProvider(
                        mockEnvironmentVariableProvider.Object,
                        mockAutoModeResolver.Object,
                        _fakeDefaultConfigurations));

            if (clientConfigDefaultMode.HasValue)
            {
                clientConfig.DefaultConfigurationMode = clientConfigDefaultMode.Value;
            }

            var sharedConfigFile =
                "[default]\r\n" +
                $"defaults_mode={sharedConfigDefaultMode?.ToString()}";

            TimeSpan?actualTimeout;

            using (new FallbackFactoryTest.FallbackFactoryTestFixture(sharedConfigFile, "default"))
            {
                // ACT
                actualTimeout = clientConfig.Timeout;
            }

            // ASSERT
            var expectedMode = _fakeDefaultConfigurations.First(x => x.Name == expectedDefaultMode);

            Assert.AreEqual(expectedMode.TimeToFirstByteTimeout, actualTimeout);
        }
        public void DefaultConfigurationCanBeExplicitlySetEvenIfItsAlreadyCached()
        {
            // ARRANGE
            var environmentVariableDefaultMode = _fakeDefaultConfigurations[0];
            var explicitlySetDefaultMode       = _fakeDefaultConfigurations[1];

            var mockEnvironmentVariableProvider = BuildEnvironmentVariableMock(environmentVariableDefaultMode.Name);
            var mockAutoModeResolver            = new Mock <IDefaultConfigurationAutoModeResolver>();

            var clientConfig =
                new TestClientConfig(
                    new DefaultConfigurationProvider(
                        mockEnvironmentVariableProvider.Object,
                        mockAutoModeResolver.Object,
                        _fakeDefaultConfigurations));

            // ACT

            // retrieve timeout once (this will cause default configuration mode to be cached)
            var timeoutFromEnvironmentVariableDefaultMode = clientConfig.Timeout;

            // simulate user explicitly setting DefaultConfigurationMode
            clientConfig.DefaultConfigurationMode = explicitlySetDefaultMode.Name;

            // now reload timeout, to make sure we don't use the old cached value.
            var timeoutFromExplicitlySetDefaultMode = clientConfig.Timeout;

            // ASSERT
            Assert.AreEqual(
                environmentVariableDefaultMode.TimeToFirstByteTimeout,
                timeoutFromEnvironmentVariableDefaultMode);

            Assert.AreEqual(
                explicitlySetDefaultMode.TimeToFirstByteTimeout,
                timeoutFromExplicitlySetDefaultMode);
        }
示例#7
0
 protected override void Initialize()
 {
     this.Config = this.GetConfig <TestClientConfig>();
     this.Logger = this.LoggerFactory.Create(this.Config.ServiceName);
     this.TotalEventsReceived = 0;
 }