Skip to content

Commit e735537

Browse files
authored
Merge pull request #10471 from Azure/redis_fix_issue_9510
Fix for redis issue #9510
2 parents 0335d01 + 618fe4a commit e735537

File tree

8 files changed

+85
-3
lines changed

8 files changed

+85
-3
lines changed

src/RedisCache/RedisCache.Test/ScenarioTests/Utilitytests.cs

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using Microsoft.WindowsAzure.Commands.ScenarioTest;
1+
using Microsoft.Azure.Commands.RedisCache.Models;
2+
using Microsoft.Azure.Management.Redis.Models;
3+
using Microsoft.WindowsAzure.Commands.ScenarioTest;
24
using System;
35
using Xunit;
46

@@ -48,5 +50,37 @@ public void ValidateResourceGroupAndResourceName_Success()
4850

4951
Utility.ValidateResourceGroupAndResourceName(resourceGroup, name);
5052
}
53+
54+
[Fact]
55+
[Trait(Category.AcceptanceType, Category.CheckIn)]
56+
public void ValidateSize_InvalidSizePremium()
57+
{
58+
string sku = "Premium";
59+
string size = "C1";
60+
61+
var ex = Assert.Throws<ArgumentException>(() => SizeConverter.ValidateSize(size.ToUpper(), SkuName.Premium.Equals(sku)));
62+
Assert.Contains("Invalid Size. Example for valid values: For Standard or Basic Sku: (C0, C1, C2, C3, C4, C5, C6), for Premium Sku: (P1, P2, P3, P4, P5)", ex.Message);
63+
}
64+
65+
[Fact]
66+
[Trait(Category.AcceptanceType, Category.CheckIn)]
67+
public void ValidateSize_InvalidSizeStandard()
68+
{
69+
string sku = "Standard";
70+
string size = "P1";
71+
72+
var ex = Assert.Throws<ArgumentException>(() => SizeConverter.ValidateSize(size.ToUpper(), SkuName.Premium.Equals(sku)));
73+
Assert.Contains("Invalid Size. Example for valid values: For Standard or Basic Sku: (C0, C1, C2, C3, C4, C5, C6), for Premium Sku: (P1, P2, P3, P4, P5)", ex.Message);
74+
}
75+
76+
[Fact]
77+
[Trait(Category.AcceptanceType, Category.CheckIn)]
78+
public void ValidateSize_Success()
79+
{
80+
string sku = "Premium";
81+
string size = "P1";
82+
83+
SizeConverter.ValidateSize(size.ToUpper(), SkuName.Premium.Equals(sku));
84+
}
5185
}
5286
}

src/RedisCache/RedisCache/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21+
* Added validation on `-Size` parameter for `Set-AzRedisCache` and `New-AzRedisCache` cmdlets
2122

2223
## Version 1.1.1
2324
* Updated `Set-AzRedisCache` reference documentation to include missing values for `-Size` parameter

src/RedisCache/RedisCache/Commands/NewAzureRedisCache.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,15 @@ public override void ExecuteCmdlet()
8686

8787
if (string.IsNullOrEmpty(Size))
8888
{
89-
Size = SizeConverter.C1String;
89+
if (SkuStrings.Premium.Equals(Sku, StringComparison.OrdinalIgnoreCase))
90+
Size = SizeConverter.P1String;
91+
else
92+
Size = SizeConverter.C1String;
9093
}
9194
else
9295
{
9396
Size = SizeConverter.GetSizeInRedisSpecificFormat(Size, SkuStrings.Premium.Equals(Sku));
97+
SizeConverter.ValidateSize(Size.ToUpper(), SkuStrings.Premium.Equals(Sku));
9498
}
9599

96100
int skuCapacity = 1;

src/RedisCache/RedisCache/Commands/SetAzureRedisCache.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ public override void ExecuteCmdlet()
9595
else
9696
{
9797
Size = SizeConverter.GetSizeInRedisSpecificFormat(Size, SkuStrings.Premium.Equals(Sku));
98+
SizeConverter.ValidateSize(Size.ToUpper(), SkuStrings.Premium.Equals(Sku));
9899
skuFamily = Size.Substring(0, 1);
99100
int.TryParse(Size.Substring(1), out skuCapacity);
100101
}

src/RedisCache/RedisCache/Models/SizeConverter.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
namespace Microsoft.Azure.Commands.RedisCache.Models
1616
{
17+
using Microsoft.Azure.Commands.RedisCache.Properties;
18+
using System;
1719
using System.Collections.Generic;
1820

1921
internal static class SizeConverter
@@ -41,6 +43,26 @@ internal static class SizeConverter
4143
public const string P4String = "P4";
4244
public const string P5String = "P5";
4345

46+
private static IList<string> CList = new List<string>()
47+
{
48+
C0String,
49+
C1String,
50+
C2String,
51+
C3String,
52+
C4String,
53+
C5String,
54+
C6String
55+
};
56+
57+
private static IList<string> PList = new List<string>()
58+
{
59+
P1String,
60+
P2String,
61+
P3String,
62+
P4String,
63+
P5String
64+
};
65+
4466
private static Dictionary<string, string> skuStringToActualSize = new Dictionary<string, string>{
4567
{ C0String, MB250 },
4668
{ C1String, GB1 },
@@ -120,5 +142,12 @@ public static string GetSizeInUserSpecificFormat(string skuFamily, int skuCapaci
120142
}
121143
return null;
122144
}
145+
146+
public static void ValidateSize(string size, bool isPremiumCache)
147+
{
148+
if((isPremiumCache && !PList.Contains(size)) || (!isPremiumCache && !CList.Contains(size))) {
149+
throw new ArgumentException(Resources.InvalidSize);
150+
}
151+
}
123152
}
124153
}

src/RedisCache/RedisCache/Properties/Resources.Designer.cs

Lines changed: 10 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/RedisCache/RedisCache/Properties/Resources.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,9 @@
162162
<data name="InvalidResourceGroupName" xml:space="preserve">
163163
<value>ResourceGroupName should not contain '/'. Name should be the plain, short name of the resource group, e.g. 'myResourceGroup'. (Not an Azure resource identifier.)</value>
164164
</data>
165+
<data name="InvalidSize" xml:space="preserve">
166+
<value>Invalid Size. Example for valid values: For Standard or Basic Sku: (C0, C1, C2, C3, C4, C5, C6), for Premium Sku: (P1, P2, P3, P4, P5)</value>
167+
</data>
165168
<data name="PatchScheduleNotFound" xml:space="preserve">
166169
<value>There are no patch schedules found for redis cache '{0}'.</value>
167170
</data>

src/RedisCache/RedisCache/help/New-AzRedisCache.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ Valid values are:
258258
- P2
259259
- P3
260260
- P4
261+
- P5
261262
- C0
262263
- C1
263264
- C2

0 commit comments

Comments
 (0)