summaryrefslogtreecommitdiff
path: root/integrationtests/priority_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'integrationtests/priority_test.go')
-rw-r--r--integrationtests/priority_test.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/integrationtests/priority_test.go b/integrationtests/priority_test.go
new file mode 100644
index 0000000..9e41185
--- /dev/null
+++ b/integrationtests/priority_test.go
@@ -0,0 +1,33 @@
+package integrationtests
+
+import "testing"
+
+// priorityTraceArgs restricts tracing to the two priority-family syscalls the
+// priority-basic workload issues. The tracer names each tracepoint after the
+// underlying kernel syscall, so the names below match the syscall names
+// verbatim.
+var priorityTraceArgs = []string{"-trace-syscalls", "getpriority,setpriority"}
+
+// TestPriorityBasic verifies the getpriority/setpriority pair is traced
+// end-to-end. The priority-basic workload self-targets both calls
+// (PRIO_PROCESS, who 0 == the calling process): it reads the current nice value
+// with getpriority and re-applies the IDENTICAL value with setpriority (a
+// byte-for-byte no-op), so the process's priority is never altered and no
+// privilege is required. Both syscalls classify as FamilyProcess with a KindNull
+// enter (PRIO_PROCESS is an opcode, not an fd) and an UNCLASSIFIED return (the
+// value is a nice value, not a byte count), so asserting the enter tracepoints
+// appear — attributed to the ioworkload process — is the right end-to-end check.
+func TestPriorityBasic(t *testing.T) {
+ h := newTestHarness(t)
+ result, pid, err := h.RunWithIorArgs("priority-basic", defaultDuration, priorityTraceArgs)
+ if err != nil {
+ t.Fatalf("run scenario priority-basic: %v", err)
+ }
+
+ AssertNoUnexpectedPID(t, result, pid)
+ AssertNoUnexpectedComm(t, result, "ioworkload")
+ AssertEventsPresent(t, result, []ExpectedEvent{
+ {Tracepoint: "enter_getpriority", Comm: "ioworkload", MinCount: 1},
+ {Tracepoint: "enter_setpriority", Comm: "ioworkload", MinCount: 1},
+ })
+}