aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/trace/annotations_test.go
diff options
context:
space:
mode:
authorHana Kim <hakim@google.com>2018-02-26 16:40:25 -0500
committerHyang-Ah Hana Kim <hyangah@gmail.com>2018-02-28 02:42:15 +0000
commitb5bd5bfbc731c033955a0d4777ca34a9ac71020c (patch)
treecee5d7d53eb57c6b907271e5ae158e2a74ea085e /src/cmd/trace/annotations_test.go
parentf8973fcafbb1172d2f1bf98cda5da5ddbe744aa3 (diff)
downloadgo-b5bd5bfbc731c033955a0d4777ca34a9ac71020c.tar.xz
cmd/trace: fix overlappingDuration
Update #24081 Change-Id: Ieccfb03c51e86f35d4629a42959c80570bd93c33 Reviewed-on: https://go-review.googlesource.com/97555 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/trace/annotations_test.go')
-rw-r--r--src/cmd/trace/annotations_test.go39
1 files changed, 35 insertions, 4 deletions
diff --git a/src/cmd/trace/annotations_test.go b/src/cmd/trace/annotations_test.go
index 539ad81ecb..c9432846e2 100644
--- a/src/cmd/trace/annotations_test.go
+++ b/src/cmd/trace/annotations_test.go
@@ -17,6 +17,33 @@ import (
var saveTraces = flag.Bool("savetraces", false, "save traces collected by tests")
+func TestOverlappingDuration(t *testing.T) {
+ cases := []struct {
+ start0, end0, start1, end1 int64
+ want time.Duration
+ }{
+ {
+ 1, 10, 11, 20, 0,
+ },
+ {
+ 1, 10, 5, 20, 5 * time.Nanosecond,
+ },
+ {
+ 1, 10, 2, 8, 6 * time.Nanosecond,
+ },
+ }
+
+ for _, tc := range cases {
+ s0, e0, s1, e1 := tc.start0, tc.end0, tc.start1, tc.end1
+ if got := overlappingDuration(s0, e0, s1, e1); got != tc.want {
+ t.Errorf("overlappingDuration(%d, %d, %d, %d)=%v; want %v", s0, e0, s1, e1, got, tc.want)
+ }
+ if got := overlappingDuration(s1, e1, s0, e0); got != tc.want {
+ t.Errorf("overlappingDuration(%d, %d, %d, %d)=%v; want %v", s1, e1, s0, e0, got, tc.want)
+ }
+ }
+}
+
// prog0 starts three goroutines.
//
// goroutine 1: taskless span
@@ -247,14 +274,18 @@ func TestAnalyzeAnnotationGC(t *testing.T) {
switch task.name {
case "taskWithGC":
if got <= 0 || got >= gcTime {
- t.Errorf("%s reported %v as overlapping GC time; want (0, %v): %v", task.name, got, gcTime, task)
+ t.Errorf("%s reported %v as overlapping GC time; want (0, %v):\n%v", task.name, got, gcTime, task)
buf := new(bytes.Buffer)
fmt.Fprintln(buf, "GC Events")
for _, ev := range res.gcEvents {
- fmt.Fprintf(buf, " %s\n", ev)
+ fmt.Fprintf(buf, " %s -> %s\n", ev, ev.Link)
+ }
+ fmt.Fprintln(buf, "Events in Task")
+ for i, ev := range task.events {
+ fmt.Fprintf(buf, " %d: %s\n", i, ev)
}
- fmt.Fprintf(buf, "%s\n", task)
- t.Logf("%s", buf)
+
+ t.Logf("\n%s", buf)
}
case "taskWithoutGC":
if got != 0 {