terraform-provider-google/google/data_source_tpu_tensorflow_versions_test.go
The Magician 59b08fb422 Add TPU Tensorflow datasource (#3325)
Signed-off-by: Modular Magician <magic-modules@google.com>
2019-03-27 16:26:07 -07:00

73 lines
1.7 KiB
Go

package google
import (
"errors"
"fmt"
"strconv"
"testing"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
"regexp"
)
func TestAccTpuTensorflowVersions_basic(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccTpuTensorFlowVersionsConfig,
Check: resource.ComposeTestCheckFunc(
testAccCheckGoogleTpuTensorflowVersions("data.google_tpu_tensorflow_versions.available"),
),
},
},
})
}
func testAccCheckGoogleTpuTensorflowVersions(n string) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
if !ok {
return fmt.Errorf("Can't find TPU Tensorflow versions data source: %s", n)
}
if rs.Primary.ID == "" {
return errors.New("data source ID not set.")
}
count, ok := rs.Primary.Attributes["versions.#"]
if !ok {
return errors.New("can't find 'names' attribute")
}
cnt, err := strconv.Atoi(count)
if err != nil {
return errors.New("failed to read number of version")
}
if cnt < 2 {
return fmt.Errorf("expected at least 2 versions, received %d, this is most likely a bug", cnt)
}
for i := 0; i < cnt; i++ {
idx := fmt.Sprintf("versions.%d", i)
v, ok := rs.Primary.Attributes[idx]
if !ok {
return fmt.Errorf("expected %q, version not found", idx)
}
if !regexp.MustCompile(`^([0-9]+\.)+[0-9]+$`).MatchString(v) {
return fmt.Errorf("unexpected version format for %q, value is %v", idx, v)
}
}
return nil
}
}
var testAccTpuTensorFlowVersionsConfig = `
data "google_tpu_tensorflow_versions" "available" {}
`