github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/azurerm/resource_arm_redis_cache_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/hashicorp/terraform/helper/acctest" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAzureRMRedisCacheFamily_validation(t *testing.T) { 14 cases := []struct { 15 Value string 16 ErrCount int 17 }{ 18 { 19 Value: "C", 20 ErrCount: 0, 21 }, 22 { 23 Value: "P", 24 ErrCount: 0, 25 }, 26 { 27 Value: "c", 28 ErrCount: 0, 29 }, 30 { 31 Value: "p", 32 ErrCount: 0, 33 }, 34 { 35 Value: "a", 36 ErrCount: 1, 37 }, 38 { 39 Value: "b", 40 ErrCount: 1, 41 }, 42 { 43 Value: "D", 44 ErrCount: 1, 45 }, 46 } 47 48 for _, tc := range cases { 49 _, errors := validateRedisFamily(tc.Value, "azurerm_redis_cache") 50 51 if len(errors) != tc.ErrCount { 52 t.Fatalf("Expected the Azure RM Redis Cache Family to trigger a validation error") 53 } 54 } 55 } 56 57 func TestAccAzureRMRedisCacheMaxMemoryPolicy_validation(t *testing.T) { 58 cases := []struct { 59 Value string 60 ErrCount int 61 }{ 62 {Value: "noeviction", ErrCount: 0}, 63 {Value: "allkeys-lru", ErrCount: 0}, 64 {Value: "volatile-lru", ErrCount: 0}, 65 {Value: "allkeys-random", ErrCount: 0}, 66 {Value: "volatile-random", ErrCount: 0}, 67 {Value: "volatile-ttl", ErrCount: 0}, 68 {Value: "something-else", ErrCount: 1}, 69 } 70 71 for _, tc := range cases { 72 _, errors := validateRedisMaxMemoryPolicy(tc.Value, "azurerm_redis_cache") 73 74 if len(errors) != tc.ErrCount { 75 t.Fatalf("Expected the Azure RM Redis Cache Max Memory Policy to trigger a validation error") 76 } 77 } 78 } 79 80 func TestAccAzureRMRedisCacheSku_validation(t *testing.T) { 81 cases := []struct { 82 Value string 83 ErrCount int 84 }{ 85 { 86 Value: "Basic", 87 ErrCount: 0, 88 }, 89 { 90 Value: "Standard", 91 ErrCount: 0, 92 }, 93 { 94 Value: "Premium", 95 ErrCount: 0, 96 }, 97 { 98 Value: "Random", 99 ErrCount: 1, 100 }, 101 } 102 103 for _, tc := range cases { 104 _, errors := validateRedisSku(tc.Value, "azurerm_redis_cache") 105 106 if len(errors) != tc.ErrCount { 107 t.Fatalf("Expected the Azure RM Redis Cache Sku to trigger a validation error") 108 } 109 } 110 } 111 112 func TestAccAzureRMRedisCache_basic(t *testing.T) { 113 ri := acctest.RandInt() 114 config := fmt.Sprintf(testAccAzureRMRedisCache_basic, ri, ri) 115 116 resource.Test(t, resource.TestCase{ 117 PreCheck: func() { testAccPreCheck(t) }, 118 Providers: testAccProviders, 119 CheckDestroy: testCheckAzureRMRedisCacheDestroy, 120 Steps: []resource.TestStep{ 121 { 122 Config: config, 123 Check: resource.ComposeTestCheckFunc( 124 testCheckAzureRMRedisCacheExists("azurerm_redis_cache.test"), 125 ), 126 }, 127 }, 128 }) 129 } 130 131 func TestAccAzureRMRedisCache_standard(t *testing.T) { 132 ri := acctest.RandInt() 133 config := fmt.Sprintf(testAccAzureRMRedisCache_standard, ri, ri) 134 135 resource.Test(t, resource.TestCase{ 136 PreCheck: func() { testAccPreCheck(t) }, 137 Providers: testAccProviders, 138 CheckDestroy: testCheckAzureRMRedisCacheDestroy, 139 Steps: []resource.TestStep{ 140 { 141 Config: config, 142 Check: resource.ComposeTestCheckFunc( 143 testCheckAzureRMRedisCacheExists("azurerm_redis_cache.test"), 144 ), 145 }, 146 }, 147 }) 148 } 149 150 func TestAccAzureRMRedisCache_premium(t *testing.T) { 151 ri := acctest.RandInt() 152 config := fmt.Sprintf(testAccAzureRMRedisCache_premium, ri, ri) 153 154 resource.Test(t, resource.TestCase{ 155 PreCheck: func() { testAccPreCheck(t) }, 156 Providers: testAccProviders, 157 CheckDestroy: testCheckAzureRMRedisCacheDestroy, 158 Steps: []resource.TestStep{ 159 { 160 Config: config, 161 Check: resource.ComposeTestCheckFunc( 162 testCheckAzureRMRedisCacheExists("azurerm_redis_cache.test"), 163 ), 164 }, 165 }, 166 }) 167 } 168 169 func TestAccAzureRMRedisCache_premiumSharded(t *testing.T) { 170 ri := acctest.RandInt() 171 config := fmt.Sprintf(testAccAzureRMRedisCache_premiumSharded, ri, ri) 172 173 resource.Test(t, resource.TestCase{ 174 PreCheck: func() { testAccPreCheck(t) }, 175 Providers: testAccProviders, 176 CheckDestroy: testCheckAzureRMRedisCacheDestroy, 177 Steps: []resource.TestStep{ 178 { 179 Config: config, 180 Check: resource.ComposeTestCheckFunc( 181 testCheckAzureRMRedisCacheExists("azurerm_redis_cache.test"), 182 ), 183 }, 184 }, 185 }) 186 } 187 188 func testCheckAzureRMRedisCacheExists(name string) resource.TestCheckFunc { 189 return func(s *terraform.State) error { 190 // Ensure we have enough information in state to look up in API 191 rs, ok := s.RootModule().Resources[name] 192 if !ok { 193 return fmt.Errorf("Not found: %s", name) 194 } 195 196 redisName := rs.Primary.Attributes["name"] 197 resourceGroup, hasResourceGroup := rs.Primary.Attributes["resource_group_name"] 198 if !hasResourceGroup { 199 return fmt.Errorf("Bad: no resource group found in state for Redis Instance: %s", redisName) 200 } 201 202 conn := testAccProvider.Meta().(*ArmClient).redisClient 203 204 resp, err := conn.Get(resourceGroup, redisName) 205 if err != nil { 206 return fmt.Errorf("Bad: Get on redisClient: %s", err) 207 } 208 209 if resp.StatusCode == http.StatusNotFound { 210 return fmt.Errorf("Bad: Redis Instance %q (resource group: %q) does not exist", redisName, resourceGroup) 211 } 212 213 return nil 214 } 215 } 216 217 func testCheckAzureRMRedisCacheDestroy(s *terraform.State) error { 218 conn := testAccProvider.Meta().(*ArmClient).redisClient 219 220 for _, rs := range s.RootModule().Resources { 221 if rs.Type != "azurerm_redis_cache" { 222 continue 223 } 224 225 name := rs.Primary.Attributes["name"] 226 resourceGroup := rs.Primary.Attributes["resource_group_name"] 227 228 resp, err := conn.Get(resourceGroup, name) 229 230 if err != nil { 231 return nil 232 } 233 234 if resp.StatusCode != http.StatusNotFound { 235 return fmt.Errorf("Redis Instance still exists:\n%#v", resp) 236 } 237 } 238 239 return nil 240 } 241 242 var testAccAzureRMRedisCache_basic = ` 243 resource "azurerm_resource_group" "test" { 244 name = "acctestRG-%d" 245 location = "West US" 246 } 247 248 resource "azurerm_redis_cache" "test" { 249 name = "acctestRedis-%d" 250 location = "${azurerm_resource_group.test.location}" 251 resource_group_name = "${azurerm_resource_group.test.name}" 252 capacity = 1 253 family = "C" 254 sku_name = "Basic" 255 enable_non_ssl_port = false 256 257 redis_configuration { 258 maxclients = "256" 259 } 260 } 261 ` 262 263 var testAccAzureRMRedisCache_standard = ` 264 resource "azurerm_resource_group" "test" { 265 name = "acctestRG-%d" 266 location = "West US" 267 } 268 269 resource "azurerm_redis_cache" "test" { 270 name = "acctestRedis-%d" 271 location = "${azurerm_resource_group.test.location}" 272 resource_group_name = "${azurerm_resource_group.test.name}" 273 capacity = 1 274 family = "C" 275 sku_name = "Standard" 276 enable_non_ssl_port = false 277 redis_configuration { 278 maxclients = "256" 279 } 280 281 tags { 282 environment = "production" 283 } 284 } 285 ` 286 287 var testAccAzureRMRedisCache_premium = ` 288 resource "azurerm_resource_group" "test" { 289 name = "acctestRG-%d" 290 location = "West US" 291 } 292 293 resource "azurerm_redis_cache" "test" { 294 name = "acctestRedis-%d" 295 location = "${azurerm_resource_group.test.location}" 296 resource_group_name = "${azurerm_resource_group.test.name}" 297 capacity = 1 298 family = "P" 299 sku_name = "Premium" 300 enable_non_ssl_port = false 301 redis_configuration { 302 maxclients = "256", 303 maxmemory_reserved = "2", 304 maxmemory_delta = "2" 305 maxmemory_policy = "allkeys-lru" 306 } 307 } 308 ` 309 310 var testAccAzureRMRedisCache_premiumSharded = ` 311 resource "azurerm_resource_group" "test" { 312 name = "acctestRG-%d" 313 location = "West US" 314 } 315 316 resource "azurerm_redis_cache" "test" { 317 name = "acctestRedis-%d" 318 location = "${azurerm_resource_group.test.location}" 319 resource_group_name = "${azurerm_resource_group.test.name}" 320 capacity = 1 321 family = "P" 322 sku_name = "Premium" 323 enable_non_ssl_port = true 324 shard_count = 3 325 redis_configuration { 326 maxclients = "256", 327 maxmemory_reserved = "2", 328 maxmemory_delta = "2" 329 maxmemory_policy = "allkeys-lru" 330 } 331 } 332 `