Source file src/runtime/trace/trace_test.go

     1  // Copyright 2014 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package trace_test
     6  
     7  import (
     8  	"bytes"
     9  	"flag"
    10  	. "runtime/trace"
    11  	"testing"
    12  	"time"
    13  )
    14  
    15  var dumpTraces = flag.Bool("dump-traces", false, "dump traces to a file, even on success")
    16  
    17  // This file just contains smoke tests and tests of runtime/trace logic only.
    18  // It doesn't validate the resulting traces. See the internal/trace package for
    19  // more comprehensive end-to-end tests.
    20  
    21  func TestTraceStartStop(t *testing.T) {
    22  	if IsEnabled() {
    23  		t.Skip("skipping because -test.trace is set")
    24  	}
    25  	buf := new(bytes.Buffer)
    26  	if err := Start(buf); err != nil {
    27  		t.Fatalf("failed to start tracing: %v", err)
    28  	}
    29  	Stop()
    30  	size := buf.Len()
    31  	if size == 0 {
    32  		t.Fatalf("trace is empty")
    33  	}
    34  	time.Sleep(100 * time.Millisecond)
    35  	if size != buf.Len() {
    36  		t.Fatalf("trace writes after stop: %v -> %v", size, buf.Len())
    37  	}
    38  }
    39  
    40  func TestTraceDoubleStart(t *testing.T) {
    41  	if IsEnabled() {
    42  		t.Skip("skipping because -test.trace is set")
    43  	}
    44  	Stop()
    45  	buf := new(bytes.Buffer)
    46  	if err := Start(buf); err != nil {
    47  		t.Fatalf("failed to start tracing: %v", err)
    48  	}
    49  	if err := Start(buf); err == nil {
    50  		t.Fatalf("succeed to start tracing second time")
    51  	}
    52  	Stop()
    53  	Stop()
    54  }
    55  

View as plain text