Skip to content

Commit e1134e0

Browse files
committed
Reduce the usage of fake workers in integration tests
1 parent 804e59a commit e1134e0

File tree

5 files changed

+82
-135
lines changed

5 files changed

+82
-135
lines changed

embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/testcases/FlutterInternalInterfaceTest.kt

Lines changed: 25 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,15 @@ package io.embrace.android.embracesdk.testcases
22

33
import androidx.test.ext.junit.runners.AndroidJUnit4
44
import io.embrace.android.embracesdk.LogExceptionType
5-
import io.embrace.android.embracesdk.concurrency.BlockingScheduledExecutorService
65
import io.embrace.android.embracesdk.fakes.config.FakeInstrumentedConfig
76
import io.embrace.android.embracesdk.fakes.config.FakeProjectConfig
87
import io.embrace.android.embracesdk.internal.EmbraceInternalApi
8+
import io.embrace.android.embracesdk.internal.arch.schema.EmbType
99
import io.embrace.android.embracesdk.internal.payload.AppFramework
10-
import io.embrace.android.embracesdk.internal.worker.Worker
1110
import io.embrace.android.embracesdk.testframework.SdkIntegrationTestRule
12-
import io.embrace.android.embracesdk.testframework.actions.EmbraceSetupInterface
1311
import io.embrace.android.embracesdk.testframework.assertions.assertMatches
1412
import io.embrace.android.embracesdk.testframework.assertions.assertOtelLogReceived
15-
import io.embrace.android.embracesdk.testframework.assertions.getLastLog
13+
import io.embrace.android.embracesdk.testframework.assertions.getLogOfType
1614
import io.opentelemetry.api.logs.Severity
1715
import io.opentelemetry.semconv.ExceptionAttributes
1816
import org.junit.Assert.assertEquals
@@ -27,20 +25,16 @@ import org.junit.runner.RunWith
2725
@RunWith(AndroidJUnit4::class)
2826
internal class FlutterInternalInterfaceTest {
2927

30-
private val instrumentedConfig = FakeInstrumentedConfig(project = FakeProjectConfig(
31-
appId = "abcde",
32-
appFramework = "flutter"
33-
))
34-
35-
private lateinit var executor: BlockingScheduledExecutorService
28+
private val instrumentedConfig = FakeInstrumentedConfig(
29+
project = FakeProjectConfig(
30+
appId = "abcde",
31+
appFramework = "flutter"
32+
)
33+
)
3634

3735
@Rule
3836
@JvmField
39-
val testRule: SdkIntegrationTestRule = SdkIntegrationTestRule {
40-
EmbraceSetupInterface(workerToFake = Worker.Background.LogMessageWorker).also {
41-
executor = it.getFakedWorkerExecutor()
42-
}
43-
}
37+
val testRule: SdkIntegrationTestRule = SdkIntegrationTestRule()
4438

4539
@Test
4640
fun `flutter without values should return defaults`() {
@@ -169,11 +163,10 @@ internal class FlutterInternalInterfaceTest {
169163
expectedContext,
170164
expectedLibrary,
171165
)
172-
flushLogs()
173166
}
174167
},
175168
assertAction = {
176-
val log = getSingleLogEnvelope().getLastLog()
169+
val log = getSingleLogEnvelope().getLogOfType(EmbType.System.FlutterException)
177170

178171
assertOtelLogReceived(
179172
logReceived = log,
@@ -186,11 +179,13 @@ internal class FlutterInternalInterfaceTest {
186179
expectedEmbType = "sys.flutter_exception",
187180
expectedState = "foreground",
188181
)
189-
log.attributes?.assertMatches(mapOf(
190-
ExceptionAttributes.EXCEPTION_STACKTRACE.key to expectedStacktrace,
191-
"emb.exception.context" to expectedContext,
192-
"emb.exception.library" to expectedLibrary,
193-
))
182+
log.attributes?.assertMatches(
183+
mapOf(
184+
ExceptionAttributes.EXCEPTION_STACKTRACE.key to expectedStacktrace,
185+
"emb.exception.context" to expectedContext,
186+
"emb.exception.library" to expectedLibrary,
187+
)
188+
)
194189
}
195190
)
196191
}
@@ -214,11 +209,10 @@ internal class FlutterInternalInterfaceTest {
214209
expectedContext,
215210
expectedLibrary,
216211
)
217-
flushLogs()
218212
}
219213
},
220214
assertAction = {
221-
val log = getSingleLogEnvelope().getLastLog()
215+
val log = getSingleLogEnvelope().getLogOfType(EmbType.System.FlutterException)
222216

223217
assertOtelLogReceived(
224218
logReceived = log,
@@ -231,17 +225,14 @@ internal class FlutterInternalInterfaceTest {
231225
expectedEmbType = "sys.flutter_exception",
232226
expectedState = "foreground",
233227
)
234-
log.attributes?.assertMatches(mapOf(
235-
ExceptionAttributes.EXCEPTION_STACKTRACE.key to expectedStacktrace,
236-
"emb.exception.context" to expectedContext,
237-
"emb.exception.library" to expectedLibrary,
238-
))
228+
log.attributes?.assertMatches(
229+
mapOf(
230+
ExceptionAttributes.EXCEPTION_STACKTRACE.key to expectedStacktrace,
231+
"emb.exception.context" to expectedContext,
232+
"emb.exception.library" to expectedLibrary,
233+
)
234+
)
239235
}
240236
)
241237
}
242-
243-
private fun flushLogs() {
244-
executor.runCurrentlyBlocked()
245-
testRule.bootstrapper.logModule.logOrchestrator.flush(false)
246-
}
247238
}

embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/testcases/features/LogFeatureTest.kt

Lines changed: 28 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,15 @@ package io.embrace.android.embracesdk.testcases.features
33
import androidx.test.ext.junit.runners.AndroidJUnit4
44
import io.embrace.android.embracesdk.LogExceptionType
55
import io.embrace.android.embracesdk.Severity
6-
import io.embrace.android.embracesdk.concurrency.BlockingScheduledExecutorService
76
import io.embrace.android.embracesdk.fakes.config.FakeEnabledFeatureConfig
87
import io.embrace.android.embracesdk.fakes.config.FakeInstrumentedConfig
8+
import io.embrace.android.embracesdk.internal.arch.schema.EmbType
99
import io.embrace.android.embracesdk.internal.payload.Envelope
1010
import io.embrace.android.embracesdk.internal.payload.LogPayload
1111
import io.embrace.android.embracesdk.internal.utils.getSafeStackTrace
12-
import io.embrace.android.embracesdk.internal.worker.Worker
1312
import io.embrace.android.embracesdk.testframework.SdkIntegrationTestRule
14-
import io.embrace.android.embracesdk.testframework.actions.EmbraceSetupInterface
1513
import io.embrace.android.embracesdk.testframework.assertions.assertOtelLogReceived
16-
import io.embrace.android.embracesdk.testframework.assertions.getLastLog
14+
import io.embrace.android.embracesdk.testframework.assertions.getLogOfType
1715
import io.embrace.android.embracesdk.testframework.assertions.getOtelSeverity
1816
import org.junit.Rule
1917
import org.junit.Test
@@ -22,16 +20,15 @@ import org.junit.runner.RunWith
2220
@RunWith(AndroidJUnit4::class)
2321
internal class LogFeatureTest {
2422

25-
private val instrumentedConfig = FakeInstrumentedConfig(enabledFeatures = FakeEnabledFeatureConfig(bgActivityCapture = true))
26-
private lateinit var executor: BlockingScheduledExecutorService
23+
private val instrumentedConfig = FakeInstrumentedConfig(
24+
enabledFeatures = FakeEnabledFeatureConfig(
25+
bgActivityCapture = true
26+
)
27+
)
2728

2829
@Rule
2930
@JvmField
30-
val testRule: SdkIntegrationTestRule = SdkIntegrationTestRule {
31-
EmbraceSetupInterface(workerToFake = Worker.Background.LogMessageWorker).also {
32-
executor = it.getFakedWorkerExecutor()
33-
}
34-
}
31+
val testRule: SdkIntegrationTestRule = SdkIntegrationTestRule()
3532

3633
@Test
3734
fun `log info message sent in foreground`() {
@@ -40,11 +37,11 @@ internal class LogFeatureTest {
4037
testCaseAction = {
4138
recordSession {
4239
embrace.logInfo("test message")
43-
flushLogs()
40+
4441
}
4542
},
4643
assertAction = {
47-
val log = getSingleLogEnvelope().getLastLog()
44+
val log = getSingleLogEnvelope().getLogOfType(EmbType.System.Log)
4845
assertOtelLogReceived(
4946
logReceived = log,
5047
expectedMessage = "test message",
@@ -62,10 +59,10 @@ internal class LogFeatureTest {
6259
instrumentedConfig = instrumentedConfig,
6360
testCaseAction = {
6461
embrace.logWarning("test message")
65-
flushLogs()
62+
clock.tick(2000L)
6663
},
6764
assertAction = {
68-
val log = getSingleLogEnvelope().getLastLog()
65+
val log = getSingleLogEnvelope().getLogOfType(EmbType.System.Log)
6966
assertOtelLogReceived(
7067
logReceived = log,
7168
expectedMessage = "test message",
@@ -82,10 +79,11 @@ internal class LogFeatureTest {
8279
instrumentedConfig = instrumentedConfig,
8380
testCaseAction = {
8481
embrace.logError("test message")
85-
flushLogs()
82+
clock.tick(2000L)
83+
8684
},
8785
assertAction = {
88-
val log = getSingleLogEnvelope().getLastLog()
86+
val log = getSingleLogEnvelope().getLogOfType(EmbType.System.Log)
8987
assertOtelLogReceived(
9088
log,
9189
expectedMessage = "test message",
@@ -105,7 +103,7 @@ internal class LogFeatureTest {
105103
val expectedMessage = "test message ${severity.name}"
106104
embrace.logMessage(expectedMessage, severity)
107105
}
108-
flushLogs()
106+
clock.tick(2000L)
109107
},
110108
assertAction = {
111109
val logs = groupLogsBySeverity(getSingleLogEnvelope())
@@ -132,7 +130,7 @@ internal class LogFeatureTest {
132130
val expectedMessage = "test message ${severity.name}"
133131
embrace.logMessage(expectedMessage, severity, customProperties)
134132
}
135-
flushLogs()
133+
clock.tick(2000L)
136134
},
137135
assertAction = {
138136
val logs = groupLogsBySeverity(getSingleLogEnvelope())
@@ -156,10 +154,10 @@ internal class LogFeatureTest {
156154
instrumentedConfig = instrumentedConfig,
157155
testCaseAction = {
158156
embrace.logException(testException)
159-
flushLogs()
157+
clock.tick(2000L)
160158
},
161159
assertAction = {
162-
val log = getSingleLogEnvelope().getLastLog()
160+
val log = getSingleLogEnvelope().getLogOfType(EmbType.System.Exception)
163161
assertOtelLogReceived(
164162
log,
165163
expectedMessage = checkNotNull(testException.message),
@@ -181,10 +179,10 @@ internal class LogFeatureTest {
181179
instrumentedConfig = instrumentedConfig,
182180
testCaseAction = {
183181
embrace.logException(testException, Severity.INFO)
184-
flushLogs()
182+
clock.tick(2000L)
185183
},
186184
assertAction = {
187-
val log = getSingleLogEnvelope().getLastLog()
185+
val log = getSingleLogEnvelope().getLogOfType(EmbType.System.Exception)
188186
assertOtelLogReceived(
189187
log,
190188
expectedMessage = checkNotNull(testException.message),
@@ -211,7 +209,7 @@ internal class LogFeatureTest {
211209
customProperties
212210
)
213211
}
214-
flushLogs()
212+
clock.tick(2000L)
215213
},
216214
assertAction = {
217215
val logs = groupLogsBySeverity(getSingleLogEnvelope())
@@ -243,7 +241,7 @@ internal class LogFeatureTest {
243241
val expectedMessage = "test message ${severity.name}"
244242
embrace.logException(testException, severity, customProperties, expectedMessage)
245243
}
246-
flushLogs()
244+
clock.tick(2000L)
247245
},
248246
assertAction = {
249247
val logs = groupLogsBySeverity(getSingleLogEnvelope())
@@ -273,10 +271,10 @@ internal class LogFeatureTest {
273271
instrumentedConfig = instrumentedConfig,
274272
testCaseAction = {
275273
embrace.logCustomStacktrace(stacktrace)
276-
flushLogs()
274+
clock.tick(2000L)
277275
},
278276
assertAction = {
279-
val log = getSingleLogEnvelope().getLastLog()
277+
val log = getSingleLogEnvelope().getLogOfType(EmbType.System.Exception)
280278
assertOtelLogReceived(
281279
log,
282280
expectedMessage = "",
@@ -298,7 +296,7 @@ internal class LogFeatureTest {
298296
Severity.values().forEach { severity ->
299297
embrace.logCustomStacktrace(stacktrace, severity)
300298
}
301-
flushLogs()
299+
clock.tick(2000L)
302300
},
303301
assertAction = {
304302
val logs = groupLogsBySeverity(getSingleLogEnvelope())
@@ -326,7 +324,7 @@ internal class LogFeatureTest {
326324
Severity.values().forEach { severity ->
327325
embrace.logCustomStacktrace(stacktrace, severity, customProperties)
328326
}
329-
flushLogs()
327+
clock.tick(2000L)
330328
},
331329
assertAction = {
332330
val logs = groupLogsBySeverity(getSingleLogEnvelope())
@@ -361,7 +359,7 @@ internal class LogFeatureTest {
361359
expectedMessage
362360
)
363361
}
364-
flushLogs()
362+
clock.tick(2000L)
365363
},
366364
assertAction = {
367365
val envelope = getSingleLogEnvelope()
@@ -384,11 +382,6 @@ internal class LogFeatureTest {
384382
)
385383
}
386384

387-
private fun flushLogs() {
388-
executor.runCurrentlyBlocked()
389-
testRule.bootstrapper.logModule.logOrchestrator.flush(false)
390-
}
391-
392385
private fun getEmbraceSeverity(severityNumber: Int): Severity {
393386
return when (severityNumber) {
394387
io.opentelemetry.api.logs.Severity.INFO.severityNumber -> Severity.INFO

0 commit comments

Comments
 (0)