@@ -1043,3 +1043,118 @@ func TestDevValidName(t *testing.T) {
10431043 })
10441044 }
10451045}
1046+
1047+ func TestValidateIntelRdt (t * testing.T ) {
1048+ // Call init to trigger the sync.Once and enable overriding the rdt status
1049+ intelRdt .init ()
1050+
1051+ testCases := []struct {
1052+ name string
1053+ rdtEnabled bool
1054+ catEnabled bool
1055+ mbaEnabled bool
1056+ config * configs.IntelRdt
1057+ isErr bool
1058+ }{
1059+ {
1060+ name : "rdt not supported, no config" ,
1061+ rdtEnabled : false ,
1062+ config : nil ,
1063+ isErr : false ,
1064+ },
1065+ {
1066+ name : "rdt not supported, with config" ,
1067+ rdtEnabled : false ,
1068+ config : & configs.IntelRdt {},
1069+ isErr : true ,
1070+ },
1071+ {
1072+ name : "empty config" ,
1073+ rdtEnabled : true ,
1074+ config : & configs.IntelRdt {},
1075+ isErr : false ,
1076+ },
1077+ {
1078+ name : "root clos" ,
1079+ rdtEnabled : true ,
1080+ config : & configs.IntelRdt {
1081+ ClosID : "/" ,
1082+ },
1083+ isErr : false ,
1084+ },
1085+ {
1086+ name : "invalid ClosID (.)" ,
1087+ rdtEnabled : true ,
1088+ config : & configs.IntelRdt {
1089+ ClosID : "." ,
1090+ },
1091+ isErr : true ,
1092+ },
1093+ {
1094+ name : "invalid ClosID (..)" ,
1095+ rdtEnabled : true ,
1096+ config : & configs.IntelRdt {
1097+ ClosID : ".." ,
1098+ },
1099+ isErr : true ,
1100+ },
1101+ {
1102+ name : "invalid ClosID (contains /)" ,
1103+ rdtEnabled : true ,
1104+ config : & configs.IntelRdt {
1105+ ClosID : "foo/bar" ,
1106+ },
1107+ isErr : true ,
1108+ },
1109+ {
1110+ name : "cat not supported" ,
1111+ rdtEnabled : true ,
1112+ catEnabled : false ,
1113+ config : & configs.IntelRdt {
1114+ L3CacheSchema : "0=ff" ,
1115+ },
1116+ isErr : true ,
1117+ },
1118+ {
1119+ name : "mba not supported" ,
1120+ rdtEnabled : true ,
1121+ mbaEnabled : false ,
1122+ config : & configs.IntelRdt {
1123+ MemBwSchema : "0=100" ,
1124+ },
1125+ isErr : true ,
1126+ },
1127+ {
1128+ name : "valid config" ,
1129+ rdtEnabled : true ,
1130+ catEnabled : true ,
1131+ mbaEnabled : true ,
1132+ config : & configs.IntelRdt {
1133+ ClosID : "clos-1" ,
1134+ L3CacheSchema : "0=ff" ,
1135+ MemBwSchema : "0=100" ,
1136+ },
1137+ isErr : false ,
1138+ },
1139+ }
1140+ for _ , tc := range testCases {
1141+ t .Run (tc .name , func (t * testing.T ) {
1142+ intelRdt .rdtEnabled = tc .rdtEnabled
1143+ intelRdt .catEnabled = tc .catEnabled
1144+ intelRdt .mbaEnabled = tc .mbaEnabled
1145+
1146+ config := & configs.Config {
1147+ Rootfs : "/var" ,
1148+ IntelRdt : tc .config ,
1149+ }
1150+
1151+ err := Validate (config )
1152+ if tc .isErr && err == nil {
1153+ t .Error ("expected error, got nil" )
1154+ }
1155+ if ! tc .isErr && err != nil {
1156+ t .Error (err )
1157+ }
1158+ })
1159+ }
1160+ }
0 commit comments