1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
// Copyright 2020 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
package debugtracer
import (
"fmt"
"io"
"path/filepath"
"testing"
"time"
"github.com/google/syzkaller/pkg/osutil"
)
type DebugTracer interface {
Log(msg string, args ...any)
SaveFile(filename string, data []byte)
}
type GenericTracer struct {
WithTime bool
TraceWriter io.Writer
OutDir string
}
type TestTracer struct {
T *testing.T
}
type NullTracer struct {
}
func (gt *GenericTracer) Log(msg string, args ...any) {
if gt.WithTime {
timeStr := time.Now().Format("02-Jan-2006 15:04:05")
newArgs := append([]any{timeStr}, args...)
fmt.Fprintf(gt.TraceWriter, "%s: "+msg+"\n", newArgs...)
} else {
fmt.Fprintf(gt.TraceWriter, msg+"\n", args...)
}
}
func (gt *GenericTracer) SaveFile(filename string, data []byte) {
if gt.OutDir == "" {
return
}
osutil.MkdirAll(gt.OutDir)
osutil.WriteFile(filepath.Join(gt.OutDir, filename), data)
}
func (tt *TestTracer) Log(msg string, args ...any) {
tt.T.Log(msg, args)
}
func (tt *TestTracer) SaveFile(filename string, data []byte) {
// Not implemented.
}
func (nt *NullTracer) Log(msg string, args ...any) {
// Not implemented.
}
func (nt *NullTracer) SaveFile(filename string, data []byte) {
// Not implemented.
}
|