github.com/cloudfoundry-attic/garden-linux@v0.333.2-candidate/linux_container/cgroups_manager/cgroup_reader_test.go (about)

     1  package cgroups_manager_test
     2  
     3  import (
     4  	"path/filepath"
     5  
     6  	"github.com/cloudfoundry-incubator/garden-linux/linux_container/cgroups_manager"
     7  
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  )
    11  
    12  var _ = Describe("CgroupReader", func() {
    13  
    14  	Context("when the file exists", func() {
    15  		Context("and is in the correct format", func() {
    16  			Context("when the requested subsystem exists", func() {
    17  				It("returns the cgroup node for the subsystem", func() {
    18  					reader := cgroups_manager.LinuxCgroupReader{
    19  						Path: filepath.Join("test_assets", "proc_self_cgroup.txt"),
    20  					}
    21  
    22  					cpuNode, err := reader.CgroupNode("cpu")
    23  					Expect(err).ToNot(HaveOccurred())
    24  					Expect(cpuNode).To(Equal("/somedir"))
    25  
    26  					memoryNode, err := reader.CgroupNode("memory")
    27  					Expect(err).ToNot(HaveOccurred())
    28  					Expect(memoryNode).To(Equal("/somedir/mem"))
    29  				})
    30  			})
    31  
    32  			Context("when the requested subsystem does not exist", func() {
    33  
    34  				It("returns an error", func() {
    35  					reader := cgroups_manager.LinuxCgroupReader{
    36  						Path: filepath.Join("test_assets", "proc_self_cgroup.txt"),
    37  					}
    38  					_, err := reader.CgroupNode("oi")
    39  					Expect(err).To(MatchError(ContainSubstring("requested subsystem oi does not exist")))
    40  				})
    41  			})
    42  		})
    43  
    44  		Context("and is not in the correct format", func() {
    45  
    46  			It("returns an error", func() {
    47  				reader := cgroups_manager.LinuxCgroupReader{
    48  					Path: filepath.Join("test_assets", "proc_self_cgroup_invalid.txt"),
    49  				}
    50  
    51  				_, err := reader.CgroupNode("cpu")
    52  				Expect(err).To(HaveOccurred())
    53  
    54  				_, err = reader.CgroupNode("devices")
    55  				Expect(err).To(HaveOccurred())
    56  			})
    57  		})
    58  	})
    59  
    60  	Context("when the file does not exist", func() {
    61  		It("returns an error", func() {
    62  			reader := cgroups_manager.LinuxCgroupReader{
    63  				Path: filepath.Join("non_existing_dir", "non_existing_file.txt"),
    64  			}
    65  
    66  			_, err := reader.CgroupNode("cpu")
    67  			Expect(err).To(HaveOccurred())
    68  		})
    69  	})
    70  })