Skip to content

Commit d80f406

Browse files
committed
Expose flush API
1 parent 2529e16 commit d80f406

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.snowplowanalytics.snowplow.tracker.integration
2+
3+
import androidx.test.ext.junit.runners.AndroidJUnit4
4+
import androidx.test.platform.app.InstrumentationRegistry
5+
import com.snowplowanalytics.snowplow.Snowplow
6+
import com.snowplowanalytics.snowplow.configuration.EmitterConfiguration
7+
import com.snowplowanalytics.snowplow.configuration.NetworkConfiguration
8+
import com.snowplowanalytics.snowplow.emitter.BufferOption
9+
import com.snowplowanalytics.snowplow.event.ScreenView
10+
import com.snowplowanalytics.snowplow.network.HttpMethod
11+
import com.snowplowanalytics.snowplow.tracker.MockNetworkConnection
12+
import org.junit.Assert
13+
import org.junit.Test
14+
import org.junit.runner.RunWith
15+
16+
@RunWith(AndroidJUnit4::class)
17+
class FlushTest {
18+
19+
@Test
20+
fun testFlushEventsViaTracker() {
21+
val networkConnection = MockNetworkConnection(HttpMethod.GET, 200)
22+
val networkConfig = NetworkConfiguration(networkConnection)
23+
val emitterConfig = EmitterConfiguration().bufferOption(BufferOption.SmallGroup)
24+
25+
val tracker = Snowplow.createTracker(
26+
InstrumentationRegistry.getInstrumentation().targetContext,
27+
"flush" + Math.random().toString(),
28+
networkConfig,
29+
emitterConfig
30+
)
31+
32+
tracker.track(ScreenView("screenName"))
33+
Thread.sleep(200)
34+
Assert.assertEquals(0, networkConnection.countRequests())
35+
36+
tracker.emitter.flush()
37+
38+
var counter = 0
39+
while (networkConnection.countRequests() == 0) {
40+
Thread.sleep(500)
41+
counter++
42+
if (counter > 10) {
43+
return
44+
}
45+
}
46+
47+
Assert.assertEquals(1, networkConnection.countRequests())
48+
}
49+
}

snowplow-tracker/src/main/java/com/snowplowanalytics/core/emitter/EmitterControllerImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,10 @@ class EmitterControllerImpl(serviceProvider: ServiceProviderInterface) :
129129
emitter.resumeEmit()
130130
}
131131

132+
override fun flush() {
133+
emitter.flush()
134+
}
135+
132136
// Private methods
133137
private val dirtyConfig: EmitterConfiguration
134138
get() = serviceProvider.emitterConfiguration

snowplow-tracker/src/main/java/com/snowplowanalytics/snowplow/controller/EmitterController.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,9 @@ interface EmitterController : EmitterConfigurationInterface {
4040
* The emitter will resume emitting events again.
4141
*/
4242
fun resume()
43+
44+
/**
45+
* Flush all stored events.
46+
*/
47+
fun flush()
4348
}

0 commit comments

Comments
 (0)