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); }
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); }
protected override void Initialize() { this.Config = this.GetConfig <TestClientConfig>(); this.Logger = this.LoggerFactory.Create(this.Config.ServiceName); this.TotalEventsReceived = 0; }