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 })