github.com/opencontainers/runtime-tools@v0.9.0/validation/linux_cgroups_relative_cpus/linux_cgroups_relative_cpus.go (about)

     1  package main
     2  
     3  import (
     4  	"github.com/mndrix/tap-go"
     5  	rspec "github.com/opencontainers/runtime-spec/specs-go"
     6  	"github.com/opencontainers/runtime-tools/cgroups"
     7  	"github.com/opencontainers/runtime-tools/validation/util"
     8  )
     9  
    10  func main() {
    11  	var shares uint64 = 1024
    12  	var period uint64 = 100000
    13  	var quota int64 = 50000
    14  	var cpus, mems string = "0-1", "0"
    15  
    16  	t := tap.New()
    17  	t.Header(0)
    18  	defer t.AutoPlan()
    19  
    20  	g, err := util.GetDefaultGenerator()
    21  	if err != nil {
    22  		util.Fatal(err)
    23  	}
    24  	g.SetLinuxCgroupsPath(cgroups.RelCgroupPath)
    25  	g.SetLinuxResourcesCPUShares(shares)
    26  	g.SetLinuxResourcesCPUQuota(quota)
    27  	g.SetLinuxResourcesCPUPeriod(period)
    28  	g.SetLinuxResourcesCPUCpus(cpus)
    29  	g.SetLinuxResourcesCPUMems(mems)
    30  	err = util.RuntimeOutsideValidate(g, t, func(config *rspec.Spec, t *tap.T, state *rspec.State) error {
    31  		cg, err := cgroups.FindCgroup()
    32  		t.Ok((err == nil), "find cpus cgroup")
    33  		if err != nil {
    34  			t.Diagnostic(err.Error())
    35  			return nil
    36  		}
    37  
    38  		lcd, err := cg.GetCPUData(state.Pid, config.Linux.CgroupsPath)
    39  		t.Ok((err == nil), "get cpus cgroup data")
    40  		if err != nil {
    41  			t.Diagnostic(err.Error())
    42  			return nil
    43  		}
    44  
    45  		t.Ok(*lcd.Shares == shares, "cpus shares limit is set correctly")
    46  		t.Diagnosticf("expect: %d, actual: %d", shares, lcd.Shares)
    47  
    48  		t.Ok(*lcd.Quota == quota, "cpus quota is set correctly")
    49  		t.Diagnosticf("expect: %d, actual: %d", quota, lcd.Quota)
    50  
    51  		t.Ok(*lcd.Period == period, "cpus period is set correctly")
    52  		t.Diagnosticf("expect: %d, actual: %d", period, lcd.Period)
    53  
    54  		t.Ok(lcd.Cpus == cpus, "cpus cpus is set correctly")
    55  		t.Diagnosticf("expect: %s, actual: %s", cpus, lcd.Cpus)
    56  
    57  		t.Ok(lcd.Mems == mems, "cpus mems is set correctly")
    58  		t.Diagnosticf("expect: %s, actual: %s", mems, lcd.Mems)
    59  
    60  		return nil
    61  	})
    62  
    63  	if err != nil {
    64  		t.Fail(err.Error())
    65  	}
    66  }