...

Source file src/github.com/cilium/ebpf/link/cgroup_test.go

Documentation: github.com/cilium/ebpf/link

     1  package link
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/cilium/ebpf"
     7  	"github.com/cilium/ebpf/internal/testutils"
     8  )
     9  
    10  func TestAttachCgroup(t *testing.T) {
    11  	cgroup, prog := mustCgroupFixtures(t)
    12  
    13  	link, err := AttachCgroup(CgroupOptions{
    14  		Path:    cgroup.Name(),
    15  		Attach:  ebpf.AttachCGroupInetEgress,
    16  		Program: prog,
    17  	})
    18  	testutils.SkipIfNotSupported(t, err)
    19  	if err != nil {
    20  		t.Fatal(err)
    21  	}
    22  
    23  	if haveBPFLink() == nil {
    24  		if _, ok := link.(*linkCgroup); !ok {
    25  			t.Fatalf("Have support for bpf_link, but got %T instead of linkCgroup", link)
    26  		}
    27  	} else {
    28  		if _, ok := link.(*progAttachCgroup); !ok {
    29  			t.Fatalf("Expected progAttachCgroup, got %T instead", link)
    30  		}
    31  	}
    32  }
    33  
    34  func TestProgAttachCgroup(t *testing.T) {
    35  	cgroup, prog := mustCgroupFixtures(t)
    36  
    37  	link, err := newProgAttachCgroup(cgroup, ebpf.AttachCGroupInetEgress, prog, 0)
    38  	if err != nil {
    39  		t.Fatal("Can't create link:", err)
    40  	}
    41  
    42  	testLink(t, link, prog)
    43  }
    44  
    45  func TestProgAttachCgroupAllowMulti(t *testing.T) {
    46  	cgroup, prog := mustCgroupFixtures(t)
    47  
    48  	link, err := newProgAttachCgroup(cgroup, ebpf.AttachCGroupInetEgress, prog, flagAllowMulti)
    49  	testutils.SkipIfNotSupported(t, err)
    50  	if err != nil {
    51  		t.Fatal("Can't create link:", err)
    52  	}
    53  
    54  	// It's currently not possible for a program to replace
    55  	// itself.
    56  	prog2 := mustLoadProgram(t, ebpf.CGroupSKB, ebpf.AttachCGroupInetEgress, "")
    57  	testLink(t, link, prog2)
    58  }
    59  
    60  func TestLinkCgroup(t *testing.T) {
    61  	cgroup, prog := mustCgroupFixtures(t)
    62  
    63  	link, err := newLinkCgroup(cgroup, ebpf.AttachCGroupInetEgress, prog)
    64  	testutils.SkipIfNotSupported(t, err)
    65  	if err != nil {
    66  		t.Fatal("Can't create link:", err)
    67  	}
    68  
    69  	testLink(t, link, prog)
    70  }
    71  

View as plain text