diff --git a/Analytics/Flush/AsyncIntervalFlushHandler.cs b/Analytics/Flush/AsyncIntervalFlushHandler.cs index 368bf8d5..ade5f39b 100644 --- a/Analytics/Flush/AsyncIntervalFlushHandler.cs +++ b/Analytics/Flush/AsyncIntervalFlushHandler.cs @@ -70,6 +70,10 @@ private async Task PerformFlush() { await FlushImpl(); } + catch + { + Logger.Error("Flush couldn't be completed"); + } finally { _semaphore.Release(); diff --git a/Test.Net35/Flush/AsyncIntervalFlushHandlerTests.cs b/Test.Net35/Flush/AsyncIntervalFlushHandlerTests.cs index 4842e42e..edb1c706 100644 --- a/Test.Net35/Flush/AsyncIntervalFlushHandlerTests.cs +++ b/Test.Net35/Flush/AsyncIntervalFlushHandlerTests.cs @@ -183,6 +183,18 @@ public void IntervalFlushTriggerTwoConcurrentProcesses() _mockRequestHandler.Verify(r => r.MakeRequest(It.IsAny()), times: Times.Exactly(2)); } + [Test] + public void FlushCatchExceptions() + { + _mockRequestHandler.Setup(r => r.MakeRequest(It.IsAny())).Throws(); + + _ = _handler.Process(new Track(null, null, null, null)); + + _handler.Flush(); + + _mockRequestHandler.Verify(r => r.MakeRequest(It.IsAny()), times: Times.Exactly(1)); + } + [Test] public void IntervalFlushSendsBatchesThatAreSmallerThan512Kb() { diff --git a/Test.Net35/Stats/StatisticsTests.cs b/Test.Net35/Stats/StatisticsTests.cs index 886f0bc9..fcae298f 100644 --- a/Test.Net35/Stats/StatisticsTests.cs +++ b/Test.Net35/Stats/StatisticsTests.cs @@ -1,7 +1,7 @@ using NUnit.Framework; using Segment.Stats; -namespace Segment.Net35.Stats +namespace Segment.Test.Stats { [TestFixture] public class StatisticsTests diff --git a/Test.Net45/Flush/AsyncIntervalFlushHandlerTests.cs b/Test.Net45/Flush/AsyncIntervalFlushHandlerTests.cs index fce25a35..c9c9bd8a 100644 --- a/Test.Net45/Flush/AsyncIntervalFlushHandlerTests.cs +++ b/Test.Net45/Flush/AsyncIntervalFlushHandlerTests.cs @@ -241,6 +241,18 @@ public async Task IntervalFlushSendsBatchesThatAreSmallerThan512Kb() } + [Test] + public void FlushCatchExceptions() + { + _mockRequestHandler.Setup(r => r.MakeRequest(It.IsAny())).Throws(); + + _ = _handler.Process(new Track(null, null, null, null)); + + _handler.Flush(); + + _mockRequestHandler.Verify(r => r.MakeRequest(It.IsAny()), times: Times.Exactly(1)); + } + [Test] public async Task BatchMeetTheMaxNumberOfActions() { diff --git a/Test.NetStandard20/Flush/AsyncIntervalFlushHandlerTests.cs b/Test.NetStandard20/Flush/AsyncIntervalFlushHandlerTests.cs index fcfd2d64..e096d4f4 100644 --- a/Test.NetStandard20/Flush/AsyncIntervalFlushHandlerTests.cs +++ b/Test.NetStandard20/Flush/AsyncIntervalFlushHandlerTests.cs @@ -241,6 +241,18 @@ public async Task IntervalFlushSendsBatchesThatAreSmallerThan512Kb() } + [Test] + public void FlushCatchExceptions() + { + _mockRequestHandler.Setup(r => r.MakeRequest(It.IsAny())).Throws(); + + _ = _handler.Process(new Track(null, null, null, null)); + + _handler.Flush(); + + _mockRequestHandler.Verify(r => r.MakeRequest(It.IsAny()), times: Times.Exactly(1)); + } + [Test] public async Task BatchMeetTheMaxNumberOfActions() { diff --git a/Test/Flush/AsyncIntervalFlushHandlerTests.cs b/Test/Flush/AsyncIntervalFlushHandlerTests.cs index c966fe03..329d05b2 100644 --- a/Test/Flush/AsyncIntervalFlushHandlerTests.cs +++ b/Test/Flush/AsyncIntervalFlushHandlerTests.cs @@ -237,6 +237,18 @@ public async Task BatchMeetTheMaxNumberOfActions() _mockRequestHandler.Verify(r => r.MakeRequest(It.Is(b => b.batch.Count == 5)), Times.Exactly(1)); } + [Test] + public void FlushCatchExceptions() + { + _mockRequestHandler.Setup(r => r.MakeRequest(It.IsAny())).Throws(); + + _ = _handler.Process(new Track(null, null, null, null)); + + _handler.Flush(); + + _mockRequestHandler.Verify(r => r.MakeRequest(It.IsAny()), times: Times.Exactly(1)); + } + private string GetEventName(int size) { return string.Join("", Enumerable.Range(0, size).Select(_ => "a"));