@@ -198,6 +198,22 @@ func TestGetTraceDedupeSuccess(t *testing.T) {
198
198
}
199
199
}
200
200
201
+ func TestGetTraceWithTimeWindowSuccess (t * testing.T ) {
202
+ ts := initializeTestServer (t )
203
+ start_time := time .Date (1970 , time .January , 1 , 0 , 0 , 0 , 1000 , time .UTC ).Local ()
204
+ end_time := time .Date (1970 , time .January , 1 , 0 , 0 , 0 , 2000 , time .UTC ).Local ()
205
+ ts .spanReader .On ("GetTrace" , mock .AnythingOfType ("*context.valueCtx" ), spanstore.GetTraceParameters {
206
+ TraceID : model.TraceID {High : 0 , Low : 0x123456 },
207
+ StartTime : start_time ,
208
+ EndTime : end_time ,
209
+ }).Return (mockTrace , nil ).Once ()
210
+
211
+ var response structuredResponse
212
+ err := getJSON (ts .server .URL + `/api/traces/123456?start=1&end=2` , & response )
213
+ require .NoError (t , err )
214
+ assert .Empty (t , response .Errors )
215
+ }
216
+
201
217
func TestLogOnServerError (t * testing.T ) {
202
218
zapCore , logs := observer .New (zap .InfoLevel )
203
219
logger := zap .New (zapCore )
@@ -411,6 +427,24 @@ func TestSearchByTraceIDSuccess(t *testing.T) {
411
427
assert .Len (t , response .Data , 2 )
412
428
}
413
429
430
+ func TestSearchByTraceIDWithTimeWindowSuccess (t * testing.T ) {
431
+ ts := initializeTestServer (t )
432
+ expectedTraceId , _ := model .TraceIDFromString ("1" )
433
+ expectedQuery := spanstore.GetTraceParameters {
434
+ TraceID : expectedTraceId ,
435
+ StartTime : time .UnixMicro (1 ),
436
+ EndTime : time .UnixMicro (2 ),
437
+ }
438
+ ts .spanReader .On ("GetTrace" , mock .AnythingOfType ("*context.valueCtx" ), expectedQuery ).
439
+ Return (mockTrace , nil )
440
+
441
+ var response structuredResponse
442
+ err := getJSON (ts .server .URL + `/api/traces?traceID=1&start=1&end=2` , & response )
443
+ require .NoError (t , err )
444
+ assert .Empty (t , response .Errors )
445
+ assert .Len (t , response .Data , 1 )
446
+ }
447
+
414
448
func TestSearchByTraceIDSuccessWithArchive (t * testing.T ) {
415
449
archiveReadMock := & spanstoremocks.Reader {}
416
450
ts := initializeTestServerWithOptions (t , & tenancy.Manager {}, querysvc.QueryServiceOptions {
@@ -428,6 +462,29 @@ func TestSearchByTraceIDSuccessWithArchive(t *testing.T) {
428
462
assert .Len (t , response .Data , 2 )
429
463
}
430
464
465
+ func TestSearchByTraceIDSuccessWithArchiveAndTimeWindow (t * testing.T ) {
466
+ archiveReadMock := & spanstoremocks.Reader {}
467
+ ts := initializeTestServerWithOptions (t , & tenancy.Manager {}, querysvc.QueryServiceOptions {
468
+ ArchiveSpanReader : archiveReadMock ,
469
+ })
470
+ expectedTraceId , _ := model .TraceIDFromString ("1" )
471
+ expectedQuery := spanstore.GetTraceParameters {
472
+ TraceID : expectedTraceId ,
473
+ StartTime : time .UnixMicro (1 ),
474
+ EndTime : time .UnixMicro (2 ),
475
+ }
476
+ ts .spanReader .On ("GetTrace" , mock .AnythingOfType ("*context.valueCtx" ), expectedQuery ).
477
+ Return (nil , spanstore .ErrTraceNotFound )
478
+ archiveReadMock .On ("GetTrace" , mock .AnythingOfType ("*context.valueCtx" ), expectedQuery ).
479
+ Return (mockTrace , nil )
480
+
481
+ var response structuredResponse
482
+ err := getJSON (ts .server .URL + `/api/traces?traceID=1&start=1&end=2` , & response )
483
+ require .NoError (t , err )
484
+ assert .Empty (t , response .Errors )
485
+ assert .Len (t , response .Data , 1 )
486
+ }
487
+
431
488
func TestSearchByTraceIDNotFound (t * testing.T ) {
432
489
ts := initializeTestServer (t )
433
490
ts .spanReader .On ("GetTrace" , mock .AnythingOfType ("*context.valueCtx" ), mock .AnythingOfType ("spanstore.GetTraceParameters" )).
0 commit comments