Add perf tracepoint collection flag (#1664)

* Add tracepoint collector option for perf collector

Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>
This commit is contained in:
Daniel Hodges 2020-04-17 06:02:08 -04:00 committed by GitHub
commit b14168cf6a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 245 additions and 17 deletions

View file

@ -180,8 +180,74 @@ func TestPerfCPUFlagToCPUs(t *testing.T) {
if test.exCpus[i] != cpus[i] {
t.Fatalf(
"expected cpus %v, got %v",
test.exCpus,
cpus,
test.exCpus[i],
cpus[i],
)
}
}
})
}
}
func TestPerfTracepointFlagToTracepoints(t *testing.T) {
tests := []struct {
name string
flag []string
exTracepoints []*perfTracepoint
errStr string
}{
{
name: "valid single tracepoint",
flag: []string{"sched:sched_kthread_stop"},
exTracepoints: []*perfTracepoint{
{
subsystem: "sched",
event: "sched_kthread_stop",
},
},
},
{
name: "valid multiple tracepoints",
flag: []string{"sched:sched_kthread_stop", "sched:sched_process_fork"},
exTracepoints: []*perfTracepoint{
{
subsystem: "sched",
event: "sched_kthread_stop",
},
{
subsystem: "sched",
event: "sched_process_fork",
},
},
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
tracepoints, err := perfTracepointFlagToTracepoints(test.flag)
if test.errStr != "" {
if err != nil {
t.Fatal("expected error to not be nil")
}
if test.errStr != err.Error() {
t.Fatalf(
"expected error %q, got %q",
test.errStr,
err.Error(),
)
}
return
}
if err != nil {
t.Fatal(err)
}
for i := range tracepoints {
if test.exTracepoints[i].event != tracepoints[i].event &&
test.exTracepoints[i].subsystem != tracepoints[i].subsystem {
t.Fatalf(
"expected tracepoint %v, got %v",
test.exTracepoints[i],
tracepoints[i],
)
}
}