Skip to content

Commit 4193a4e

Browse files
committed
test(payload): test EventPayload trimming
1 parent e471682 commit 4193a4e

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.bugsnag.android
2+
3+
import org.junit.Assert.assertEquals
4+
import org.junit.Test
5+
import org.junit.runner.RunWith
6+
import org.mockito.Mock
7+
import org.mockito.junit.MockitoJUnitRunner
8+
9+
private const val MAX_STRING_LENGTH = 256
10+
private const val BIG_STRING_LENGTH = MAX_STRING_LENGTH * 4
11+
12+
@RunWith(MockitoJUnitRunner::class)
13+
class EventPayloadTrimTest {
14+
15+
@Mock
16+
lateinit var client: Client
17+
18+
@Test
19+
fun testTrimPayload() {
20+
val event = BugsnagTestUtils.generateEvent()
21+
event.addMetadata("trimming", "bigString", "*".repeat(BIG_STRING_LENGTH))
22+
23+
// remove any existing threads to keep this test simple
24+
event.threads.clear()
25+
repeat(times = 10) { threadIdx ->
26+
event.addThread(threadIdx.toLong(), "test thread $threadIdx")
27+
}
28+
29+
event.breadcrumbs.clear()
30+
repeat(times = 10) { breadcrumbIdx ->
31+
event.leaveBreadcrumb("breadcrumb $breadcrumbIdx")
32+
}
33+
34+
val config = BugsnagTestUtils.generateImmutableConfig(
35+
Configuration("abc123").apply {
36+
maxBreadcrumbs = 2
37+
maxReportedThreads = 2
38+
maxStringValueLength = MAX_STRING_LENGTH
39+
}
40+
)
41+
42+
val notifier = Notifier(name = "Test Notifier", version = "9.9.9")
43+
val payload = EventPayload(null, event, null, notifier, config)
44+
val trimmed = requireNotNull(payload.trimToSize(BIG_STRING_LENGTH).event)
45+
46+
assertEquals(
47+
"${"*".repeat(MAX_STRING_LENGTH)}***<${BIG_STRING_LENGTH - MAX_STRING_LENGTH}> CHARS TRUNCATED***",
48+
trimmed.getMetadata("trimming")!!["bigString"]
49+
)
50+
51+
val threads = trimmed.threads
52+
assertEquals(3, threads.size)
53+
assertEquals("test thread 0", threads[0].name)
54+
assertEquals("test thread 1", threads[1].name)
55+
assertEquals(
56+
"[8 threads omitted as the maxReportedThreads limit (2) was exceeded]",
57+
threads[2].name
58+
)
59+
60+
val breadcrumbs = trimmed.breadcrumbs
61+
assertEquals(1, breadcrumbs.size)
62+
assertEquals("Removed, along with 9 older breadcrumbs, to reduce payload size", breadcrumbs[0].message)
63+
}
64+
}

0 commit comments

Comments
 (0)