@@ -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