github.com/ves/terraform@v0.8.0-beta2/builtin/providers/azurerm/resource_arm_loadbalancer_probe_test.go (about) 1 package azurerm 2 3 import ( 4 "fmt" 5 "os" 6 "testing" 7 8 "regexp" 9 10 "github.com/Azure/azure-sdk-for-go/arm/network" 11 "github.com/hashicorp/terraform/helper/acctest" 12 "github.com/hashicorp/terraform/helper/resource" 13 "github.com/hashicorp/terraform/terraform" 14 ) 15 16 func TestAccAzureRMLoadBalancerProbe_basic(t *testing.T) { 17 var lb network.LoadBalancer 18 ri := acctest.RandInt() 19 probeName := fmt.Sprintf("probe-%d", ri) 20 21 subscriptionID := os.Getenv("ARM_SUBSCRIPTION_ID") 22 probe_id := fmt.Sprintf( 23 "/subscriptions/%s/resourceGroups/acctestrg-%d/providers/Microsoft.Network/loadBalancers/arm-test-loadbalancer-%d/probes/%s", 24 subscriptionID, ri, ri, probeName) 25 26 resource.Test(t, resource.TestCase{ 27 PreCheck: func() { testAccPreCheck(t) }, 28 Providers: testAccProviders, 29 CheckDestroy: testCheckAzureRMLoadBalancerDestroy, 30 Steps: []resource.TestStep{ 31 { 32 Config: testAccAzureRMLoadBalancerProbe_basic(ri, probeName), 33 Check: resource.ComposeTestCheckFunc( 34 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 35 testCheckAzureRMLoadBalancerProbeExists(probeName, &lb), 36 resource.TestCheckResourceAttr( 37 "azurerm_lb_probe.test", "id", probe_id), 38 ), 39 }, 40 }, 41 }) 42 } 43 44 func TestAccAzureRMLoadBalancerProbe_removal(t *testing.T) { 45 var lb network.LoadBalancer 46 ri := acctest.RandInt() 47 probeName := fmt.Sprintf("probe-%d", ri) 48 49 resource.Test(t, resource.TestCase{ 50 PreCheck: func() { testAccPreCheck(t) }, 51 Providers: testAccProviders, 52 CheckDestroy: testCheckAzureRMLoadBalancerDestroy, 53 Steps: []resource.TestStep{ 54 { 55 Config: testAccAzureRMLoadBalancerProbe_basic(ri, probeName), 56 Check: resource.ComposeTestCheckFunc( 57 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 58 testCheckAzureRMLoadBalancerProbeExists(probeName, &lb), 59 ), 60 }, 61 { 62 Config: testAccAzureRMLoadBalancerProbe_removal(ri), 63 Check: resource.ComposeTestCheckFunc( 64 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 65 testCheckAzureRMLoadBalancerProbeNotExists(probeName, &lb), 66 ), 67 }, 68 }, 69 }) 70 } 71 72 func TestAccAzureRMLoadBalancerProbe_update(t *testing.T) { 73 var lb network.LoadBalancer 74 ri := acctest.RandInt() 75 probeName := fmt.Sprintf("probe-%d", ri) 76 probe2Name := fmt.Sprintf("probe-%d", acctest.RandInt()) 77 78 resource.Test(t, resource.TestCase{ 79 PreCheck: func() { testAccPreCheck(t) }, 80 Providers: testAccProviders, 81 CheckDestroy: testCheckAzureRMLoadBalancerDestroy, 82 Steps: []resource.TestStep{ 83 { 84 Config: testAccAzureRMLoadBalancerProbe_multipleProbes(ri, probeName, probe2Name), 85 Check: resource.ComposeTestCheckFunc( 86 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 87 testCheckAzureRMLoadBalancerProbeExists(probeName, &lb), 88 testCheckAzureRMLoadBalancerProbeExists(probe2Name, &lb), 89 resource.TestCheckResourceAttr("azurerm_lb_probe.test2", "port", "80"), 90 ), 91 }, 92 { 93 Config: testAccAzureRMLoadBalancerProbe_multipleProbesUpdate(ri, probeName, probe2Name), 94 Check: resource.ComposeTestCheckFunc( 95 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 96 testCheckAzureRMLoadBalancerProbeExists(probeName, &lb), 97 testCheckAzureRMLoadBalancerProbeExists(probe2Name, &lb), 98 resource.TestCheckResourceAttr("azurerm_lb_probe.test2", "port", "8080"), 99 ), 100 }, 101 }, 102 }) 103 } 104 105 func TestAccAzureRMLoadBalancerProbe_duplicate(t *testing.T) { 106 var lb network.LoadBalancer 107 ri := acctest.RandInt() 108 probeName := fmt.Sprintf("probe-%d", ri) 109 110 resource.Test(t, resource.TestCase{ 111 PreCheck: func() { testAccPreCheck(t) }, 112 Providers: testAccProviders, 113 CheckDestroy: testCheckAzureRMLoadBalancerDestroy, 114 Steps: []resource.TestStep{ 115 { 116 Config: testAccAzureRMLoadBalancerProbe_multipleProbes(ri, probeName, probeName), 117 Check: resource.ComposeTestCheckFunc( 118 testCheckAzureRMLoadBalancerExists("azurerm_lb.test", &lb), 119 testCheckAzureRMLoadBalancerProbeExists(probeName, &lb), 120 ), 121 ExpectError: regexp.MustCompile(fmt.Sprintf("A Probe with name %q already exists.", probeName)), 122 }, 123 }, 124 }) 125 } 126 127 func testCheckAzureRMLoadBalancerProbeExists(natRuleName string, lb *network.LoadBalancer) resource.TestCheckFunc { 128 return func(s *terraform.State) error { 129 _, _, exists := findLoadBalancerProbeByName(lb, natRuleName) 130 if !exists { 131 return fmt.Errorf("A Probe with name %q cannot be found.", natRuleName) 132 } 133 134 return nil 135 } 136 } 137 138 func testCheckAzureRMLoadBalancerProbeNotExists(natRuleName string, lb *network.LoadBalancer) resource.TestCheckFunc { 139 return func(s *terraform.State) error { 140 _, _, exists := findLoadBalancerProbeByName(lb, natRuleName) 141 if exists { 142 return fmt.Errorf("A Probe with name %q has been found.", natRuleName) 143 } 144 145 return nil 146 } 147 } 148 149 func testAccAzureRMLoadBalancerProbe_basic(rInt int, probeName string) string { 150 return fmt.Sprintf(` 151 resource "azurerm_resource_group" "test" { 152 name = "acctestrg-%d" 153 location = "West US" 154 } 155 156 resource "azurerm_public_ip" "test" { 157 name = "test-ip-%d" 158 location = "West US" 159 resource_group_name = "${azurerm_resource_group.test.name}" 160 public_ip_address_allocation = "static" 161 } 162 163 resource "azurerm_lb" "test" { 164 name = "arm-test-loadbalancer-%d" 165 location = "West US" 166 resource_group_name = "${azurerm_resource_group.test.name}" 167 168 frontend_ip_configuration { 169 name = "one-%d" 170 public_ip_address_id = "${azurerm_public_ip.test.id}" 171 } 172 } 173 174 resource "azurerm_lb_probe" "test" { 175 location = "West US" 176 resource_group_name = "${azurerm_resource_group.test.name}" 177 loadbalancer_id = "${azurerm_lb.test.id}" 178 name = "%s" 179 port = 22 180 } 181 `, rInt, rInt, rInt, rInt, probeName) 182 } 183 184 func testAccAzureRMLoadBalancerProbe_removal(rInt int) string { 185 return fmt.Sprintf(` 186 resource "azurerm_resource_group" "test" { 187 name = "acctestrg-%d" 188 location = "West US" 189 } 190 191 resource "azurerm_public_ip" "test" { 192 name = "test-ip-%d" 193 location = "West US" 194 resource_group_name = "${azurerm_resource_group.test.name}" 195 public_ip_address_allocation = "static" 196 } 197 198 resource "azurerm_lb" "test" { 199 name = "arm-test-loadbalancer-%d" 200 location = "West US" 201 resource_group_name = "${azurerm_resource_group.test.name}" 202 203 frontend_ip_configuration { 204 name = "one-%d" 205 public_ip_address_id = "${azurerm_public_ip.test.id}" 206 } 207 } 208 `, rInt, rInt, rInt, rInt) 209 } 210 211 func testAccAzureRMLoadBalancerProbe_multipleProbes(rInt int, probeName, probe2Name string) string { 212 return fmt.Sprintf(` 213 resource "azurerm_resource_group" "test" { 214 name = "acctestrg-%d" 215 location = "West US" 216 } 217 218 resource "azurerm_public_ip" "test" { 219 name = "test-ip-%d" 220 location = "West US" 221 resource_group_name = "${azurerm_resource_group.test.name}" 222 public_ip_address_allocation = "static" 223 } 224 225 resource "azurerm_lb" "test" { 226 name = "arm-test-loadbalancer-%d" 227 location = "West US" 228 resource_group_name = "${azurerm_resource_group.test.name}" 229 230 frontend_ip_configuration { 231 name = "one-%d" 232 public_ip_address_id = "${azurerm_public_ip.test.id}" 233 } 234 } 235 236 resource "azurerm_lb_probe" "test" { 237 location = "West US" 238 resource_group_name = "${azurerm_resource_group.test.name}" 239 loadbalancer_id = "${azurerm_lb.test.id}" 240 name = "%s" 241 port = 22 242 } 243 244 resource "azurerm_lb_probe" "test2" { 245 location = "West US" 246 resource_group_name = "${azurerm_resource_group.test.name}" 247 loadbalancer_id = "${azurerm_lb.test.id}" 248 name = "%s" 249 port = 80 250 } 251 `, rInt, rInt, rInt, rInt, probeName, probe2Name) 252 } 253 254 func testAccAzureRMLoadBalancerProbe_multipleProbesUpdate(rInt int, probeName, probe2Name string) string { 255 return fmt.Sprintf(` 256 resource "azurerm_resource_group" "test" { 257 name = "acctestrg-%d" 258 location = "West US" 259 } 260 261 resource "azurerm_public_ip" "test" { 262 name = "test-ip-%d" 263 location = "West US" 264 resource_group_name = "${azurerm_resource_group.test.name}" 265 public_ip_address_allocation = "static" 266 } 267 268 resource "azurerm_lb" "test" { 269 name = "arm-test-loadbalancer-%d" 270 location = "West US" 271 resource_group_name = "${azurerm_resource_group.test.name}" 272 273 frontend_ip_configuration { 274 name = "one-%d" 275 public_ip_address_id = "${azurerm_public_ip.test.id}" 276 } 277 } 278 279 resource "azurerm_lb_probe" "test" { 280 location = "West US" 281 resource_group_name = "${azurerm_resource_group.test.name}" 282 loadbalancer_id = "${azurerm_lb.test.id}" 283 name = "%s" 284 port = 22 285 } 286 287 resource "azurerm_lb_probe" "test2" { 288 location = "West US" 289 resource_group_name = "${azurerm_resource_group.test.name}" 290 loadbalancer_id = "${azurerm_lb.test.id}" 291 name = "%s" 292 port = 8080 293 } 294 `, rInt, rInt, rInt, rInt, probeName, probe2Name) 295 }