github.com/criyle/go-sandbox@v0.10.3/pkg/cgroup/benchmark_linux_test.go (about)

     1  package cgroup
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  )
     7  
     8  func BenchmarkCgroup(b *testing.B) {
     9  	if err := EnableV2Nesting(); err != nil {
    10  		b.Fatal(err)
    11  	}
    12  	ct, err := GetAvailableControllerV2()
    13  	if err != nil {
    14  		b.Fatal(err)
    15  	}
    16  	builder, err := New("benchmark", ct)
    17  	if err != nil {
    18  		b.Fatal(err)
    19  	}
    20  	defer builder.Destroy()
    21  	b.ResetTimer()
    22  	for i := 0; i < b.N; i++ {
    23  		cg, err := builder.New("test")
    24  		if err != nil {
    25  			b.Fatal(err)
    26  		}
    27  		if err := cg.SetCPUSet([]byte("0")); err != nil {
    28  			b.Fatal(err)
    29  		}
    30  		if err := cg.SetMemoryLimit(4096); err != nil {
    31  			b.Fatal(err)
    32  		}
    33  		if err := cg.SetProcLimit(1); err != nil {
    34  			b.Fatal(err)
    35  		}
    36  		if _, err := cg.CPUUsage(); err != nil {
    37  			b.Fatal(err)
    38  		}
    39  		if _, err := cg.MemoryMaxUsage(); err != nil {
    40  			b.Fatal(err)
    41  		}
    42  		cg.Destroy()
    43  	}
    44  }
    45  
    46  func TestCgroupAll(t *testing.T) {
    47  	// ensure root privilege when testing
    48  	if os.Getuid() != 0 {
    49  		t.Skip("no root privilege")
    50  	}
    51  	if err := EnableV2Nesting(); err != nil {
    52  		t.Fatal(err)
    53  	}
    54  	ct, err := GetAvailableControllerV2()
    55  	if err != nil {
    56  		t.Fatal(err)
    57  	}
    58  	builder, err := New("benchmark", ct)
    59  	if err != nil {
    60  		t.Fatal(err)
    61  	}
    62  	defer builder.Destroy()
    63  	if err != nil {
    64  		t.Fatal(err)
    65  	}
    66  	cg, err := builder.New("test")
    67  	if err != nil {
    68  		t.Fatal(err)
    69  	}
    70  	t.Cleanup(func() {
    71  		cg.Destroy()
    72  	})
    73  	if err := cg.SetCPUSet([]byte("0")); err != nil {
    74  		t.Fatal(err)
    75  	}
    76  	if err := cg.SetMemoryLimit(4096); err != nil {
    77  		t.Fatal(err)
    78  	}
    79  	if err := cg.SetProcLimit(1); err != nil {
    80  		t.Fatal(err)
    81  	}
    82  	if _, err := cg.CPUUsage(); err != nil {
    83  		t.Fatal(err)
    84  	}
    85  	if _, err := cg.MemoryMaxUsage(); err != nil {
    86  		t.Fatal(err)
    87  	}
    88  }