Skip to content

Commit

Permalink
Expose flush API
Browse files Browse the repository at this point in the history
  • Loading branch information
mscwilson committed Apr 17, 2024
1 parent 2529e16 commit 59b8c63
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.snowplowanalytics.snowplow.tracker.integration

import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import com.snowplowanalytics.snowplow.Snowplow
import com.snowplowanalytics.snowplow.configuration.EmitterConfiguration
import com.snowplowanalytics.snowplow.configuration.NetworkConfiguration
import com.snowplowanalytics.snowplow.emitter.BufferOption
import com.snowplowanalytics.snowplow.event.ScreenView
import com.snowplowanalytics.snowplow.network.HttpMethod
import com.snowplowanalytics.snowplow.tracker.MockNetworkConnection
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
class FlushTest {

@Test
fun testFlushEventsViaTracker() {
val networkConnection = MockNetworkConnection(HttpMethod.GET, 200)
val networkConfig = NetworkConfiguration(networkConnection)
val emitterConfig = EmitterConfiguration().bufferOption(BufferOption.SmallGroup)

val tracker = Snowplow.createTracker(
InstrumentationRegistry.getInstrumentation().targetContext,
"flush" + Math.random().toString(),
networkConfig,
trackerConfig,
emitterConfig
)

tracker.track(ScreenView("screenName"))
Thread.sleep(200)
Assert.assertEquals(0, networkConnection.countRequests())

tracker.emitter.flush()

var counter = 0
while (networkConnection.countRequests() == 0) {
Thread.sleep(500)
counter++
if (counter > 10) {
return
}
}

Assert.assertEquals(1, networkConnection.countRequests())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ class EmitterControllerImpl(serviceProvider: ServiceProviderInterface) :
emitter.resumeEmit()
}

override fun flush() {
emitter.flush()
}

// Private methods
private val dirtyConfig: EmitterConfiguration
get() = serviceProvider.emitterConfiguration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,9 @@ interface EmitterController : EmitterConfigurationInterface {
* The emitter will resume emitting events again.
*/
fun resume()

/**
* Flush all stored events.
*/
fun flush()
}

0 comments on commit 59b8c63

Please sign in to comment.