@@ -1149,3 +1149,213 @@ func TestRemoveOptionIfExists(t *testing.T) {
11491149 }
11501150 }
11511151}
1152+
1153+ func TestGetDefaultIOPS (t * testing.T ) {
1154+ tests := []struct {
1155+ desc string
1156+ requestGiB int
1157+ storageAccountType string
1158+ expected * int32
1159+ }{
1160+ {
1161+ desc : "standardv2 with small storage" ,
1162+ requestGiB : 100 ,
1163+ storageAccountType : "StandardV2_LRS" ,
1164+ expected : int32Ptr (1020 ),
1165+ },
1166+ {
1167+ desc : "standardv2 with 1GiB storage" ,
1168+ requestGiB : 1 ,
1169+ storageAccountType : "StandardV2_LRS" ,
1170+ expected : int32Ptr (1001 ),
1171+ },
1172+ {
1173+ desc : "standardv2 with large storage hitting max" ,
1174+ requestGiB : 300000 ,
1175+ storageAccountType : "StandardV2_LRS" ,
1176+ expected : int32Ptr (50000 ),
1177+ },
1178+ {
1179+ desc : "standardv2 case insensitive" ,
1180+ requestGiB : 100 ,
1181+ storageAccountType : "STANDARDV2" ,
1182+ expected : int32Ptr (1020 ),
1183+ },
1184+ {
1185+ desc : "premiumv2 with small storage" ,
1186+ requestGiB : 100 ,
1187+ storageAccountType : "PremiumV2_LRS" ,
1188+ expected : int32Ptr (3100 ),
1189+ },
1190+ {
1191+ desc : "premiumv2 with 1GiB storage" ,
1192+ requestGiB : 1 ,
1193+ storageAccountType : "PremiumV2_LRS" ,
1194+ expected : int32Ptr (3001 ),
1195+ },
1196+ {
1197+ desc : "premiumv2 with large storage hitting max" ,
1198+ requestGiB : 200000 ,
1199+ storageAccountType : "PremiumV2_LRS" ,
1200+ expected : int32Ptr (102400 ),
1201+ },
1202+ {
1203+ desc : "premiumv2 case insensitive" ,
1204+ requestGiB : 100 ,
1205+ storageAccountType : "PREMIUMV2" ,
1206+ expected : int32Ptr (3100 ),
1207+ },
1208+ {
1209+ desc : "unsupported storage account type" ,
1210+ requestGiB : 100 ,
1211+ storageAccountType : "Standard_LRS" ,
1212+ expected : nil ,
1213+ },
1214+ {
1215+ desc : "empty storage account type" ,
1216+ requestGiB : 100 ,
1217+ storageAccountType : "" ,
1218+ expected : nil ,
1219+ },
1220+ {
1221+ desc : "standardv2 with zero storage" ,
1222+ requestGiB : 0 ,
1223+ storageAccountType : "StandardV2_LRS" ,
1224+ expected : int32Ptr (1000 ),
1225+ },
1226+ {
1227+ desc : "premiumv2 with zero storage" ,
1228+ requestGiB : 0 ,
1229+ storageAccountType : "PremiumV2_LRS" ,
1230+ expected : int32Ptr (3000 ),
1231+ },
1232+ }
1233+
1234+ for _ , test := range tests {
1235+ result := getDefaultIOPS (test .requestGiB , test .storageAccountType )
1236+ if test .expected == nil {
1237+ if result != nil {
1238+ t .Errorf ("test[%s]: unexpected output: %v, expected nil" , test .desc , * result )
1239+ }
1240+ } else {
1241+ if result == nil {
1242+ t .Errorf ("test[%s]: unexpected nil output, expected: %v" , test .desc , * test .expected )
1243+ } else if * result != * test .expected {
1244+ t .Errorf ("test[%s]: unexpected output: %v, expected: %v" , test .desc , * result , * test .expected )
1245+ }
1246+ }
1247+ }
1248+ }
1249+
1250+ func TestGetDefaultBandwidth (t * testing.T ) {
1251+ tests := []struct {
1252+ desc string
1253+ requestGiB int
1254+ storageAccountType string
1255+ expected * int32
1256+ }{
1257+ {
1258+ desc : "standardv2 with small storage" ,
1259+ requestGiB : 100 ,
1260+ storageAccountType : "StandardV2_LRS" ,
1261+ expected : int32Ptr (62 ),
1262+ },
1263+ {
1264+ desc : "standardv2 with 1GiB storage" ,
1265+ requestGiB : 1 ,
1266+ storageAccountType : "StandardV2_LRS" ,
1267+ expected : int32Ptr (61 ),
1268+ },
1269+ {
1270+ desc : "standardv2 with large storage hitting max" ,
1271+ requestGiB : 300000 ,
1272+ storageAccountType : "StandardV2_LRS_" ,
1273+ expected : int32Ptr (5120 ),
1274+ },
1275+ {
1276+ desc : "standardv2 case insensitive" ,
1277+ requestGiB : 100 ,
1278+ storageAccountType : "STANDARDV2" ,
1279+ expected : int32Ptr (62 ),
1280+ },
1281+ {
1282+ desc : "premiumv2 with small storage" ,
1283+ requestGiB : 100 ,
1284+ storageAccountType : "PremiumV2_LRS" ,
1285+ expected : int32Ptr (110 ),
1286+ },
1287+ {
1288+ desc : "premiumv2 with 1GiB storage" ,
1289+ requestGiB : 1 ,
1290+ storageAccountType : "PremiumV2_LRS" ,
1291+ expected : int32Ptr (101 ),
1292+ },
1293+ {
1294+ desc : "premiumv2 with large storage hitting max" ,
1295+ requestGiB : 200000 ,
1296+ storageAccountType : "PremiumV2_LRS" ,
1297+ expected : int32Ptr (10340 ),
1298+ },
1299+ {
1300+ desc : "premiumv2 case insensitive" ,
1301+ requestGiB : 100 ,
1302+ storageAccountType : "PREMIUMV2" ,
1303+ expected : int32Ptr (110 ),
1304+ },
1305+ {
1306+ desc : "unsupported storage account type" ,
1307+ requestGiB : 100 ,
1308+ storageAccountType : "Standard_LRS" ,
1309+ expected : nil ,
1310+ },
1311+ {
1312+ desc : "empty storage account type" ,
1313+ requestGiB : 100 ,
1314+ storageAccountType : "" ,
1315+ expected : nil ,
1316+ },
1317+ {
1318+ desc : "standardv2 with zero storage" ,
1319+ requestGiB : 0 ,
1320+ storageAccountType : "StandardV2_LRS" ,
1321+ expected : int32Ptr (60 ),
1322+ },
1323+ {
1324+ desc : "premiumv2 with zero storage" ,
1325+ requestGiB : 0 ,
1326+ storageAccountType : "PremiumV2_LRS" ,
1327+ expected : int32Ptr (100 ),
1328+ },
1329+ {
1330+ desc : "standardv2 with storage for exact calculation" ,
1331+ requestGiB : 2500 ,
1332+ storageAccountType : "StandardV2_LRS" ,
1333+ expected : int32Ptr (110 ),
1334+ },
1335+ {
1336+ desc : "premiumv2 with storage for exact calculation" ,
1337+ requestGiB : 1000 ,
1338+ storageAccountType : "PremiumV2_LRS" ,
1339+ expected : int32Ptr (200 ),
1340+ },
1341+ }
1342+
1343+ for _ , test := range tests {
1344+ result := getDefaultBandwidth (test .requestGiB , test .storageAccountType )
1345+ if test .expected == nil {
1346+ if result != nil {
1347+ t .Errorf ("test[%s]: unexpected output: %v, expected nil" , test .desc , * result )
1348+ }
1349+ } else {
1350+ if result == nil {
1351+ t .Errorf ("test[%s]: unexpected nil output, expected: %v" , test .desc , * test .expected )
1352+ } else if * result != * test .expected {
1353+ t .Errorf ("test[%s]: unexpected output: %v, expected: %v" , test .desc , * result , * test .expected )
1354+ }
1355+ }
1356+ }
1357+ }
1358+
1359+ func int32Ptr (i int32 ) * int32 {
1360+ return & i
1361+ }
0 commit comments