@@ -7,10 +7,12 @@ import (
7
7
"context"
8
8
"errors"
9
9
"testing"
10
+ "time"
10
11
11
12
"github.com/stretchr/testify/assert"
12
13
"github.com/stretchr/testify/mock"
13
14
"github.com/stretchr/testify/require"
15
+ "go.opentelemetry.io/collector/pdata/pcommon"
14
16
"go.uber.org/zap"
15
17
16
18
"github.com/jaegertracing/jaeger/internal/storage/elasticsearch/dbmodel"
@@ -86,10 +88,84 @@ func TestTraceReader_FindTraces(t *testing.T) {
86
88
}
87
89
88
90
func TestTraceReader_FindTraceIDs (t * testing.T ) {
89
- reader := NewTraceReader (spanstore.SpanReaderParams {
90
- Logger : zap .NewNop (),
91
- })
92
- assert .Panics (t , func () {
93
- reader .FindTraceIDs (context .Background (), v2api.TraceQueryParams {})
94
- })
91
+ coreReader := & mocks.CoreSpanReader {}
92
+ reader := TraceReader {spanReader : coreReader }
93
+ dbTraceIDs := []dbmodel.TraceID {
94
+ "00000000000000010000000000000000" ,
95
+ "00000000000000020000000000000000" ,
96
+ "00000000000000030000000000000000" ,
97
+ }
98
+ expected := make ([]v2api.FoundTraceID , 0 , len (dbTraceIDs ))
99
+ for _ , dbTraceID := range dbTraceIDs {
100
+ expected = append (expected , fromDBTraceId (t , dbTraceID ))
101
+ }
102
+ coreReader .On ("FindTraceIDs" , mock .Anything , mock .Anything ).Return (dbTraceIDs , nil )
103
+ for traceIds , err := range reader .FindTraceIDs (context .Background (), v2api.TraceQueryParams {
104
+ Attributes : pcommon .NewMap (),
105
+ }) {
106
+ require .NoError (t , err )
107
+ require .Equal (t , expected , traceIds )
108
+ }
109
+ }
110
+
111
+ func TestTraceReader_FindTraceIDs_Error (t * testing.T ) {
112
+ tests := []struct {
113
+ name string
114
+ errFromCoreReader error
115
+ traceIdsFromCoreReader []dbmodel.TraceID
116
+ expectedErr string
117
+ }{
118
+ {
119
+ name : "some error from core reader" ,
120
+ errFromCoreReader : errors .New ("some error from core reader" ),
121
+ expectedErr : "some error from core reader" ,
122
+ },
123
+ {
124
+ name : "wrong trace id sent from core reader" ,
125
+ traceIdsFromCoreReader : []dbmodel.TraceID {"wrong-id" },
126
+ expectedErr : "encoding/hex: invalid byte: U+0077 'w'" ,
127
+ },
128
+ }
129
+ for _ , test := range tests {
130
+ t .Run (test .name , func (t * testing.T ) {
131
+ coreReader := & mocks.CoreSpanReader {}
132
+ attrs := pcommon .NewMap ()
133
+ attrs .PutStr ("key1" , "val1" )
134
+ ts := time .Now ()
135
+ traceQueryParams := v2api.TraceQueryParams {
136
+ Attributes : attrs ,
137
+ StartTimeMin : ts ,
138
+ ServiceName : "testing-service-name" ,
139
+ OperationName : "testing-operation-name" ,
140
+ StartTimeMax : ts .Add (1 * time .Hour ),
141
+ DurationMin : 1 * time .Hour ,
142
+ DurationMax : 1 * time .Hour ,
143
+ SearchDepth : 10 ,
144
+ }
145
+ dbTraceQueryParams := dbmodel.TraceQueryParameters {
146
+ Tags : map [string ]string {"key1" : "val1" },
147
+ StartTimeMin : ts ,
148
+ ServiceName : "testing-service-name" ,
149
+ OperationName : "testing-operation-name" ,
150
+ StartTimeMax : ts .Add (1 * time .Hour ),
151
+ DurationMin : 1 * time .Hour ,
152
+ DurationMax : 1 * time .Hour ,
153
+ NumTraces : 10 ,
154
+ }
155
+ coreReader .On ("FindTraceIDs" , mock .Anything , dbTraceQueryParams ).Return (test .traceIdsFromCoreReader , test .errFromCoreReader )
156
+ reader := TraceReader {spanReader : coreReader }
157
+ for traceIds , err := range reader .FindTraceIDs (context .Background (), traceQueryParams ) {
158
+ require .ErrorContains (t , err , test .expectedErr )
159
+ require .Nil (t , traceIds )
160
+ }
161
+ })
162
+ }
163
+ }
164
+
165
+ func fromDBTraceId (t * testing.T , traceID dbmodel.TraceID ) v2api.FoundTraceID {
166
+ traceId , err := fromDbTraceId (traceID )
167
+ require .NoError (t , err )
168
+ return v2api.FoundTraceID {
169
+ TraceID : traceId ,
170
+ }
95
171
}
0 commit comments