@@ -24,7 +24,7 @@ import com.expedia.open.tracing.Span
24
24
import com .expedia .open .tracing .api .Trace
25
25
import com .expedia .open .tracing .buffer .SpanBuffer
26
26
import com .expedia .www .haystack .trace .commons .clients .cassandra .CassandraTableSchema
27
- import com .expedia .www .haystack .trace .reader .stores .readers .cassandra .{ CassandraReadRawTracesResultListener , CassandraReadTraceResultListener }
27
+ import com .expedia .www .haystack .trace .reader .stores .readers .cassandra .CassandraReadRawTracesResultListener
28
28
import com .expedia .www .haystack .trace .reader .unit .BaseUnitTestSpec
29
29
import io .grpc .{Status , StatusException }
30
30
import org .easymock .EasyMock
@@ -40,6 +40,7 @@ class CassandraReadRawTracesResultListenerSpec extends BaseUnitTestSpec {
40
40
val resultSet = mock[ResultSet ]
41
41
val promise = mock[Promise [Seq [Trace ]]]
42
42
val failureMeter = mock[Meter ]
43
+ val tracesFailures = mock[Meter ]
43
44
val timer = mock[Timer .Context ]
44
45
45
46
val mockSpanBufferRow_1 = mock[Row ]
@@ -56,8 +57,10 @@ class CassandraReadRawTracesResultListenerSpec extends BaseUnitTestSpec {
56
57
57
58
58
59
val capturedTraces = EasyMock .newCapture[Seq [Trace ]]()
60
+ val capturedMeter = EasyMock .newCapture[Int ]()
59
61
expecting {
60
62
timer.close()
63
+ tracesFailures.mark(EasyMock .capture(capturedMeter))
61
64
mockReadResult.get().andReturn(resultSet)
62
65
resultSet.all().andReturn(List (mockSpanBufferRow_1, mockSpanBufferRow_2, mockSpanBufferRow_3).asJava)
63
66
mockSpanBufferRow_1.getBytes(CassandraTableSchema .SPANS_COLUMN_NAME ).andReturn(ByteBuffer .wrap(spanBuffer_1.toByteArray))
@@ -66,14 +69,16 @@ class CassandraReadRawTracesResultListenerSpec extends BaseUnitTestSpec {
66
69
promise.success(EasyMock .capture(capturedTraces)).andReturn(promise)
67
70
}
68
71
69
- whenExecuting(mockReadResult, promise, failureMeter, timer, resultSet, mockSpanBufferRow_1, mockSpanBufferRow_2, mockSpanBufferRow_3) {
70
- val listener = new CassandraReadRawTracesResultListener (mockReadResult, timer, failureMeter, promise )
72
+ whenExecuting(mockReadResult, promise, tracesFailures, failureMeter, timer, resultSet, mockSpanBufferRow_1, mockSpanBufferRow_2, mockSpanBufferRow_3) {
73
+ val listener = new CassandraReadRawTracesResultListener (mockReadResult, promise, timer, failureMeter, tracesFailures, 2 )
71
74
listener.run()
72
75
val traceIdSpansMap : Map [String , Set [String ]] = capturedTraces.getValue.map(capturedTrace =>
73
76
capturedTrace.getTraceId -> capturedTrace.getChildSpansList.asScala.map(_.getSpanId).toSet).toMap
74
77
75
78
traceIdSpansMap(" TRACE_ID1" ) shouldEqual Set (" SPAN_ID_1" , " SPAN_ID_2" )
76
79
traceIdSpansMap(" TRACE_ID3" ) shouldEqual Set (" SPAN_ID_3" )
80
+
81
+ capturedMeter.getValue shouldEqual 0
77
82
}
78
83
}
79
84
@@ -82,6 +87,7 @@ class CassandraReadRawTracesResultListenerSpec extends BaseUnitTestSpec {
82
87
val resultSet = mock[ResultSet ]
83
88
val promise = mock[Promise [Seq [Trace ]]]
84
89
val failureMeter = mock[Meter ]
90
+ val tracesFailures = mock[Meter ]
85
91
val timer = mock[Timer .Context ]
86
92
87
93
val mockSpanBufferRow_1 = mock[Row ]
@@ -90,42 +96,49 @@ class CassandraReadRawTracesResultListenerSpec extends BaseUnitTestSpec {
90
96
val span_1 = Span .newBuilder().setTraceId(" TRACE_ID" ).setSpanId(" SPAN_ID_1" )
91
97
val spanBuffer_1 = SpanBuffer .newBuilder().setTraceId(" TRACE_ID" ).addChildSpans(span_1).build()
92
98
99
+ val capturedMeter = EasyMock .newCapture[Int ]()
93
100
expecting {
94
101
timer.close()
95
102
failureMeter.mark()
103
+ tracesFailures.mark(EasyMock .capture(capturedMeter))
96
104
mockReadResult.get().andReturn(resultSet)
97
105
resultSet.all().andReturn(List (mockSpanBufferRow_1, mockSpanBufferRow_2).asJava)
98
106
mockSpanBufferRow_1.getBytes(CassandraTableSchema .SPANS_COLUMN_NAME ).andReturn(ByteBuffer .wrap(spanBuffer_1.toByteArray))
99
107
mockSpanBufferRow_2.getBytes(CassandraTableSchema .SPANS_COLUMN_NAME ).andReturn(ByteBuffer .wrap(" illegal bytes" .getBytes))
100
108
promise.failure(EasyMock .anyObject()).andReturn(promise)
101
109
}
102
110
103
- whenExecuting(mockReadResult, promise, failureMeter, timer, resultSet, mockSpanBufferRow_1, mockSpanBufferRow_2) {
104
- val listener = new CassandraReadRawTracesResultListener (mockReadResult, timer, failureMeter, promise )
111
+ whenExecuting(mockReadResult, promise, failureMeter, tracesFailures, timer, resultSet, mockSpanBufferRow_1, mockSpanBufferRow_2) {
112
+ val listener = new CassandraReadRawTracesResultListener (mockReadResult, promise, timer, failureMeter, tracesFailures, 1 )
105
113
listener.run()
114
+ capturedMeter.getValue shouldEqual 1
106
115
}
107
116
}
108
117
109
118
it(" should return an exception for empty traceId" ) {
110
119
val mockReadResult = mock[ResultSetFuture ]
111
120
val resultSet = mock[ResultSet ]
112
- val promise = mock[Promise [Trace ]]
121
+ val promise = mock[Promise [Seq [ Trace ] ]]
113
122
val failureMeter = mock[Meter ]
123
+ val tracesFailures = mock[Meter ]
114
124
val timer = mock[Timer .Context ]
115
125
116
126
val capturedException = EasyMock .newCapture[StatusException ]()
127
+ val capturedMeter = EasyMock .newCapture[Int ]()
117
128
expecting {
118
129
timer.close()
119
130
failureMeter.mark()
131
+ tracesFailures.mark(EasyMock .capture(capturedMeter))
120
132
mockReadResult.get().andReturn(resultSet)
121
133
resultSet.all().andReturn(List [Row ]().asJava)
122
134
promise.failure(EasyMock .capture(capturedException)).andReturn(promise)
123
135
}
124
136
125
- whenExecuting(mockReadResult, promise, failureMeter, timer, resultSet) {
126
- val listener = new CassandraReadTraceResultListener (mockReadResult, timer, failureMeter, promise )
137
+ whenExecuting(mockReadResult, promise, failureMeter, tracesFailures, timer, resultSet) {
138
+ val listener = new CassandraReadRawTracesResultListener (mockReadResult, promise, timer, failureMeter, tracesFailures, 0 )
127
139
listener.run()
128
140
capturedException.getValue.getStatus.getCode shouldEqual Status .NOT_FOUND .getCode
141
+ capturedMeter.getValue shouldEqual 0
129
142
}
130
143
}
131
144
}
0 commit comments