From b5c8edb927baccd2468edb6ec903a853c184fd75 Mon Sep 17 00:00:00 2001 From: xiaoweii Date: Thu, 22 Aug 2024 21:42:02 +0800 Subject: [PATCH] fix: format issue, add test case --- .../clickstream/client/EventRecorder.java | 6 +++++- .../client/db/ClickstreamDBUtil.java | 8 ++++---- .../clickstream/EventRecorderTest.java | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/clickstream/src/main/java/software/aws/solution/clickstream/client/EventRecorder.java b/clickstream/src/main/java/software/aws/solution/clickstream/client/EventRecorder.java index feef170..cef0362 100644 --- a/clickstream/src/main/java/software/aws/solution/clickstream/client/EventRecorder.java +++ b/clickstream/src/main/java/software/aws/solution/clickstream/client/EventRecorder.java @@ -21,7 +21,6 @@ import com.amazonaws.logging.Log; import com.amazonaws.logging.LogFactory; -import java.util.concurrent.Executors; import software.aws.solution.clickstream.client.db.ClickstreamDBUtil; import software.aws.solution.clickstream.client.db.EventTable; import software.aws.solution.clickstream.client.network.NetRequest; @@ -30,6 +29,7 @@ import java.util.Locale; import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -210,6 +210,10 @@ String[] getBatchOfEvents(final Cursor cursor) { return new String[] {eventBuilder.toString(), lastEventId}; } + /** + * Method for send event immediately when event saved fail. + * @param event AnalyticsEvent + */ public void sendEventImmediately(AnalyticsEvent event) { Runnable task = () -> { NetRequest.uploadEvents("[" + event.toJSONObject().toString() + "]", diff --git a/clickstream/src/main/java/software/aws/solution/clickstream/client/db/ClickstreamDBUtil.java b/clickstream/src/main/java/software/aws/solution/clickstream/client/db/ClickstreamDBUtil.java index 9a22f75..34ed6c2 100644 --- a/clickstream/src/main/java/software/aws/solution/clickstream/client/db/ClickstreamDBUtil.java +++ b/clickstream/src/main/java/software/aws/solution/clickstream/client/db/ClickstreamDBUtil.java @@ -30,13 +30,13 @@ * Clickstream Database Util. */ public class ClickstreamDBUtil { + private static final Log LOG = LogFactory.getLog(EventRecorder.class); + /** * ClickstreamDBBase is a basic helper for accessing the database. */ private ClickstreamDBBase clickstreamDBBase; - private static final Log LOG = LogFactory.getLog(EventRecorder.class); - /** * Constructs a ClickstreamDBUtil with the given Context. * @@ -67,8 +67,8 @@ public Uri saveEvent(final AnalyticsEvent event) { Uri uri = null; try { uri = clickstreamDBBase.insert(clickstreamDBBase.getContentUri(), generateContentValuesFromEvent(event)); - } catch (SQLException e) { - LOG.info("SQLException: " + e.getMessage()); + } catch (SQLException error) { + LOG.info("SQLException: " + error.getMessage()); } return uri; } diff --git a/clickstream/src/test/java/software/aws/solution/clickstream/EventRecorderTest.java b/clickstream/src/test/java/software/aws/solution/clickstream/EventRecorderTest.java index 93d067f..32d5618 100644 --- a/clickstream/src/test/java/software/aws/solution/clickstream/EventRecorderTest.java +++ b/clickstream/src/test/java/software/aws/solution/clickstream/EventRecorderTest.java @@ -69,6 +69,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; @RunWith(RobolectricTestRunner.class) @Config(manifest = Config.NONE) @@ -567,6 +568,23 @@ public void testRecordEventRequestUploadTimestamp() throws Exception { assertTrue(requestResult); } + /** + * test save event failed and send event immediately. + * + * @throws Exception exception. + */ + @Test + public void testSaveEventFailedAndWillSendEventImmediately() throws Exception { + dbUtil = mock(ClickstreamDBUtil.class); + ReflectUtil.modifyFiled(eventRecorder, "dbUtil", dbUtil); + when(dbUtil.saveEvent(event)).thenReturn(null); + eventRecorder.recordEvent(event); + verify(log).error("Error to save event with EventType: testEvent"); + Thread.sleep(1500); + int bundleSequenceId = (int) ReflectUtil.getFiled(eventRecorder, "bundleSequenceId"); + assertTrue(bundleSequenceId > 1); + } + /** * common method to set request path. *