summaryrefslogtreecommitdiff
path: root/integrationtests/sleep_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-20 14:37:41 +0300
committerPaul Buetow <paul@buetow.org>2026-05-20 14:37:41 +0300
commit96355c79a38032ab4bd880b3b3ff4192ae709795 (patch)
tree7a395706e3db680f6e695c8602501741eed6ad45 /integrationtests/sleep_test.go
parentf063e626a28339735da583142e5af864a60c2111 (diff)
task 27: add KindSleep and requested sleep metric
Diffstat (limited to 'integrationtests/sleep_test.go')
-rw-r--r--integrationtests/sleep_test.go67
1 files changed, 67 insertions, 0 deletions
diff --git a/integrationtests/sleep_test.go b/integrationtests/sleep_test.go
new file mode 100644
index 0000000..a465420
--- /dev/null
+++ b/integrationtests/sleep_test.go
@@ -0,0 +1,67 @@
+package integrationtests
+
+import "testing"
+
+const (
+ sleepParquetDuration = 6
+ sleepWorkloadStartupEnv = "IOR_WORKLOAD_STARTUP_DELAY_MS=1000"
+)
+
+func TestSleepTracepoints(t *testing.T) {
+ h := newTestHarness(t)
+ h.WorkloadEnv = []string{sleepWorkloadStartupEnv}
+ result, pid, err := h.Run("sleep-syscalls", defaultDuration)
+ if err != nil {
+ t.Fatalf("run scenario sleep-syscalls: %v", err)
+ }
+
+ AssertNoUnexpectedPID(t, result, pid)
+ AssertNoUnexpectedComm(t, result, "ioworkload")
+ AssertEventsPresent(t, result, []ExpectedEvent{
+ {Tracepoint: "enter_nanosleep", Comm: "ioworkload", MinCount: 1},
+ {Tracepoint: "enter_clock_nanosleep", Comm: "ioworkload", MinCount: 1},
+ })
+}
+
+func TestSleepRequestedTimespecInParquet(t *testing.T) {
+ h := newTestHarness(t)
+ h.WorkloadEnv = []string{sleepWorkloadStartupEnv}
+ path, pid, err := h.RunParquet("sleep-syscalls", sleepParquetDuration)
+ if err != nil {
+ t.Fatalf("run sleep-syscalls parquet scenario: %v", err)
+ }
+
+ rows := filterRecordsByPID(readParquetRecords(t, path), uint32(pid))
+ if len(rows) == 0 {
+ t.Fatalf("expected parquet rows for workload PID %d", pid)
+ }
+
+ var sawNanosleep bool
+ var sawClockNanosleep bool
+ for _, row := range rows {
+ switch row.Syscall {
+ case "nanosleep":
+ if row.RequestedSleepNS == 2_000_000 {
+ sawNanosleep = true
+ }
+ if row.Bytes != 0 {
+ t.Fatalf("nanosleep bytes = %d, want 0", row.Bytes)
+ }
+ case "clock_nanosleep":
+ if row.RequestedSleepNS == 3_000_000 {
+ sawClockNanosleep = true
+ }
+ if row.Bytes != 0 {
+ t.Fatalf("clock_nanosleep bytes = %d, want 0", row.Bytes)
+ }
+ }
+ }
+
+ if !sawNanosleep {
+ t.Fatal("expected nanosleep row with RequestedSleepNS=2000000")
+ }
+ if !sawClockNanosleep {
+ t.Fatal("expected clock_nanosleep row with RequestedSleepNS=3000000")
+ }
+}
+