Skip to content

Commit 9a277ae

Browse files
committed
tests: remove !IsNativeEndian skips
We have a lot of tests which first glob a list of files containing BPF for little and big endian, then parse those files and finally skip a test if the files endianness doesn't match the native endianness. This is pretty wasteful, since we parse BPF for no good reason and makes the tests more verbose than they have to be. Use NativeFile instead and remove almost all checks for IsNativeEndian from tests. The two remaining cases are in the ELF loader tests, where they do have value: we want to make sure that we can parse things from any endianness. Signed-off-by: Lorenz Bauer <[email protected]>
1 parent e64398a commit 9a277ae

File tree

5 files changed

+548
-640
lines changed

5 files changed

+548
-640
lines changed

btf/core_reloc_test.go

+96-111
Original file line numberDiff line numberDiff line change
@@ -13,126 +13,111 @@ import (
1313
)
1414

1515
func TestCORERelocationLoad(t *testing.T) {
16-
testutils.Files(t, testutils.Glob(t, "testdata/relocs-*.elf"), func(t *testing.T, file string) {
17-
fh, err := os.Open(file)
18-
if err != nil {
19-
t.Fatal(err)
20-
}
21-
defer fh.Close()
22-
23-
spec, err := ebpf.LoadCollectionSpecFromReader(fh)
24-
if err != nil {
25-
t.Fatal(err)
26-
}
27-
28-
if spec.ByteOrder != internal.NativeEndian {
29-
return
30-
}
31-
32-
for _, progSpec := range spec.Programs {
33-
t.Run(progSpec.Name, func(t *testing.T) {
34-
if _, err := fh.Seek(0, io.SeekStart); err != nil {
35-
t.Fatal(err)
36-
}
37-
38-
prog, err := ebpf.NewProgramWithOptions(progSpec, ebpf.ProgramOptions{
39-
KernelTypes: spec.Types,
40-
})
41-
testutils.SkipIfNotSupported(t, err)
42-
43-
if strings.HasPrefix(progSpec.Name, "err_") {
44-
if err == nil {
45-
prog.Close()
46-
t.Fatal("Expected an error")
47-
}
48-
t.Log("Got expected error:", err)
49-
return
50-
}
51-
52-
if err != nil {
53-
t.Fatal("Load program:", err)
54-
}
55-
defer prog.Close()
56-
57-
ret, _, err := prog.Test(internal.EmptyBPFContext)
58-
testutils.SkipIfNotSupported(t, err)
59-
if err != nil {
60-
t.Fatal("Error when running:", err)
61-
}
16+
file := testutils.NativeFile(t, "testdata/relocs-%s.elf")
17+
fh, err := os.Open(file)
18+
if err != nil {
19+
t.Fatal(err)
20+
}
21+
defer fh.Close()
22+
23+
spec, err := ebpf.LoadCollectionSpecFromReader(fh)
24+
if err != nil {
25+
t.Fatal(err)
26+
}
27+
28+
for _, progSpec := range spec.Programs {
29+
t.Run(progSpec.Name, func(t *testing.T) {
30+
if _, err := fh.Seek(0, io.SeekStart); err != nil {
31+
t.Fatal(err)
32+
}
33+
34+
prog, err := ebpf.NewProgramWithOptions(progSpec, ebpf.ProgramOptions{
35+
KernelTypes: spec.Types,
36+
})
37+
testutils.SkipIfNotSupported(t, err)
6238

63-
if ret != 0 {
64-
t.Error("Assertion failed on line", ret)
39+
if strings.HasPrefix(progSpec.Name, "err_") {
40+
if err == nil {
41+
prog.Close()
42+
t.Fatal("Expected an error")
6543
}
66-
})
67-
}
68-
})
44+
t.Log("Got expected error:", err)
45+
return
46+
}
47+
48+
if err != nil {
49+
t.Fatal("Load program:", err)
50+
}
51+
defer prog.Close()
52+
53+
ret, _, err := prog.Test(internal.EmptyBPFContext)
54+
testutils.SkipIfNotSupported(t, err)
55+
if err != nil {
56+
t.Fatal("Error when running:", err)
57+
}
58+
59+
if ret != 0 {
60+
t.Error("Assertion failed on line", ret)
61+
}
62+
})
63+
}
6964
}
7065

7166
func TestCORERelocationRead(t *testing.T) {
72-
testutils.Files(t, testutils.Glob(t, "testdata/relocs_read-*.elf"), func(t *testing.T, file string) {
73-
spec, err := ebpf.LoadCollectionSpec(file)
74-
if err != nil {
75-
t.Fatal(err)
76-
}
77-
78-
if spec.ByteOrder != internal.NativeEndian {
79-
return
80-
}
81-
82-
targetFile := testutils.NativeFile(t, "testdata/relocs_read_tgt-%s.elf")
83-
targetSpec, err := btf.LoadSpec(targetFile)
84-
if err != nil {
85-
t.Fatal(err)
86-
}
87-
88-
for _, progSpec := range spec.Programs {
89-
t.Run(progSpec.Name, func(t *testing.T) {
90-
prog, err := ebpf.NewProgramWithOptions(progSpec, ebpf.ProgramOptions{
91-
KernelTypes: targetSpec,
92-
})
93-
testutils.SkipIfNotSupported(t, err)
94-
if err != nil {
95-
t.Fatal("Load program:", err)
96-
}
97-
defer prog.Close()
98-
99-
ret, _, err := prog.Test(internal.EmptyBPFContext)
100-
testutils.SkipIfNotSupported(t, err)
101-
if err != nil {
102-
t.Fatal("Error when running:", err)
103-
}
104-
105-
if ret != 0 {
106-
t.Error("Assertion failed on line", ret)
107-
}
67+
file := testutils.NativeFile(t, "testdata/relocs_read-%s.elf")
68+
spec, err := ebpf.LoadCollectionSpec(file)
69+
if err != nil {
70+
t.Fatal(err)
71+
}
72+
73+
targetFile := testutils.NativeFile(t, "testdata/relocs_read_tgt-%s.elf")
74+
targetSpec, err := btf.LoadSpec(targetFile)
75+
if err != nil {
76+
t.Fatal(err)
77+
}
78+
79+
for _, progSpec := range spec.Programs {
80+
t.Run(progSpec.Name, func(t *testing.T) {
81+
prog, err := ebpf.NewProgramWithOptions(progSpec, ebpf.ProgramOptions{
82+
KernelTypes: targetSpec,
10883
})
109-
}
110-
})
84+
testutils.SkipIfNotSupported(t, err)
85+
if err != nil {
86+
t.Fatal("Load program:", err)
87+
}
88+
defer prog.Close()
89+
90+
ret, _, err := prog.Test(internal.EmptyBPFContext)
91+
testutils.SkipIfNotSupported(t, err)
92+
if err != nil {
93+
t.Fatal("Error when running:", err)
94+
}
95+
96+
if ret != 0 {
97+
t.Error("Assertion failed on line", ret)
98+
}
99+
})
100+
}
111101
}
112102

113103
func TestLD64IMMReloc(t *testing.T) {
114104
testutils.SkipOnOldKernel(t, "5.4", "vmlinux BTF in sysfs")
115105

116-
testutils.Files(t, testutils.Glob(t, "testdata/relocs_enum-*.elf"), func(t *testing.T, file string) {
117-
fh, err := os.Open(file)
118-
if err != nil {
119-
t.Fatal(err)
120-
}
121-
defer fh.Close()
122-
123-
spec, err := ebpf.LoadCollectionSpecFromReader(fh)
124-
if err != nil {
125-
t.Fatal(err)
126-
}
127-
128-
if spec.ByteOrder != internal.NativeEndian {
129-
return
130-
}
131-
132-
coll, err := ebpf.NewCollection(spec)
133-
if err != nil {
134-
t.Fatal(err)
135-
}
136-
defer coll.Close()
137-
})
106+
file := testutils.NativeFile(t, "testdata/relocs_enum-%s.elf")
107+
fh, err := os.Open(file)
108+
if err != nil {
109+
t.Fatal(err)
110+
}
111+
defer fh.Close()
112+
113+
spec, err := ebpf.LoadCollectionSpecFromReader(fh)
114+
if err != nil {
115+
t.Fatal(err)
116+
}
117+
118+
coll, err := ebpf.NewCollection(spec)
119+
if err != nil {
120+
t.Fatal(err)
121+
}
122+
defer coll.Close()
138123
}

0 commit comments

Comments
 (0)