mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
96 lines
2.0 KiB
Go
96 lines
2.0 KiB
Go
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
// Licensed under the GNU Affero General Public License (AGPL).
|
|
// See License-AGPL.txt in the project root for license information.
|
|
|
|
package cgroup
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strconv"
|
|
"testing"
|
|
|
|
"github.com/opencontainers/runc/libcontainer/cgroups"
|
|
)
|
|
|
|
func init() {
|
|
cgroups.TestMode = true
|
|
}
|
|
|
|
func createTempDir(t *testing.T, subsystem string) string {
|
|
path := filepath.Join(t.TempDir(), subsystem)
|
|
if err := os.Mkdir(path, 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return path
|
|
}
|
|
|
|
func TestReadLimit(t *testing.T) {
|
|
const limit = 4096
|
|
tempdir := createTempDir(t, "memory")
|
|
err := cgroups.WriteFile(tempdir, "memory.limit_in_bytes", strconv.Itoa(limit))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
value, err := readLimit(tempdir)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if value != limit {
|
|
t.Fatalf("unexpected error: is '%v' but expected '%v'", value, limit)
|
|
}
|
|
}
|
|
|
|
func TestReadLimitBadValue(t *testing.T) {
|
|
invalidValues := []string{
|
|
"invalid",
|
|
"-1",
|
|
}
|
|
tempdir := createTempDir(t, "memory")
|
|
for _, v := range invalidValues {
|
|
err := cgroups.WriteFile(tempdir, "memory.limit_in_bytes", v)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
_, err = readCache(tempdir)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: is '%v' but expected no error", err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestReadCache(t *testing.T) {
|
|
const cache = 512
|
|
tempdir := createTempDir(t, "memory")
|
|
err := cgroups.WriteFile(tempdir, "memory.stat", fmt.Sprintf("cache %d\nrss 1024", cache))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
value, err := readCache(tempdir)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if value != cache {
|
|
t.Fatalf("unexpected error: is '%v' but expected '%v'", value, cache)
|
|
}
|
|
}
|
|
|
|
func TestReadCacheBadValue(t *testing.T) {
|
|
invalidValues := []string{
|
|
"invalid",
|
|
"cache -1",
|
|
}
|
|
tempdir := createTempDir(t, "memory")
|
|
for _, v := range invalidValues {
|
|
err := cgroups.WriteFile(tempdir, "memory.stat", v)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
_, err = readCache(tempdir)
|
|
if err == nil {
|
|
t.Fatal("expected failure")
|
|
}
|
|
}
|
|
}
|