github.com/opencontainers/runtime-tools@v0.9.0/validation/delete_resources/delete_resources.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "path/filepath" 7 "time" 8 9 tap "github.com/mndrix/tap-go" 10 "github.com/mrunalp/fileutils" 11 rspec "github.com/opencontainers/runtime-spec/specs-go" 12 "github.com/opencontainers/runtime-tools/cgroups" 13 "github.com/opencontainers/runtime-tools/specerror" 14 "github.com/opencontainers/runtime-tools/validation/util" 15 uuid "github.com/satori/go.uuid" 16 ) 17 18 func main() { 19 t := tap.New() 20 t.Header(0) 21 22 bundleDir, err := util.PrepareBundle() 23 if err != nil { 24 util.Fatal(err) 25 } 26 defer os.RemoveAll(bundleDir) 27 28 r, err := util.NewRuntime(util.RuntimeCommand, bundleDir) 29 if err != nil { 30 util.Fatal(err) 31 } 32 33 r.SetID(uuid.NewV4().String()) 34 g, err := util.GetDefaultGenerator() 35 if err != nil { 36 util.Fatal(err) 37 } 38 39 var limit int64 = 1000 40 41 g.SetLinuxCgroupsPath(cgroups.AbsCgroupPath) 42 g.SetLinuxResourcesPidsLimit(limit) 43 44 err = r.SetConfig(g) 45 if err != nil { 46 util.Fatal(err) 47 } 48 err = fileutils.CopyFile("runtimetest", filepath.Join(r.BundleDir, "runtimetest")) 49 if err != nil { 50 util.Fatal(err) 51 } 52 53 err = r.Create() 54 if err != nil { 55 util.Fatal(err) 56 } 57 58 state, err := r.State() 59 if err != nil { 60 util.Fatal(err) 61 } 62 if err := util.ValidateLinuxResourcesPids(g.Spec(), t, &state); err != nil { 63 util.Fatal(err) 64 } 65 66 err = r.Start() 67 if err != nil { 68 util.Fatal(err) 69 } 70 71 err = util.WaitingForStatus(r, util.LifecycleStatusStopped, time.Second*10, time.Second*1) 72 if err == nil { 73 err = r.Delete() 74 } 75 if err != nil { 76 t.Fail(err.Error()) 77 } 78 79 path := filepath.Join("/sys/fs/cgroup/pids", cgroups.AbsCgroupPath) 80 _, err = os.Stat(path) 81 util.SpecErrorOK(t, os.IsNotExist(err), specerror.NewError(specerror.DeleteResImplement, fmt.Errorf("Deleting a container MUST delete the resources that were created during the `create` step"), rspec.Version), nil) 82 83 t.AutoPlan() 84 }