TryReleaseCapacity() public method

This method calls a method to release capacity back based on whether it was a successful response or a successful retry response. This is invoked by a retry request response.
public TryReleaseCapacity ( bool isRetryRequest, RetryCapacity retryCapacity ) : void
isRetryRequest bool
retryCapacity RetryCapacity Contains the RetryCapacity object for the said ServiceURL.
return void
 /// <summary>
 /// Virtual method that gets called on a success Response. If its a retry success response, the entire
 /// retry acquired capacity is released(default is 5). If its just a success response a lesser value capacity
 /// is released(default is 1).
 /// </summary>
 /// <param name="executionContext">Request context containing the state of the request.</param>
 public override void NotifySuccess(IExecutionContext executionContext)
 {
     if (executionContext.RequestContext.ClientConfig.ThrottleRetries && _retryCapacity != null)
     {
         _capacityManagerInstance.TryReleaseCapacity(executionContext.RequestContext.Retries > 0 ? true:false, _retryCapacity);
     }
 }
Example #2
0
        public void ReleaseCapacityUnitTest()
        {
            int throttleRetryCount = 5;
            int throttleRetryCost = 5;
            int throttleCost = 1;
            CapacityManager capacityManagerInstance = new CapacityManager(throttleRetryCount, throttleRetryCost, throttleCost);
            retryCapacity = capacityManagerInstance.GetRetryCapacity("ReleaseCapacityUnitTest");
            Assert.IsNotNull(retryCapacity);
            Assert.IsTrue(capacityManagerInstance.TryAcquireCapacity(retryCapacity));

            capacityManagerInstance.TryReleaseCapacity(true, retryCapacity);
            Assert.AreEqual(throttleRetryCost * throttleRetryCount, retryCapacity.AvailableCapacity);
            var consumedCapacity = retryCapacity.MaxCapacity - retryCapacity.AvailableCapacity;
            Assert.AreEqual(0, consumedCapacity);

            capacityManagerInstance.TryReleaseCapacity(false, retryCapacity);
            Assert.AreEqual(throttleRetryCost * throttleRetryCount, retryCapacity.AvailableCapacity);
            consumedCapacity = retryCapacity.MaxCapacity - retryCapacity.AvailableCapacity;
            Assert.AreEqual(0, consumedCapacity);
        }