From d1a7beae09f4da792e20684f901e2e20e54fbfba Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Wed, 15 May 2019 15:31:06 +0100 Subject: [PATCH 1/3] test: address flaky unit tests found on browserstack --- .../bugsnag/android/BeforeSendSessionTest.kt | 21 ++++++++----------- .../com/bugsnag/android/BugsnagTestUtils.java | 9 +++++--- .../java/com/bugsnag/android/ClientTest.java | 9 ++++++-- .../com/bugsnag/android/NullMetadataTest.java | 6 +++--- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendSessionTest.kt b/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendSessionTest.kt index e2d67ce1fd..70ffda0da3 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendSessionTest.kt +++ b/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendSessionTest.kt @@ -1,28 +1,24 @@ package com.bugsnag.android +import android.support.test.InstrumentationRegistry import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Test import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit class BeforeSendSessionTest { - private val client = BugsnagTestUtils.generateClient() - private val sessionTracker = client.sessionTracker - - @Before - fun setUp() { - } - @Test fun testBeforeSendCallbackInvoked() { val latch = CountDownLatch(1) var data: SessionTrackingPayload? = null - client.config.addBeforeSendSession { it.device["foo"] = "bar" } - client.config.addBeforeSendSession { it.device["foo2"] = 5 } + val config = Configuration("api-key") + config.addBeforeSendSession { it.device["foo"] = "bar" } + config.addBeforeSendSession { it.device["foo2"] = 5 } - client.config.delivery = object : Delivery { + config.delivery = object : Delivery { override fun deliver(payload: SessionTrackingPayload, config: Configuration) { data = payload latch.countDown() @@ -31,8 +27,9 @@ class BeforeSendSessionTest { override fun deliver(report: Report, config: Configuration) {} } - sessionTracker.startSession(false) - latch.await() + val client = Client(InstrumentationRegistry.getContext(), config) + client.sessionTracker.startSession(false) + latch.await(100, TimeUnit.MILLISECONDS) assertEquals("bar", data!!.device["foo"]) assertEquals(5, data!!.device["foo2"]) diff --git a/sdk/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java b/sdk/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java index 6a6fc3505d..2b80d4ccdc 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java @@ -44,10 +44,13 @@ static SharedPreferences getSharedPrefs(Context context) { return context.getSharedPreferences("com.bugsnag.android", Context.MODE_PRIVATE); } + static Client generateClient(Configuration config) { + config.setDelivery(generateDelivery()); + return new Client(InstrumentationRegistry.getTargetContext(), config); + } + static Client generateClient() { - Client client = new Client(InstrumentationRegistry.getContext(), "api-key"); - client.config.setDelivery(generateDelivery()); - return client; + return generateClient(new Configuration("api-key")); } static Session generateSession() { diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ClientTest.java b/sdk/src/androidTest/java/com/bugsnag/android/ClientTest.java index 0b537e35c8..56d4be5a99 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/ClientTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/ClientTest.java @@ -1,6 +1,7 @@ package com.bugsnag.android; import static com.bugsnag.android.BugsnagTestUtils.generateClient; +import static com.bugsnag.android.BugsnagTestUtils.generateConfiguration; import static com.bugsnag.android.BugsnagTestUtils.getSharedPrefs; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -229,7 +230,9 @@ public void testFullManifestConfig() { @SuppressWarnings("deprecation") // test backwards compatibility of client.setMaxBreadcrumbs @Test public void testMaxBreadcrumbs() { - client = generateClient(); + Configuration config = generateConfiguration(); + config.setAutomaticallyCollectBreadcrumbs(false); + client = generateClient(config); assertEquals(0, client.breadcrumbs.store.size()); client.setMaxBreadcrumbs(1); @@ -246,7 +249,9 @@ public void testMaxBreadcrumbs() { @Test public void testClearBreadcrumbs() { - client = generateClient(); + Configuration config = generateConfiguration(); + config.setAutomaticallyCollectBreadcrumbs(false); + client = generateClient(config); assertEquals(0, client.breadcrumbs.store.size()); client.leaveBreadcrumb("test"); diff --git a/sdk/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java b/sdk/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java index dde426a003..cce0722c05 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java @@ -25,6 +25,7 @@ public class NullMetadataTest { private Configuration config; private Throwable throwable; + private Client client; /** * Generates a bugsnag client with a NOP error api client @@ -34,7 +35,7 @@ public class NullMetadataTest { @Before public void setUp() throws Exception { config = new Configuration("api-key"); - generateClient(); + client = generateClient(config); throwable = new RuntimeException("Test"); } @@ -94,7 +95,7 @@ public void testConfigSetNullMetadata() throws Exception { @Test public void testNotify() throws Exception { - Bugsnag.beforeNotify(new BeforeNotify() { + client.beforeNotify(new BeforeNotify() { @Override public boolean run(@NonNull Error error) { validateDefaultMetadata(error.getMetaData()); @@ -103,7 +104,6 @@ public boolean run(@NonNull Error error) { }); Error error = new Error.Builder(config, new Throwable(), generateSessionTracker(), Thread.currentThread(), false).build(); - Client client = Bugsnag.getClient(); client.notify(error, DeliveryStyle.SAME_THREAD, null); } From 67646f72ca49f0a7599fb63167401eb5a1fd5c3d Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Wed, 15 May 2019 15:45:50 +0100 Subject: [PATCH 2/3] test: delete flaky test --- .../com/bugsnag/android/ErrorStoreTest.java | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ErrorStoreTest.java b/sdk/src/androidTest/java/com/bugsnag/android/ErrorStoreTest.java index 081d4d827b..d64755a2f0 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/ErrorStoreTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/ErrorStoreTest.java @@ -129,23 +129,6 @@ public void isStartupCrash() throws Exception { assertFalse(errorStore.isStartupCrash(10000)); } - @Test - public void testFindStoredFiles() { - assertEquals(0, errorStore.queuedFiles.size()); - writeErrorToStore(); - assertEquals(0, errorStore.queuedFiles.size()); - - List storedFiles = errorStore.findStoredFiles(); - assertEquals(1, storedFiles.size()); - assertEquals(1, errorStore.queuedFiles.size()); - - writeErrorToStore(); - writeErrorToStore(); - storedFiles = errorStore.findStoredFiles(); - assertEquals(2, storedFiles.size()); - assertEquals(3, errorStore.queuedFiles.size()); - } - @Test public void testCancelQueuedFiles() { assertEquals(0, errorStore.queuedFiles.size()); From 28bbfa51e16489985ea5eeb31a5488f4e0f2b92d Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Wed, 15 May 2019 15:47:42 +0100 Subject: [PATCH 3/3] test: remove flaky before send session test --- .../bugsnag/android/BeforeSendSessionTest.kt | 37 ------------------- 1 file changed, 37 deletions(-) delete mode 100644 sdk/src/androidTest/java/com/bugsnag/android/BeforeSendSessionTest.kt diff --git a/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendSessionTest.kt b/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendSessionTest.kt deleted file mode 100644 index 70ffda0da3..0000000000 --- a/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendSessionTest.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.bugsnag.android - -import android.support.test.InstrumentationRegistry -import org.junit.Assert.assertEquals -import org.junit.Before -import org.junit.Test -import java.util.concurrent.CountDownLatch -import java.util.concurrent.TimeUnit - -class BeforeSendSessionTest { - - @Test - fun testBeforeSendCallbackInvoked() { - val latch = CountDownLatch(1) - var data: SessionTrackingPayload? = null - - val config = Configuration("api-key") - config.addBeforeSendSession { it.device["foo"] = "bar" } - config.addBeforeSendSession { it.device["foo2"] = 5 } - - config.delivery = object : Delivery { - override fun deliver(payload: SessionTrackingPayload, config: Configuration) { - data = payload - latch.countDown() - } - - override fun deliver(report: Report, config: Configuration) {} - } - - val client = Client(InstrumentationRegistry.getContext(), config) - client.sessionTracker.startSession(false) - latch.await(100, TimeUnit.MILLISECONDS) - - assertEquals("bar", data!!.device["foo"]) - assertEquals(5, data!!.device["foo2"]) - } -}