Exemplo n.º 1
0
        public void ConfiguringPipeline()
        {
            // this instance will hold pipeline creation options
            var options = new ConfigurationClientOptions();

            // specify custon HttpClient
            options.Transport = new HttpClientTransport(s_client);

            // remove logging policy
            options.Diagnostics.IsLoggingEnabled = false;

            // specify custom retry policy options
            options.Retry.Mode       = RetryMode.Fixed;
            options.Retry.MaxRetries = 10;
            options.Retry.Delay      = TimeSpan.FromSeconds(1);

            // add a policy (custom behavior) that executes once per client call
            options.AddPolicy(HttpPipelinePosition.PerCall, new AddHeaderPolicy());

            // add a policy that executes once per retry
            options.AddPolicy(HttpPipelinePosition.PerRetry, new CustomLogPolicy());

            var connectionString = Environment.GetEnvironmentVariable("APPCONFIGURATION_CONNECTION_STRING");
            // pass the policy options to the client
            var client = new ConfigurationClient(connectionString, options);

            client.Set(new ConfigurationSetting("some_key", "some_value"));
            client.Delete("some_key");
        }
Exemplo n.º 2
0
        public void TestUserAgentHeader()
        {
            var response = new MockResponse(200);

            response.SetContent(SerializationHelpers.Serialize(_kvCollectionPageOne.ToArray(), TestHelpers.SerializeBatch));

            var mockTransport = new MockTransport(response);

            var clientOptions = new ConfigurationClientOptions
            {
                Transport = mockTransport
            };

            clientOptions.AddPolicy(new UserAgentHeaderPolicy(), HttpPipelinePosition.PerRetry);

            var config = new ConfigurationBuilder()
                         .AddAzureAppConfiguration(options =>
            {
                options.Client = new ConfigurationClient(_connectionString, clientOptions);
                options.Select("*", null);
            })
                         .Build();

            MockRequest request = mockTransport.SingleRequest;

            string appUserAgent = TracingUtils.GenerateUserAgent("SdkUserAgent");

            appUserAgent = appUserAgent.Replace("SdkUserAgent", "");
            Assert.True(request.Headers.TryGetValue("User-Agent", out string userAgentHeader));
            Assert.Contains(appUserAgent, userAgentHeader);
            Assert.NotEqual(appUserAgent.Length, userAgentHeader.Length);
        }
        public void TestUserAgentHeader()
        {
            // Regex to perform the following validations
            // 1. Contains the name of the configuration provider package
            // 2. Contains the informational version (not the assembly version) of the package
            // 3. Contains a valid version format for a stable or preview version of the package
            // 4. Contains the name and version of the App Configuration SDK package
            // 5. Contains the runtime information (target framework, OS description etc.) in the format set by the SDK
            // 6. Does not contain any additional components
            string userAgentRegex = @"^Microsoft\.Extensions\.Configuration\.AzureAppConfiguration/\d+\.\d+\.\d+(-preview)?(-\d+-\d+)?,azsdk-net-Data.AppConfiguration/[.+\w]+ \([.;\w\s]+\)$";

            var response = new MockResponse(200);

            response.SetContent(SerializationHelpers.Serialize(_kvCollectionPageOne.ToArray(), TestHelpers.SerializeBatch));

            var mockTransport = new MockTransport(response);
            var clientOptions = new ConfigurationClientOptions {
                Transport = mockTransport
            };

            clientOptions.AddPolicy(new UserAgentHeaderPolicy(), HttpPipelinePosition.PerCall);

            var config = new ConfigurationBuilder()
                         .AddAzureAppConfiguration(options =>
            {
                options.Client = new ConfigurationClient(_connectionString, clientOptions);
            }).Build();

            MockRequest request      = mockTransport.SingleRequest;
            string      appUserAgent = UserAgentHeaderPolicy.GenerateUserAgent();

            Assert.True(request.Headers.TryGetValue("User-Agent", out string userAgentHeader));
            Assert.Matches(userAgentRegex, userAgentHeader);
        }
Exemplo n.º 4
0
        private static ConfigurationClientOptions GetDefaultClientOptions()
        {
            var clientOptions = new ConfigurationClientOptions(ConfigurationClientOptions.ServiceVersion.V1_0);

            clientOptions.Retry.MaxRetries = MaxRetries;
            clientOptions.Retry.MaxDelay   = MaxRetryDelay;
            clientOptions.Retry.Mode       = RetryMode.Exponential;
            clientOptions.AddPolicy(new UserAgentHeaderPolicy(), HttpPipelinePosition.PerRetry);

            return(clientOptions);
        }
        public void TestUserAgentHeader()
        {
            var response = new MockResponse(200);

            response.SetContent(SerializationHelpers.Serialize(_kvCollectionPageOne.ToArray(), TestHelpers.SerializeBatch));

            var mockTransport = new MockTransport(response);

            var clientOptions = new ConfigurationClientOptions
            {
                Transport = mockTransport
            };

            clientOptions.AddPolicy(new UserAgentHeaderPolicy(), HttpPipelinePosition.PerRetry);

            var config = new ConfigurationBuilder()
                         .AddAzureAppConfiguration(options =>
            {
                options.Client = new ConfigurationClient(_connectionString, clientOptions);
                options.Select("*", null);
            })
                         .Build();

            MockRequest request = mockTransport.SingleRequest;

            string appUserAgent = TracingUtils.GenerateUserAgent("SdkUserAgent");

            // Validate the user agent format corresponds to informational version instead of assembly version
            // Informational version examples : 3.0.0 or 2.1.0-preview-010380001-1099
            // Assembly version examples : 3.0.0.0 or 2.1.0.0
            var nugetPackageVersionRegex = @"\d+\.\d+\.\d+(-preview-\d+-\d+)?";

            Assert.Matches($@"Microsoft\.Extensions\.Configuration\.AzureAppConfiguration/{nugetPackageVersionRegex} SdkUserAgent", appUserAgent);

            appUserAgent = appUserAgent.Replace("SdkUserAgent", "");
            Assert.True(request.Headers.TryGetValue("User-Agent", out string userAgentHeader));
            Assert.Contains(appUserAgent, userAgentHeader);
            Assert.NotEqual(appUserAgent.Length, userAgentHeader.Length);
        }