diff options
Diffstat (limited to 'integrationtests')
| -rw-r--r-- | integrationtests/sleep_test.go | 67 |
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") + } +} + |
