mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-12 09:46:25 +08:00
5ebcfa6281
[This is a manual port of commit dbd990d555 to release-1.1
branch. Original description follows.]
Remove intelrtd.Manager interface, since we only have a single
implementation, and do not expect another one.
Rename intelRdtManager to Manager, and modify its users accordingly.
Remove NewIntelRdtManager from factory.
Remove IntelRdtfs. Instead, make intelrdt.NewManager return nil if the
feature is not available.
Remove TestFactoryNewIntelRdt as it is now identical to TestFactoryNew.
Add internal function newManager to be used for tests (to make sure
some testing is done even when the feature is not available in
kernel/hardware).
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
128 lines
3.2 KiB
Go
128 lines
3.2 KiB
Go
package intelrdt
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestIntelRdtSetL3CacheSchema(t *testing.T) {
|
|
helper := NewIntelRdtTestUtil(t)
|
|
|
|
const (
|
|
l3CacheSchemaBefore = "L3:0=f;1=f0"
|
|
l3CacheSchemeAfter = "L3:0=f0;1=f"
|
|
)
|
|
|
|
helper.writeFileContents(map[string]string{
|
|
"schemata": l3CacheSchemaBefore + "\n",
|
|
})
|
|
|
|
helper.config.IntelRdt.L3CacheSchema = l3CacheSchemeAfter
|
|
intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
|
|
if err := intelrdt.Set(helper.config); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
tmpStrings, err := getIntelRdtParamString(helper.IntelRdtPath, "schemata")
|
|
if err != nil {
|
|
t.Fatalf("Failed to parse file 'schemata' - %s", err)
|
|
}
|
|
values := strings.Split(tmpStrings, "\n")
|
|
value := values[0]
|
|
|
|
if value != l3CacheSchemeAfter {
|
|
t.Fatal("Got the wrong value, set 'schemata' failed.")
|
|
}
|
|
}
|
|
|
|
func TestIntelRdtSetMemBwSchema(t *testing.T) {
|
|
helper := NewIntelRdtTestUtil(t)
|
|
|
|
const (
|
|
memBwSchemaBefore = "MB:0=20;1=70"
|
|
memBwSchemeAfter = "MB:0=70;1=20"
|
|
)
|
|
|
|
helper.writeFileContents(map[string]string{
|
|
"schemata": memBwSchemaBefore + "\n",
|
|
})
|
|
|
|
helper.config.IntelRdt.MemBwSchema = memBwSchemeAfter
|
|
intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
|
|
if err := intelrdt.Set(helper.config); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
tmpStrings, err := getIntelRdtParamString(helper.IntelRdtPath, "schemata")
|
|
if err != nil {
|
|
t.Fatalf("Failed to parse file 'schemata' - %s", err)
|
|
}
|
|
values := strings.Split(tmpStrings, "\n")
|
|
value := values[0]
|
|
|
|
if value != memBwSchemeAfter {
|
|
t.Fatal("Got the wrong value, set 'schemata' failed.")
|
|
}
|
|
}
|
|
|
|
func TestIntelRdtSetMemBwScSchema(t *testing.T) {
|
|
helper := NewIntelRdtTestUtil(t)
|
|
|
|
const (
|
|
memBwScSchemaBefore = "MB:0=5000;1=7000"
|
|
memBwScSchemeAfter = "MB:0=9000;1=4000"
|
|
)
|
|
|
|
helper.writeFileContents(map[string]string{
|
|
"schemata": memBwScSchemaBefore + "\n",
|
|
})
|
|
|
|
helper.config.IntelRdt.MemBwSchema = memBwScSchemeAfter
|
|
intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
|
|
if err := intelrdt.Set(helper.config); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
tmpStrings, err := getIntelRdtParamString(helper.IntelRdtPath, "schemata")
|
|
if err != nil {
|
|
t.Fatalf("Failed to parse file 'schemata' - %s", err)
|
|
}
|
|
values := strings.Split(tmpStrings, "\n")
|
|
value := values[0]
|
|
|
|
if value != memBwScSchemeAfter {
|
|
t.Fatal("Got the wrong value, set 'schemata' failed.")
|
|
}
|
|
}
|
|
|
|
func TestApply(t *testing.T) {
|
|
helper := NewIntelRdtTestUtil(t)
|
|
|
|
const closID = "test-clos"
|
|
|
|
helper.config.IntelRdt.ClosID = closID
|
|
intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
|
|
if err := intelrdt.Apply(1234); err == nil {
|
|
t.Fatal("unexpected success when applying pid")
|
|
}
|
|
if _, err := os.Stat(filepath.Join(helper.IntelRdtPath, closID)); err == nil {
|
|
t.Fatal("closid dir should not exist")
|
|
}
|
|
|
|
// Dir should be created if some schema has been specified
|
|
intelrdt.config.IntelRdt.L3CacheSchema = "L3:0=f"
|
|
if err := intelrdt.Apply(1235); err != nil {
|
|
t.Fatalf("Apply() failed: %v", err)
|
|
}
|
|
|
|
pids, err := getIntelRdtParamString(intelrdt.GetPath(), "tasks")
|
|
if err != nil {
|
|
t.Fatalf("failed to read tasks file: %v", err)
|
|
}
|
|
if pids != "1235" {
|
|
t.Fatalf("unexpected tasks file, expected '1235', got %q", pids)
|
|
}
|
|
}
|