github.com/hikaru7719/go@v0.0.0-20181025140707-c8b2ac68906a/src/internal/traceparser/parser_test.go (about) 1 // Copyright 2018 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 traceparser 6 7 import ( 8 "io/ioutil" 9 "os" 10 "path/filepath" 11 "runtime" 12 "strings" 13 "testing" 14 ) 15 16 var ( 17 // testfiles from the old trace parser 18 otherDir = "../trace/testdata/" 19 want = map[string]bool{"http_1_9_good": true, "http_1_10_good": true, "http_1_11_good": true, 20 "stress_1_9_good": true, "stress_1_10_good": true, "stress_1_11_good": true, 21 "stress_start_stop_1_9_good": true, "stress_start_stop_1_10_good": true, 22 "stress_start_stop_1_11_good": true, "user_task_span_1_11_good": true, 23 24 "http_1_5_good": false, "http_1_7_good": false, 25 "stress_1_5_good": false, "stress_1_5_unordered": false, "stress_1_7_good": false, 26 "stress_start_stop_1_5_good": false, "stress_start_stop_1_7_good": false, 27 } 28 ) 29 30 func TestRemoteFiles(t *testing.T) { 31 if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { 32 t.Skipf("files from outside the package are not available on %s/%s", runtime.GOOS, runtime.GOARCH) 33 } 34 files, err := ioutil.ReadDir(otherDir) 35 if err != nil { 36 t.Fatal(err) 37 } 38 for _, f := range files { 39 fname := filepath.Join(otherDir, f.Name()) 40 p, err := New(fname) 41 if err == nil { 42 err = p.Parse(0, 1<<62, nil) 43 } 44 if err == nil != want[f.Name()] { 45 t.Errorf("%s: got %v expected %v, err=%v", 46 f.Name(), err == nil, want[f.Name()], err) 47 } 48 } 49 } 50 51 func TestLocalFiles(t *testing.T) { 52 53 files, err := ioutil.ReadDir("./testdata") 54 if err != nil { 55 t.Fatalf("failed to read ./testdata: %v", err) 56 } 57 for _, f := range files { 58 fname := filepath.Join("./testdata", f.Name()) 59 p, err := New(fname) 60 if err == nil { 61 err = p.Parse(0, 1<<62, nil) 62 } 63 switch { 64 case strings.Contains(f.Name(), "good"), 65 strings.Contains(f.Name(), "weird"): 66 if err != nil { 67 t.Errorf("unexpected failure %v %s", err, f.Name()) 68 } 69 case strings.Contains(f.Name(), "bad"): 70 if err == nil { 71 t.Errorf("bad file did not fail %s", f.Name()) 72 } 73 default: 74 t.Errorf("untyped file %v %s", err, f.Name()) 75 } 76 } 77 } 78 79 func TestStats(t *testing.T) { 80 // Need just one good file to see that OSStats work properly, 81 files, err := ioutil.ReadDir("./testdata") 82 if err != nil { 83 t.Fatal(err) 84 } 85 for _, f := range files { 86 if !strings.HasPrefix(f.Name(), "good") { 87 continue 88 } 89 fname := filepath.Join("./testdata", f.Name()) 90 p, err := New(fname) 91 if err != nil { 92 t.Fatal(err) 93 } 94 stat := p.OSStats() 95 if stat.Bytes == 0 || stat.Seeks == 0 || stat.Reads == 0 { 96 t.Errorf("OSStats impossible %v", stat) 97 } 98 fd, err := os.Open(fname) 99 if err != nil { 100 t.Fatal(err) 101 } 102 pb, err := ParseBuffer(fd) 103 if err != nil { 104 t.Fatal(err) 105 } 106 stat = pb.OSStats() 107 if stat.Seeks != 0 || stat.Reads != 0 { 108 t.Errorf("unexpected positive results %v", stat) 109 } 110 } 111 }