@@ -10,64 +10,44 @@ import io.opentelemetry.api.common.AttributeKey
1010import io.opentelemetry.api.common.Attributes
1111import io.opentelemetry.sdk.common.CompletableResultCode
1212import io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions
13+ import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter
1314import io.opentelemetry.sdk.trace.data.SpanData
14- import io.opentelemetry.sdk.trace.export.SpanExporter
1515import org.assertj.core.api.Assertions.assertThat
1616import org.assertj.core.api.ThrowingConsumer
1717import org.junit.jupiter.api.Assertions.assertSame
18+ import org.junit.jupiter.api.BeforeEach
1819import org.junit.jupiter.api.Test
19- import org.junit.jupiter.api.extension.ExtendWith
20- import org.mockito.ArgumentCaptor
21- import org.mockito.Captor
22- import org.mockito.Mock
23- import org.mockito.Mockito
24- import org.mockito.Mockito.mock
25- import org.mockito.Mockito.`when`
26- import org.mockito.junit.jupiter.MockitoExtension
27- import java.util.function.Function
2820
29- @ExtendWith(MockitoExtension ::class )
3021internal class AttributeModifyingSpanExporterTest {
31- @Mock
32- private lateinit var exporter: SpanExporter
22+ private lateinit var exporter: InMemorySpanExporter
3323
34- @Captor
35- private lateinit var spansCaptor: ArgumentCaptor <MutableCollection <SpanData >>
24+ @BeforeEach
25+ fun setUp () {
26+ exporter = InMemorySpanExporter .create()
27+ }
3628
3729 @Test
3830 fun testEmptyMap () {
3931 val span1 = span(" span1" )
4032 val span2 = span(" span2" )
4133 val span3 = span(" span3" )
4234 val spans = listOf (span1, span2, span3)
43- val expectedResult: CompletableResultCode ? = mock(CompletableResultCode ::class .java)
44- `when `(exporter.export(spans)).thenReturn(expectedResult)
45-
46- val underTest =
47- AttributeModifyingSpanExporter (exporter, emptyMap())
35+ val underTest = AttributeModifyingSpanExporter (exporter) { _, value -> value }
4836
4937 val result = underTest.export(spans)
50- assertSame(expectedResult , result)
38+ assertSame(CompletableResultCode .ofSuccess() , result)
5139 }
5240
5341 @Test
5442 fun testRemappedToNull () {
5543 val key = AttributeKey .stringKey(" foo" )
5644 val span1 = span(" span1" , Attributes .of(key, " bar" ))
5745 val originalSpans = listOf (span1)
46+ val underTest = AttributeModifyingSpanExporter (exporter) { _, value -> null }
47+ val result = underTest.export(originalSpans)
5848
59- val remappers = mutableMapOf<AttributeKey <* >, Function <* , * >>()
60- remappers.put(key, Function { _: Any? -> null })
61-
62- val expectedResult = Mockito .mock(CompletableResultCode ::class .java)
63- `when `(exporter.export(spansCaptor.capture()))
64- .thenReturn(expectedResult)
65-
66- val underTest =
67- AttributeModifyingSpanExporter (exporter, remappers)
68-
69- underTest.export(originalSpans)
70- assertThat(spansCaptor.getValue())
49+ assertSame(CompletableResultCode .ofSuccess(), result)
50+ assertThat(exporter.finishedSpanItems)
7151 .satisfiesExactly(
7252 ThrowingConsumer { span: SpanData ? ->
7353 OpenTelemetryAssertions
@@ -87,23 +67,23 @@ internal class AttributeModifyingSpanExporterTest {
8767 val attr3 = buildAttr(3 )
8868 val span3 = span(" span3" , attr3)
8969 val spans = listOf (span1, span2, span3)
90- val modifiers = mutableMapOf<AttributeKey <* >, Function <* , * >>()
91- modifiers.put(AttributeKey .stringKey(" foo1" ), Function { x: Any? -> " " + x + x })
92- modifiers.put(AttributeKey .stringKey(" foo3" ), Function { x: Any? -> " 3$x$x " })
93- modifiers.put(AttributeKey .stringKey(" boop2" ), Function { x: Any? -> " 2$x$x " })
9470
95- val expectedResult = Mockito .mock(CompletableResultCode ::class .java)
96- `when `(exporter.export(spansCaptor.capture()))
97- .thenReturn(expectedResult)
98-
99- val underTest = AttributeModifyingSpanExporter (exporter, modifiers)
71+ val underTest =
72+ AttributeModifyingSpanExporter (exporter) { key, value ->
73+ when (key) {
74+ AttributeKey .stringKey(" foo1" ) -> " $value$value "
75+ AttributeKey .stringKey(" foo3" ) -> " 3$value$value "
76+ AttributeKey .stringKey(" boop2" ) -> " 2$value$value "
77+ else -> value
78+ }
79+ }
10080 val result = underTest.export(spans)
101- assertSame(expectedResult , result)
81+ assertSame(CompletableResultCode .ofSuccess() , result)
10282 assertAttributes()
10383 }
10484
10585 private fun assertAttributes () {
106- assertThat(spansCaptor.getValue() )
86+ assertThat(exporter.finishedSpanItems )
10787 .satisfiesExactly(
10888 ThrowingConsumer {
10989 OpenTelemetryAssertions
0 commit comments