123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /*
- Utility for testing cgroup operations.
- Creates a mock of the cgroup filesystem for the duration of the test.
- */
- package fs
- import (
- "fmt"
- "io/ioutil"
- "log"
- "os"
- "testing"
- )
- type cgroupTestUtil struct {
- // data to use in tests.
- CgroupData *data
- // Path to the mock cgroup directory.
- CgroupPath string
- // Temporary directory to store mock cgroup filesystem.
- tempDir string
- t *testing.T
- }
- // Creates a new test util for the specified subsystem
- func NewCgroupTestUtil(subsystem string, t *testing.T) *cgroupTestUtil {
- d := &data{}
- tempDir, err := ioutil.TempDir("", fmt.Sprintf("%s_cgroup_test", subsystem))
- if err != nil {
- t.Fatal(err)
- }
- d.root = tempDir
- testCgroupPath, err := d.path(subsystem)
- if err != nil {
- t.Fatal(err)
- }
- // Ensure the full mock cgroup path exists.
- err = os.MkdirAll(testCgroupPath, 0755)
- if err != nil {
- t.Fatal(err)
- }
- return &cgroupTestUtil{CgroupData: d, CgroupPath: testCgroupPath, tempDir: tempDir, t: t}
- }
- func (c *cgroupTestUtil) cleanup() {
- os.RemoveAll(c.tempDir)
- }
- // Write the specified contents on the mock of the specified cgroup files.
- func (c *cgroupTestUtil) writeFileContents(fileContents map[string]string) {
- for file, contents := range fileContents {
- err := writeFile(c.CgroupPath, file, contents)
- if err != nil {
- c.t.Fatal(err)
- }
- }
- }
- // Expect the specified stats.
- func expectStats(t *testing.T, expected, actual map[string]int64) {
- for stat, expectedValue := range expected {
- actualValue, ok := actual[stat]
- if !ok {
- log.Printf("Expected stat %s to exist: %s", stat, actual)
- t.Fail()
- } else if actualValue != expectedValue {
- log.Printf("Expected stats %s to have value %f but had %f instead", stat, expectedValue, actualValue)
- t.Fail()
- }
- }
- }
|