Skip to content

Commit

Permalink
provider/google: split acc test for instance group
Browse files Browse the repository at this point in the history
  • Loading branch information
tmshn committed May 20, 2017
1 parent 086059f commit c65eca2
Showing 1 changed file with 89 additions and 43 deletions.
132 changes: 89 additions & 43 deletions builtin/providers/google/resource_compute_instance_group_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,32 +14,19 @@ import (
func TestAccComputeInstanceGroup_basic(t *testing.T) {
var instanceGroup compute.InstanceGroup
var instanceName = fmt.Sprintf("instancegroup-test-%s", acctest.RandString(10))
var networkName = "default"
projs := []string{
"GOOGLE_PROJECT",
"GCLOUD_PROJECT",
"CLOUDSDK_CORE_PROJECT",
}
var networkUrl = fmt.Sprintf("https://www.googleapis.com/compute/v1/projects/%s/global/networks/%s", multiEnvSearch(projs), networkName)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccComputeInstanceGroup_destroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccComputeInstanceGroup_basic(instanceName, networkName, networkUrl),
Config: testAccComputeInstanceGroup_basic(instanceName),
Check: resource.ComposeTestCheckFunc(
testAccComputeInstanceGroup_exists(
"google_compute_instance_group.basic", &instanceGroup),
testAccComputeInstanceGroup_hasCorrectNetwork(
"google_compute_instance_group.basic", networkUrl, &instanceGroup),
testAccComputeInstanceGroup_exists(
"google_compute_instance_group.empty", &instanceGroup),
testAccComputeInstanceGroup_exists(
"google_compute_instance_group.empty-with-network", &instanceGroup),
testAccComputeInstanceGroup_hasCorrectNetwork(
"google_compute_instance_group.empty-with-network", networkUrl, &instanceGroup),
),
},
},
Expand Down Expand Up @@ -103,6 +90,32 @@ func TestAccComputeInstanceGroup_outOfOrderInstances(t *testing.T) {
})
}

func TestAccComputeInstanceGroup_network(t *testing.T) {
var instanceGroup compute.InstanceGroup
var instanceName = fmt.Sprintf("instancegroup-test-%s", acctest.RandString(10))

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccComputeInstanceGroup_destroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccComputeInstanceGroup_network(instanceName),
Check: resource.ComposeTestCheckFunc(
testAccComputeInstanceGroup_exists(
"google_compute_instance_group.with_instance", &instanceGroup),
testAccComputeInstanceGroup_hasCorrectNetwork(
"google_compute_instance_group.with_instance", "google_compute_network.ig_network", &instanceGroup),
testAccComputeInstanceGroup_exists(
"google_compute_instance_group.without_instance", &instanceGroup),
testAccComputeInstanceGroup_hasCorrectNetwork(
"google_compute_instance_group.without_instance", "google_compute_network.ig_network", &instanceGroup),
),
},
},
})
}

func testAccComputeInstanceGroup_destroy(s *terraform.State) error {
config := testAccProvider.Meta().(*Config)

Expand Down Expand Up @@ -214,34 +227,45 @@ func testAccComputeInstanceGroup_named_ports(n string, np map[string]int64, inst
}
}

func testAccComputeInstanceGroup_hasCorrectNetwork(n string, network string, instanceGroup *compute.InstanceGroup) resource.TestCheckFunc {
func testAccComputeInstanceGroup_hasCorrectNetwork(n_ig string, n_nw string, instanceGroup *compute.InstanceGroup) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
config := testAccProvider.Meta().(*Config)

rs_ig, ok := s.RootModule().Resources[n_ig]
if !ok {
return fmt.Errorf("Not found: %s", n)
return fmt.Errorf("Not found: %s", n_ig)
}

if rs.Primary.ID == "" {
if rs_ig.Primary.ID == "" {
return fmt.Errorf("No ID is set")
}

config := testAccProvider.Meta().(*Config)

instanceGroup, err := config.clientCompute.InstanceGroups.Get(
config.Project, rs.Primary.Attributes["zone"], rs.Primary.ID).Do()
config.Project, rs_ig.Primary.Attributes["zone"], rs_ig.Primary.ID).Do()
if err != nil {
return err
}

rs_nw, ok := s.RootModule().Resources[n_nw]
if !ok {
return fmt.Errorf("Not found: %s", n_nw)
}
if rs_nw.Primary.ID == "" {
return fmt.Errorf("No ID is set")
}
network, err := config.clientCompute.Networks.Get(
config.Project, rs_nw.Primary.ID).Do()
if err != nil {
return err
}

if instanceGroup.Network != network {
return fmt.Errorf("network incorrect: actual=%s vs expected=%s", instanceGroup.Network, network)
if instanceGroup.Network != network.SelfLink {
return fmt.Errorf("network incorrect: actual=%s vs expected=%s", instanceGroup.Network, network.SelfLink)
}

return nil
}
}

func testAccComputeInstanceGroup_basic(instance string, networkName string, networkUrl string) string {
func testAccComputeInstanceGroup_basic(instance string) string {
return fmt.Sprintf(`
resource "google_compute_instance" "ig_instance" {
name = "%s"
Expand All @@ -254,7 +278,7 @@ func testAccComputeInstanceGroup_basic(instance string, networkName string, netw
}
network_interface {
network = "%s"
network = "default"
}
}
Expand Down Expand Up @@ -285,22 +309,7 @@ func testAccComputeInstanceGroup_basic(instance string, networkName string, netw
name = "https"
port = "8443"
}
}
resource "google_compute_instance_group" "empty-with-network" {
description = "Terraform test instance group empty-with-network"
name = "%s-empty-with-network"
network = "%s"
zone = "us-central1-c"
named_port {
name = "http"
port = "8080"
}
named_port {
name = "https"
port = "8443"
}
}`, instance, networkName, instance, instance, instance, networkUrl)
}`, instance, instance, instance)
}

func testAccComputeInstanceGroup_update(instance string) string {
Expand Down Expand Up @@ -420,3 +429,40 @@ func testAccComputeInstanceGroup_outOfOrderInstances(instance string) string {
}
}`, instance, instance, instance)
}

func testAccComputeInstanceGroup_network(instance string) string {
return fmt.Sprintf(`
resource "google_compute_network" "ig_network" {
name = "%[1]s"
auto_create_subnetworks = true
}
resource "google_compute_instance" "ig_instance" {
name = "%[1]s"
machine_type = "n1-standard-1"
can_ip_forward = false
zone = "us-central1-c"
disk {
image = "debian-8-jessie-v20160803"
}
network_interface {
network = "${google_compute_network.ig_network.name}"
}
}
resource "google_compute_instance_group" "with_instance" {
description = "Terraform test instance group"
name = "%[1]s-with-insntance"
zone = "us-central1-c"
instances = [ "${google_compute_instance.ig_instance.self_link}" ]
}
resource "google_compute_instance_group" "without_instance" {
description = "Terraform test instance group"
name = "%[1]s-without-insntance"
zone = "us-central1-c"
network = "${google_compute_network.ig_network.self_link}"
}`, instance)
}

0 comments on commit c65eca2

Please sign in to comment.