Skip to content

Commit

Permalink
tetragon: Add test for other owner maps
Browse files Browse the repository at this point in the history
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
  • Loading branch information
olsajiri committed Sep 23, 2024
1 parent 911d2e4 commit 8b9dd6c
Showing 1 changed file with 109 additions and 0 deletions.
109 changes: 109 additions & 0 deletions pkg/sensors/test/sensors_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,115 @@ func TestMapMultipleSensors(t *testing.T) {
assert.Equal(t, m12.PinPath, m22.PinPath)
}

func TestMapOther(t *testing.T) {
p1 := program.Builder(
"bpf_map_test_p1.o",
"wake_up_new_task",
"kprobe/wake_up_new_task",
"p1",
"kprobe",
)
p2 := program.Builder(
"bpf_map_test_p2.o",
"wake_up_new_task",
"kprobe/wake_up_new_task",
"p2",
"kprobe",
)
opts := program.MapOpts{
Type: program.MapTypeGlobal,
Owner: program.MapOwnerOther,
}

var err error

// Create sensor with other owner map and make sure it's properly loaded
t.Run("ok", func(t *testing.T) {
m1 := program.MapBuilder("m1", p1)
m2 := program.MapBuilder("m2", p2)

s1 := &sensors.Sensor{
Name: "sensor1",
Progs: []*program.Program{p1},
Maps: []*program.Map{m1, m2},
Policy: "policy",
}

// other-owner map
m1Other := program.MapBuilderOpts("m1", opts, p2)

s2 := &sensors.Sensor{
Name: "sensor2",
Progs: []*program.Program{p2},
Maps: []*program.Map{m1Other},
Policy: "policy",
}

err = s1.Load(bpf.MapPrefixPath())
defer s1.Unload()
assert.NoError(t, err)

err = s2.Load(bpf.MapPrefixPath())
defer s2.Unload()
assert.NoError(t, err)
})

// Create sensor with other owner map with wrong name (no existing pinned
// map file) and make sure the sensor fails to load
t.Run("fail_name", func(t *testing.T) {
m1 := program.MapBuilder("m1", p1, p2)

// other-owner map with wrong name
m2 := program.MapBuilderOpts("non-existing", opts, p1, p2)

s1 := &sensors.Sensor{
Name: "sensor1",
Progs: []*program.Program{p1},
Maps: []*program.Map{m1, m2},
Policy: "policy",
}

err = s1.Load(bpf.MapPrefixPath())
assert.Error(t, err)
if err == nil {
defer s1.Unload()
}
})

// Create sensor with other owner map with different max entries setup
// from real owner map and make sure the sensor fails to load
t.Run("fail_max", func(t *testing.T) {
m1 := program.MapBuilder("m1", p1)
m1.SetMaxEntries(10)

s1 := &sensors.Sensor{
Name: "sensor1",
Progs: []*program.Program{p1},
Maps: []*program.Map{m1},
Policy: "policy",
}

// other-owner map with extra max setup
m1Other := program.MapBuilderOpts("m1", opts, p2)
m1Other.SetMaxEntries(100)

s2 := &sensors.Sensor{
Name: "sensor2",
Progs: []*program.Program{p2},
Maps: []*program.Map{m1Other},
Policy: "policy",
}

err = s1.Load(bpf.MapPrefixPath())
defer s1.Unload()
assert.NoError(t, err)

err = s2.Load(bpf.MapPrefixPath())
defer s2.Unload()
assert.Error(t, err)
})
}

func TestPolicyMapPath(t *testing.T) {
option.Config.HubbleLib = tus.Conf().TetragonLib
option.Config.Verbosity = 5
Expand Down

0 comments on commit 8b9dd6c

Please # to comment.