- s.cgroupRoot = tempDir
- return nil
-}
-
-func (s *suite) addPidToCgroup(pid int) error {
- if s.cgroupRoot == "" {
- return errors.New("cgroup has not been set up for this test")
- }
- procsPath := path.Join(s.cgroupRoot, "cgroup.procs")
- procsFile, err := os.OpenFile(procsPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o600)
- if err != nil {
- return err
- }
- pidLine := strconv.Itoa(pid) + "\n"
- _, err = procsFile.Write([]byte(pidLine))
- if err != nil {
- procsFile.Close()
- return err
- }
- return procsFile.Close()
-}
-
-func (s *suite) TestReadAllOrWarnFail(c *C) {
- rep := Reporter{Logger: s.logger}
-
- // The special file /proc/self/mem can be opened for
- // reading, but reading from byte 0 returns an error.
- f, err := os.Open("/proc/self/mem")
- c.Assert(err, IsNil)
- defer f.Close()
- _, err = rep.readAllOrWarn(f)
- c.Check(err, NotNil)
- c.Check(s.logbuf.String(), Matches, ".* msg=\"warning: read /proc/self/mem: .*\n")
-}
-
-func (s *suite) TestReadAllOrWarnSuccess(c *C) {
- rep := Reporter{Logger: s.logger}
-
- f, err := os.Open("./crunchstat_test.go")
- c.Assert(err, IsNil)
- defer f.Close()
- data, err := rep.readAllOrWarn(f)
- c.Check(err, IsNil)
- c.Check(string(data), Matches, "(?ms).*\npackage crunchstat\n.*")
- c.Check(s.logbuf.String(), Equals, "")