...
1 package intelrdt
2
3 import (
4 "os"
5 "path/filepath"
6 "strings"
7 "testing"
8 )
9
10 func TestIntelRdtSetL3CacheSchema(t *testing.T) {
11 helper := NewIntelRdtTestUtil(t)
12
13 const (
14 l3CacheSchemaBefore = "L3:0=f;1=f0"
15 l3CacheSchemeAfter = "L3:0=f0;1=f"
16 )
17
18 helper.writeFileContents(map[string]string{
19 "schemata": l3CacheSchemaBefore + "\n",
20 })
21
22 helper.config.IntelRdt.L3CacheSchema = l3CacheSchemeAfter
23 intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
24 if err := intelrdt.Set(helper.config); err != nil {
25 t.Fatal(err)
26 }
27
28 tmpStrings, err := getIntelRdtParamString(helper.IntelRdtPath, "schemata")
29 if err != nil {
30 t.Fatalf("Failed to parse file 'schemata' - %s", err)
31 }
32 values := strings.Split(tmpStrings, "\n")
33 value := values[0]
34
35 if value != l3CacheSchemeAfter {
36 t.Fatal("Got the wrong value, set 'schemata' failed.")
37 }
38 }
39
40 func TestIntelRdtSetMemBwSchema(t *testing.T) {
41 helper := NewIntelRdtTestUtil(t)
42
43 const (
44 memBwSchemaBefore = "MB:0=20;1=70"
45 memBwSchemeAfter = "MB:0=70;1=20"
46 )
47
48 helper.writeFileContents(map[string]string{
49 "schemata": memBwSchemaBefore + "\n",
50 })
51
52 helper.config.IntelRdt.MemBwSchema = memBwSchemeAfter
53 intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
54 if err := intelrdt.Set(helper.config); err != nil {
55 t.Fatal(err)
56 }
57
58 tmpStrings, err := getIntelRdtParamString(helper.IntelRdtPath, "schemata")
59 if err != nil {
60 t.Fatalf("Failed to parse file 'schemata' - %s", err)
61 }
62 values := strings.Split(tmpStrings, "\n")
63 value := values[0]
64
65 if value != memBwSchemeAfter {
66 t.Fatal("Got the wrong value, set 'schemata' failed.")
67 }
68 }
69
70 func TestIntelRdtSetMemBwScSchema(t *testing.T) {
71 helper := NewIntelRdtTestUtil(t)
72
73 const (
74 memBwScSchemaBefore = "MB:0=5000;1=7000"
75 memBwScSchemeAfter = "MB:0=9000;1=4000"
76 )
77
78 helper.writeFileContents(map[string]string{
79 "schemata": memBwScSchemaBefore + "\n",
80 })
81
82 helper.config.IntelRdt.MemBwSchema = memBwScSchemeAfter
83 intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
84 if err := intelrdt.Set(helper.config); err != nil {
85 t.Fatal(err)
86 }
87
88 tmpStrings, err := getIntelRdtParamString(helper.IntelRdtPath, "schemata")
89 if err != nil {
90 t.Fatalf("Failed to parse file 'schemata' - %s", err)
91 }
92 values := strings.Split(tmpStrings, "\n")
93 value := values[0]
94
95 if value != memBwScSchemeAfter {
96 t.Fatal("Got the wrong value, set 'schemata' failed.")
97 }
98 }
99
100 func TestApply(t *testing.T) {
101 helper := NewIntelRdtTestUtil(t)
102
103 const closID = "test-clos"
104
105 helper.config.IntelRdt.ClosID = closID
106 intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
107 if err := intelrdt.Apply(1234); err == nil {
108 t.Fatal("unexpected success when applying pid")
109 }
110 if _, err := os.Stat(filepath.Join(helper.IntelRdtPath, closID)); err == nil {
111 t.Fatal("closid dir should not exist")
112 }
113
114
115 intelrdt.config.IntelRdt.L3CacheSchema = "L3:0=f"
116 if err := intelrdt.Apply(1235); err != nil {
117 t.Fatalf("Apply() failed: %v", err)
118 }
119
120 pids, err := getIntelRdtParamString(intelrdt.GetPath(), "tasks")
121 if err != nil {
122 t.Fatalf("failed to read tasks file: %v", err)
123 }
124 if pids != "1235" {
125 t.Fatalf("unexpected tasks file, expected '1235', got %q", pids)
126 }
127 }
128
View as plain text