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  }