|
48 | 48 | import io.opencensus.trace.TraceOptions; |
49 | 49 | import io.opencensus.trace.Tracestate; |
50 | 50 | import io.opencensus.trace.export.SpanData; |
| 51 | +import io.opencensus.trace.export.SpanData.TimedEvent; |
| 52 | +import java.util.Collections; |
51 | 53 | import java.util.List; |
52 | 54 | import org.junit.Test; |
53 | 55 | import org.junit.runner.RunWith; |
@@ -103,15 +105,15 @@ public void exportShouldConvertFromSpanDataToJaegerThriftSpan() throws SenderExc |
103 | 105 | assertThat(span.startTime).isEqualTo(MILLISECONDS.toMicros(startTime)); |
104 | 106 | assertThat(span.duration).isEqualTo(MILLISECONDS.toMicros(endTime - startTime)); |
105 | 107 |
|
106 | | - assertThat(span.tags.size()).isEqualTo(4); |
| 108 | + assertThat(span.tags.size()).isEqualTo(5); |
107 | 109 | assertThat(span.tags) |
108 | 110 | .containsExactly( |
109 | 111 | new Tag("BOOL", TagType.BOOL).setVBool(false), |
110 | 112 | new Tag("LONG", TagType.LONG).setVLong(Long.MAX_VALUE), |
111 | | - new Tag("span.kind", TagType.STRING).setVStr("server"), |
| 113 | + new Tag(JaegerExporterHandler.SPAN_KIND, TagType.STRING).setVStr("server"), |
112 | 114 | new Tag("STRING", TagType.STRING) |
113 | | - .setVStr( |
114 | | - "Judge of a man by his questions rather than by his answers. -- Voltaire")); |
| 115 | + .setVStr("Judge of a man by his questions rather than by his answers. -- Voltaire"), |
| 116 | + new Tag(JaegerExporterHandler.STATUS_CODE, TagType.LONG).setVLong(0)); |
115 | 117 |
|
116 | 118 | assertThat(span.logs.size()).isEqualTo(2); |
117 | 119 | Log log = span.logs.get(0); |
@@ -142,6 +144,43 @@ public void exportShouldConvertFromSpanDataToJaegerThriftSpan() throws SenderExc |
142 | 144 | assertThat(reference.refType).isEqualTo(SpanRefType.CHILD_OF); |
143 | 145 | } |
144 | 146 |
|
| 147 | + @Test |
| 148 | + public void convertErrorSpanDataToJaegerThriftSpan() throws SenderException { |
| 149 | + long startTime = 1519629870001L; |
| 150 | + long endTime = 1519630148002L; |
| 151 | + String statusMessage = "timeout"; |
| 152 | + SpanData spanData = |
| 153 | + SpanData.create( |
| 154 | + sampleSpanContext(), |
| 155 | + SpanId.fromBytes(new byte[] {(byte) 0x7F, FF, FF, FF, FF, FF, FF, FF}), |
| 156 | + true, |
| 157 | + "test", |
| 158 | + Kind.SERVER, |
| 159 | + Timestamp.fromMillis(startTime), |
| 160 | + SpanData.Attributes.create(Collections.<String, AttributeValue>emptyMap(), 0), |
| 161 | + SpanData.TimedEvents.create(Collections.<TimedEvent<Annotation>>emptyList(), 0), |
| 162 | + SpanData.TimedEvents.create(Collections.<TimedEvent<MessageEvent>>emptyList(), 0), |
| 163 | + SpanData.Links.create(Collections.<Link>emptyList(), 0), |
| 164 | + 0, |
| 165 | + Status.DEADLINE_EXCEEDED.withDescription(statusMessage), |
| 166 | + Timestamp.fromMillis(endTime)); |
| 167 | + |
| 168 | + handler.export(singletonList(spanData)); |
| 169 | + |
| 170 | + verify(mockSender).send(eq(process), captor.capture()); |
| 171 | + List<Span> spans = captor.getValue(); |
| 172 | + |
| 173 | + assertThat(spans.size()).isEqualTo(1); |
| 174 | + Span span = spans.get(0); |
| 175 | + |
| 176 | + assertThat(span.tags.size()).isEqualTo(3); |
| 177 | + assertThat(span.tags) |
| 178 | + .containsExactly( |
| 179 | + new Tag(JaegerExporterHandler.SPAN_KIND, TagType.STRING).setVStr("server"), |
| 180 | + new Tag(JaegerExporterHandler.STATUS_CODE, TagType.LONG).setVLong(4), |
| 181 | + new Tag(JaegerExporterHandler.STATUS_MESSAGE, TagType.STRING).setVStr(statusMessage)); |
| 182 | + } |
| 183 | + |
145 | 184 | private static SpanContext sampleSpanContext() { |
146 | 185 | return SpanContext.create( |
147 | 186 | TraceId.fromBytes(new byte[] {FF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}), |
|
0 commit comments