public void WhenFailed_FiresBreakerFailureCountMetricEvent() { // Arrange var key = AnyString; var mockMetricEvents = new Mock <IMetricEvents>(); var mockMetrics = new Mock <ICommandMetrics>(); var mockBreaker = new Mock <ICircuitBreaker>(); mockBreaker.SetupGet(m => m.Name).Returns(key); mockBreaker.Setup(m => m.IsAllowing()).Returns(true); // We want to get past the initial rejection check. mockBreaker.SetupGet(m => m.Metrics).Returns(mockMetrics.Object); var mockCircuitBreakerFactory = new Mock <ICircuitBreakerFactory>(MockBehavior.Strict); mockCircuitBreakerFactory.Setup(m => m.GetCircuitBreaker(It.IsAny <GroupKey>())).Returns(mockBreaker.Object); var mockBreakerExceptionHandler = new Mock <IBreakerExceptionHandler>(MockBehavior.Strict); mockBreakerExceptionHandler.Setup(m => m.IsExceptionIgnored(It.IsAny <Type>())).Returns(false); var command = new NoOpCommand(); // Should be successful. var invoker = new BreakerInvoker(mockCircuitBreakerFactory.Object, mockMetricEvents.Object, mockBreakerExceptionHandler.Object); // Act invoker.ExecuteWithBreaker(command, CancellationToken.None); // Assert mockMetricEvents.Verify(m => m.BreakerSuccessCount(key, command.Name)); }
public void WhenRejected_FiresBreakerRejectedMetricEvent() { // Arrange var key = AnyString; var mockMetricEvents = new Mock <IMetricEvents>(); var mockMetrics = new Mock <ICommandMetrics>(); var mockBreaker = new Mock <ICircuitBreaker>(); mockBreaker.SetupGet(m => m.Name).Returns(key); mockBreaker.Setup(m => m.IsAllowing()).Returns(false); // We want to reject. mockBreaker.SetupGet(m => m.Metrics).Returns(mockMetrics.Object); var mockCircuitBreakerFactory = new Mock <ICircuitBreakerFactory>(MockBehavior.Strict); mockCircuitBreakerFactory.Setup(m => m.GetCircuitBreaker(It.IsAny <GroupKey>())).Returns(mockBreaker.Object); var mockBreakerExceptionHandler = new Mock <IBreakerExceptionHandler>(MockBehavior.Strict); mockBreakerExceptionHandler.Setup(m => m.IsExceptionIgnored(It.IsAny <Type>())).Returns(false); var command = new NoOpCommand(); var invoker = new BreakerInvoker(mockCircuitBreakerFactory.Object, mockMetricEvents.Object, mockBreakerExceptionHandler.Object); // Act + Assert Assert.Throws <CircuitBreakerRejectedException>(() => invoker.ExecuteWithBreaker(command, CancellationToken.None)); mockMetricEvents.Verify(m => m.RejectedByBreaker(key, command.Name)); }
public void ConstructorTest() { var sut = new NoOpCommand(); sut.CommandCode.Should().Be(0xff); sut.AcknowledgeCode.Should().Be(0xff); sut.RequiredBaudRate.Should().Be(250000); sut.Timeout.Should().Be(1000); }
public void UnexpectedCode_Test(byte errorCode) { SetupWrite(ftdiMock, new byte[] { 0xff }); SetupRead(ftdiMock, new byte[] { errorCode }); var sut = new NoOpCommand(); var result = sut.Execute(ftdiMock.Object); result.Should().Be(null); }
public void Successful_BootMode_Scenario_Test() { SetupWrite(ftdiMock, new byte[] { 0xff }); SetupRead(ftdiMock, new byte[] { 0x00 }); var sut = new NoOpCommand(); var result = sut.Execute(ftdiMock.Object); result.Success.Should().BeFalse(); }
public async void NoOpCommand_Execute() { // ARRANGE var command = new NoOpCommand(); // ACT await command.Execute(); // ASSERT Assert.True(true); // no-op must does nothing... :) }