Exemplo n.º 1
0
        /// <summary>
        /// Adds a policy for Azure resource manager client http call.
        /// </summary>
        /// <param name="policy"> The http call policy in the pipeline. </param>
        /// <param name="position"> The position of the http call policy in the pipeline. </param>
        public new void AddPolicy(HttpPipelinePolicy policy, HttpPipelinePosition position)
        {
            // TODO policy lists are internal hence we don't have acces to them by inheriting ClientOptions in this Asembly, this is a wrapper for now to convert to the concrete
            // policy options.
            switch (position)
            {
            case HttpPipelinePosition.PerCall:
                PerCallPolicies.Add(policy);
                break;

            case HttpPipelinePosition.PerRetry:
                PerRetryPolicies.Add(policy);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(position), position, null);
            }

            base.AddPolicy(policy, position);
        }
        public async Task CanAddCustomPolicy(HttpPipelinePosition position, int expectedCount)
        {
            var policy    = new CounterPolicy();
            var transport = new MockTransport(new MockResponse(503), new MockResponse(200));

            var options = new TestOptions();

            options.AddPolicy(policy, position);
            options.Transport = transport;

            HttpPipeline pipeline = HttpPipelineBuilder.Build(options);

            using Request request = transport.CreateRequest();
            request.Method        = RequestMethod.Get;
            request.Uri.Reset(new Uri("http://example.com"));

            Response response = await pipeline.SendRequestAsync(request, CancellationToken.None);

            Assert.AreEqual(200, response.Status);
            Assert.AreEqual(expectedCount, policy.ExecutionCount);
        }
Exemplo n.º 3
0
 public static void AddPolicy(this BlobClientOptions options, HttpPipelinePolicy policy, HttpPipelinePosition position)
 {
     options.AddPolicy(position, policy);
 }