protected override async Task <IExecutionResult> ExecuteInternal(BreakerExecutionContext executionContext) { await this._lock.WaitAsync(); try { var t = executionContext.Action(); t.Wait(); this._successCount++; if (this._successCount > 0) { this.StateManager.Close(); } return(new SuccessExecutionResult(base.GetResultFactory(t))); } catch (Exception e) { return(await this.Trip(e, executionContext)); } finally { this._lock.Release(); } }
protected override Task <IExecutionResult> ExecuteInternal(BreakerExecutionContext executionContext) { var t = executionContext.Action(); t.Wait(); return(Task.FromResult <IExecutionResult>(new SuccessExecutionResult(base.GetResultFactory(t)))); }
protected override Task <IExecutionResult> Trip(Exception e, BreakerExecutionContext executionContext) { Interlocked.Increment(ref this._failCount); if (_failCount > 1) { this.StateManager.Open(); } return(Task.FromResult <IExecutionResult>(new FailedExecutionResult(() => null, this.StateManager.CurrentState.State, e))); }
public async Task BreakerTest1() { //ARRANGE var validator = new BackchannelCertificateValidatorMock(() => true); var webClient = new HttpDocumentRetrieverMock(validator); var manager = new StateManager(new TimeManager(), new StateProviderMock()); BreakerProxy.StateProviderFactory(() => manager); var breaker = BreakerProxy.Instance; var executingContext = new BreakerExecutionContext { Action = () => webClient.GetDocumentAsync("https://dg-mfb/idp/shibboleth", CancellationToken.None) }; //ACT var response = await breaker.Execute(executingContext); //ASSERT }
protected override Task <IExecutionResult> Trip(Exception e, BreakerExecutionContext executionContext) { throw new NotImplementedException(); }
protected override Task <IExecutionResult> ExecuteInternal(BreakerExecutionContext executionContext) { return(Task.FromResult <IExecutionResult>(new FailedExecutionResult(() => null, State.Open, null))); }
protected override Task <IExecutionResult> ExecuteInternal(BreakerExecutionContext executionContext) { throw new NotImplementedException(); }
public async Task <IBrakerResponse> Execute(BreakerExecutionContext executionContext) { var result = await this._stateManager.Execute(executionContext); return(result.Execute()); }
protected override Task <IExecutionResult> Trip(Exception e, BreakerExecutionContext executionContext) { this.StateManager.Open(); return(Task.FromResult <IExecutionResult>(new FailedExecutionResult(() => null, this.StateManager.CurrentState.State, e))); }
public Task <IExecutionResult> Execute(BreakerExecutionContext executionContext) { return(this.CurrentState.Execute(executionContext)); }