From 56c8977c78e31f615691d389f804687969e5fc3f Mon Sep 17 00:00:00 2001 From: Carlos Galan Date: Wed, 6 May 2020 10:37:43 -0600 Subject: [PATCH] LAPP-59 wrapping flush with try-catch --- Analytics/Flush/AsyncIntervalFlushHandler.cs | 4 ++++ Test.Net35/Flush/AsyncIntervalFlushHandlerTests.cs | 12 ++++++++++++ Test.Net35/Stats/StatisticsTests.cs | 2 +- Test.Net45/Flush/AsyncIntervalFlushHandlerTests.cs | 12 ++++++++++++ .../Flush/AsyncIntervalFlushHandlerTests.cs | 12 ++++++++++++ Test/Flush/AsyncIntervalFlushHandlerTests.cs | 12 ++++++++++++ 6 files changed, 53 insertions(+), 1 deletion(-) diff --git a/Analytics/Flush/AsyncIntervalFlushHandler.cs b/Analytics/Flush/AsyncIntervalFlushHandler.cs index a7fec118..7680737e 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 35438ea7..a9d88a0e 100644 --- a/Test.Net35/Flush/AsyncIntervalFlushHandlerTests.cs +++ b/Test.Net35/Flush/AsyncIntervalFlushHandlerTests.cs @@ -182,6 +182,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)); + } + private AsyncIntervalFlushHandler GetFlushHandler(int maxQueueSize, int maxBatchSize, int flushIntervalInMillis, int threads = 1) { return new AsyncIntervalFlushHandler(_mockBatchFactory.Object, _mockRequestHandler.Object, maxQueueSize, maxBatchSize, flushIntervalInMillis, threads); 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 fe2c4967..44233f94 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)); + } + private string GetEventName(int size) { return string.Join("", Enumerable.Range(0, size).Select(_ => "a")); diff --git a/Test.NetStandard20/Flush/AsyncIntervalFlushHandlerTests.cs b/Test.NetStandard20/Flush/AsyncIntervalFlushHandlerTests.cs index 50eab1be..7cef6693 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)); + } + private string GetEventName(int size) { return string.Join("", Enumerable.Range(0, size).Select(_ => "a")); diff --git a/Test/Flush/AsyncIntervalFlushHandlerTests.cs b/Test/Flush/AsyncIntervalFlushHandlerTests.cs index 67b6bb88..67982831 100644 --- a/Test/Flush/AsyncIntervalFlushHandlerTests.cs +++ b/Test/Flush/AsyncIntervalFlushHandlerTests.cs @@ -215,6 +215,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)); + } + private string GetEventName(int size) { return string.Join("", Enumerable.Range(0, size).Select(_ => "a"));