@@ -17,6 +17,33 @@ import (
17
17
18
18
var saveTraces = flag .Bool ("savetraces" , false , "save traces collected by tests" )
19
19
20
+ func TestOverlappingDuration (t * testing.T ) {
21
+ cases := []struct {
22
+ start0 , end0 , start1 , end1 int64
23
+ want time.Duration
24
+ }{
25
+ {
26
+ 1 , 10 , 11 , 20 , 0 ,
27
+ },
28
+ {
29
+ 1 , 10 , 5 , 20 , 5 * time .Nanosecond ,
30
+ },
31
+ {
32
+ 1 , 10 , 2 , 8 , 6 * time .Nanosecond ,
33
+ },
34
+ }
35
+
36
+ for _ , tc := range cases {
37
+ s0 , e0 , s1 , e1 := tc .start0 , tc .end0 , tc .start1 , tc .end1
38
+ if got := overlappingDuration (s0 , e0 , s1 , e1 ); got != tc .want {
39
+ t .Errorf ("overlappingDuration(%d, %d, %d, %d)=%v; want %v" , s0 , e0 , s1 , e1 , got , tc .want )
40
+ }
41
+ if got := overlappingDuration (s1 , e1 , s0 , e0 ); got != tc .want {
42
+ t .Errorf ("overlappingDuration(%d, %d, %d, %d)=%v; want %v" , s1 , e1 , s0 , e0 , got , tc .want )
43
+ }
44
+ }
45
+ }
46
+
20
47
// prog0 starts three goroutines.
21
48
//
22
49
// goroutine 1: taskless span
@@ -247,14 +274,18 @@ func TestAnalyzeAnnotationGC(t *testing.T) {
247
274
switch task .name {
248
275
case "taskWithGC" :
249
276
if got <= 0 || got >= gcTime {
250
- t .Errorf ("%s reported %v as overlapping GC time; want (0, %v): %v" , task .name , got , gcTime , task )
277
+ t .Errorf ("%s reported %v as overlapping GC time; want (0, %v):\n %v" , task .name , got , gcTime , task )
251
278
buf := new (bytes.Buffer )
252
279
fmt .Fprintln (buf , "GC Events" )
253
280
for _ , ev := range res .gcEvents {
254
- fmt .Fprintf (buf , " %s\n " , ev )
281
+ fmt .Fprintf (buf , " %s -> %s\n " , ev , ev .Link )
282
+ }
283
+ fmt .Fprintln (buf , "Events in Task" )
284
+ for i , ev := range task .events {
285
+ fmt .Fprintf (buf , " %d: %s\n " , i , ev )
255
286
}
256
- fmt . Fprintf ( buf , "%s \n " , task )
257
- t .Logf ("%s" , buf )
287
+
288
+ t .Logf ("\n %s" , buf )
258
289
}
259
290
case "taskWithoutGC" :
260
291
if got != 0 {
0 commit comments