public TryReleaseCapacity ( bool isRetryRequest, |
||
isRetryRequest | bool | |
retryCapacity | Contains the RetryCapacity object for the said ServiceURL. | |
리턴 | 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); } }
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); }