summaryrefslogtreecommitdiff
path: root/integrationtests/aio_test.go
blob: e41e854b680e8eb6386ae3d768c8929445aa28b9 (plain)
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
package integrationtests

import "testing"

// aioTraceArgs traces the classic Linux AIO (io_setup) family syscalls plus
// close. io_setup/io_destroy are classified KindNull (FamilyAIO): the enter
// event captures no fd/path (nr_events is a count, ctx_idp an output pointer)
// and the exit event carries the raw return value.
var aioTraceArgs = []string{"-trace-syscalls", "io_setup,io_destroy,close"}

// TestAioSetup exercises io_setup(2) end-to-end and asserts ior records the
// enter_io_setup tracepoint for the AIO family workload.
func TestAioSetup(t *testing.T) {
	runScenarioResultWithIorArgs(t, "aio-setup", []ExpectedEvent{
		{
			Tracepoint: "enter_io_setup",
			Comm:       "ioworkload",
			MinCount:   1,
		},
	}, aioTraceArgs)
}

// TestAioSetupEinval drives io_setup(2) with nr_events = 0 (EINVAL). The
// syscall fails, but ior still captures the enter_io_setup tracepoint.
func TestAioSetupEinval(t *testing.T) {
	runScenarioResultWithIorArgs(t, "aio-setup-einval", []ExpectedEvent{
		{
			Tracepoint: "enter_io_setup",
			Comm:       "ioworkload",
			MinCount:   1,
		},
	}, aioTraceArgs)
}