// Copyright 2014 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package trace_test import ( "bytes" "flag" . "runtime/trace" "testing" "time" ) var dumpTraces = flag.Bool("dump-traces", false, "dump traces to a file, even on success") // This file just contains smoke tests and tests of runtime/trace logic only. // It doesn't validate the resulting traces. See the internal/trace package for // more comprehensive end-to-end tests. func TestTraceStartStop(t *testing.T) { if IsEnabled() { t.Skip("skipping because -test.trace is set") } buf := new(bytes.Buffer) if err := Start(buf); err != nil { t.Fatalf("failed to start tracing: %v", err) } Stop() size := buf.Len() if size == 0 { t.Fatalf("trace is empty") } time.Sleep(100 * time.Millisecond) if size != buf.Len() { t.Fatalf("trace writes after stop: %v -> %v", size, buf.Len()) } } func TestTraceDoubleStart(t *testing.T) { if IsEnabled() { t.Skip("skipping because -test.trace is set") } Stop() buf := new(bytes.Buffer) if err := Start(buf); err != nil { t.Fatalf("failed to start tracing: %v", err) } if err := Start(buf); err == nil { t.Fatalf("succeed to start tracing second time") } Stop() Stop() }