@@ -3,97 +3,125 @@ package intelrdt
33import (
44 "os"
55 "path/filepath"
6+ "slices"
67 "strings"
78 "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- )
479
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- }
10+ "github.com/opencontainers/runc/libcontainer/configs"
11+ )
8712
88- tmpStrings , err := getIntelRdtParamString (helper .IntelRdtPath , "schemata" )
89- if err != nil {
90- t .Fatalf ("Failed to parse file 'schemata' - %s" , err )
13+ func TestIntelRdtSet (t * testing.T ) {
14+ tcs := []struct {
15+ name string
16+ config * configs.IntelRdt
17+ schemataAfter []string
18+ }{
19+ {
20+ name : "L3" ,
21+ config : & configs.IntelRdt {
22+ L3CacheSchema : "L3:0=f0;1=f" ,
23+ },
24+ schemataAfter : []string {"L3:0=f0;1=f" },
25+ },
26+ {
27+ name : "MemBw" ,
28+ config : & configs.IntelRdt {
29+ MemBwSchema : "MB:0=70;1=20" ,
30+ },
31+ schemataAfter : []string {"MB:0=70;1=20" },
32+ },
33+ {
34+ name : "MemBwSc" ,
35+ config : & configs.IntelRdt {
36+ MemBwSchema : "MB:0=9000;1=4000" ,
37+ },
38+ schemataAfter : []string {"MB:0=9000;1=4000" },
39+ },
40+ {
41+ name : "L3 and MemBw" ,
42+ config : & configs.IntelRdt {
43+ L3CacheSchema : "L3:0=f0;1=f" ,
44+ MemBwSchema : "MB:0=9000;1=4000" ,
45+ },
46+ schemataAfter : []string {
47+ "L3:0=f0;1=f" ,
48+ "MB:0=9000;1=4000" ,
49+ },
50+ },
51+ {
52+ name : "Schemata" ,
53+ config : & configs.IntelRdt {
54+ Schemata : []string {
55+ "L3CODE:0=ff;1=ff" ,
56+ "L3DATA:0=f;1=f0" ,
57+ },
58+ },
59+ schemataAfter : []string {
60+ "L3CODE:0=ff;1=ff" ,
61+ "L3DATA:0=f;1=f0" ,
62+ },
63+ },
64+ {
65+ name : "Schemata and L3" ,
66+ config : & configs.IntelRdt {
67+ L3CacheSchema : "L3:0=f0;1=f" ,
68+ Schemata : []string {"L2:0=ff00;1=ff" },
69+ },
70+ schemataAfter : []string {
71+ "L3:0=f0;1=f" ,
72+ "L2:0=ff00;1=ff" ,
73+ },
74+ },
75+ {
76+ name : "Schemata and MemBw" ,
77+ config : & configs.IntelRdt {
78+ MemBwSchema : "MB:0=2000;1=4000" ,
79+ Schemata : []string {"L3:0=ff;1=ff" },
80+ },
81+ schemataAfter : []string {
82+ "MB:0=2000;1=4000" ,
83+ "L3:0=ff;1=ff" ,
84+ },
85+ },
86+ {
87+ name : "Schemata, L3 and MemBw" ,
88+ config : & configs.IntelRdt {
89+ L3CacheSchema : "L3:0=80;1=7f" ,
90+ MemBwSchema : "MB:0=2000;1=4000" ,
91+ Schemata : []string {
92+ "L2:0=ff00;1=ff" ,
93+ "L3:0=c0;1=3f" ,
94+ },
95+ },
96+ schemataAfter : []string {
97+ "L3:0=80;1=7f" ,
98+ "MB:0=2000;1=4000" ,
99+ "L2:0=ff00;1=ff" ,
100+ "L3:0=c0;1=3f" ,
101+ },
102+ },
91103 }
92- values := strings .Split (tmpStrings , "\n " )
93- value := values [0 ]
94104
95- if value != memBwScSchemeAfter {
96- t .Fatal ("Got the wrong value, set 'schemata' failed." )
105+ for _ , tc := range tcs {
106+ t .Run (tc .name , func (t * testing.T ) {
107+ helper := NewIntelRdtTestUtil (t )
108+ helper .config .IntelRdt = tc .config
109+
110+ intelrdt := newManager (helper .config , "" , helper .IntelRdtPath )
111+ if err := intelrdt .Set (helper .config ); err != nil {
112+ t .Fatal (err )
113+ }
114+
115+ tmpStrings , err := getIntelRdtParamString (helper .IntelRdtPath , "schemata" )
116+ if err != nil {
117+ t .Fatalf ("Failed to parse file 'schemata' - %s" , err )
118+ }
119+ values := strings .Split (tmpStrings , "\n " )
120+
121+ if slices .Compare (values , tc .schemataAfter ) != 0 {
122+ t .Fatalf ("Got the wrong value, expected %v, got %v" , tc .schemataAfter , values )
123+ }
124+ })
97125 }
98126}
99127
0 commit comments