-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathdtrace_test.go
91 lines (68 loc) · 2.11 KB
/
dtrace_test.go
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package dtrace
import (
"testing"
"reflect"
)
func TestNewProvider(t *testing.T) {
provider := NewProvider("golang", "dtrace")
if provider.Name != "golang" {
t.Error("Provider constructor didn't assign name")
}
if provider.Module != "dtrace" {
t.Error("Provider constructor didn't assign module")
}
}
func TestAddProbe(t *testing.T) {
provider := NewProvider("golang", "dtrace")
provider.AddProbe("Hello", "world", reflect.Int, reflect.String)
if len(provider.Probes) != 1 {
t.Error("AddProbe didn't add a probe to the provider")
}
}
func TestEnable(t *testing.T) {
provider := NewProvider("golang", "dtrace")
if err := provider.Enable(); err == nil {
t.Error("Enabling a provider without probes should fail")
}
provider.AddProbe("Hello", "World", reflect.Int, reflect.Int)
if provider.IsEnabled() {
t.Error("Provider isn't disabled by default")
}
if err := provider.Enable(); err != nil {
t.Error("Error enabling valid provider")
}
if !provider.IsEnabled() {
t.Error("Couldn't enable Provider")
}
if err := provider.Enable(); err != nil {
t.Error("Got fatal error when enabling an already enabled provider")
}
if provider.Error() == "" {
t.Error("Didn't get a non-fatal error when enabling an already enabled provider")
}
}
func TestFire(t *testing.T) {
provider := NewProvider("golang", "dtrace")
// Testing that we don't panic while firing probes
defer func() {
if x := recover(); x != nil {
t.Errorf("Panic firing probes: %s", x)
}
}()
probe1 := provider.AddProbe("Probe", "1")
probe2 := provider.AddProbe("Probe", "2", reflect.Int)
probe3 := provider.AddProbe("Probe", "3", reflect.Int, reflect.String)
provider.Enable()
probe1.Fire()
probe2.Fire(1)
probe3.Fire(1, "lasers!")
}
func TestString(t *testing.T) {
provider := NewProvider("golang", "dtrace")
if provider.String() != "golang:dtrace" {
t.Error("Provider String() didn't return name:module")
}
if probe := provider.AddProbe("Hello", "World"); probe.String() != "Hello:World" {
t.Error("Probe String() didn't return function:name")
}
}