33package provider
44
55import (
6+ "fmt"
67 "testing"
78
89 "github.com/hashicorp/terraform/helper/resource"
10+ "github.com/hashicorp/terraform/terraform"
911)
1012
1113func TestAccDatasourceLoadBalancerBackends_basic (t * testing.T ) {
@@ -62,11 +64,6 @@ func TestAccDatasourceLoadBalancerBackends_basic(t *testing.T) {
6264 drain = false
6365 offline = false
6466 weight = 1
65- }
66-
67- data "oci_load_balancer_backends" "t" {
68- load_balancer_id = "${oci_load_balancer.t.id}"
69- backendset_name = "${oci_load_balancer_backendset.t.name}"
7067 }`
7168
7269 resourceName := "data.oci_load_balancer_backends.t"
@@ -81,20 +78,78 @@ func TestAccDatasourceLoadBalancerBackends_basic(t *testing.T) {
8178 Config : config ,
8279 },
8380 {
84- Config : config ,
81+ Config : config + `
82+ data "oci_load_balancer_backends" "t" {
83+ load_balancer_id = "${oci_load_balancer.t.id}"
84+ backendset_name = "${oci_load_balancer_backendset.t.name}"
85+ }` ,
8586 Check : resource .ComposeAggregateTestCheckFunc (
86- resource . TestCheckResourceAttrSet (resourceName , "load_balancer_id" ),
87- resource . TestCheckResourceAttrSet (resourceName , "backendset_name" ),
87+ TestCheckResourceAttributesEqual (resourceName , "load_balancer_id" , "oci_load_balancer.t" , "id " ),
88+ TestCheckResourceAttributesEqual (resourceName , "backendset_name" , "oci_load_balancer_backendset.t" , "name " ),
8889 resource .TestCheckResourceAttr (resourceName , "backends.#" , "1" ),
89- resource . TestCheckResourceAttr (resourceName , "backends.0.ip_address" , "1.2.3.4 " ),
90- resource . TestCheckResourceAttr (resourceName , "backends.0.port" , "8080 " ),
91- resource . TestCheckResourceAttr (resourceName , "backends.0.backup" , "false " ),
92- resource . TestCheckResourceAttr (resourceName , "backends.0.drain" , "false " ),
93- resource . TestCheckResourceAttr (resourceName , "backends.0.offline" , "false " ),
94- resource . TestCheckResourceAttr (resourceName , "backends.0.weight" , "1 " ),
90+ TestCheckResourceAttributesEqual (resourceName , "backends.0.ip_address" , "oci_load_balancer_backend.t" , "ip_address " ),
91+ TestCheckResourceAttributesEqual (resourceName , "backends.0.port" , "oci_load_balancer_backend.t" , "port " ),
92+ TestCheckResourceAttributesEqual (resourceName , "backends.0.backup" , "oci_load_balancer_backend.t" , "backup " ),
93+ TestCheckResourceAttributesEqual (resourceName , "backends.0.drain" , "oci_load_balancer_backend.t" , "drain " ),
94+ TestCheckResourceAttributesEqual (resourceName , "backends.0.offline" , "oci_load_balancer_backend.t" , "offline " ),
95+ TestCheckResourceAttributesEqual (resourceName , "backends.0.weight" , "oci_load_balancer_backend.t" , "weight " ),
9596 resource .TestCheckResourceAttrSet (resourceName , "backends.0.name" ),
97+ validateBackendName (resourceName ),
98+ ),
99+ },
100+ // Client-side filtering.
101+ {
102+ Config : config + `
103+ resource "oci_load_balancer_backend" "u" {
104+ load_balancer_id = "${oci_load_balancer.t.id}"
105+ backendset_name = "${oci_load_balancer_backendset.t.name}"
106+ ip_address = "5.6.7.8"
107+ port = 80
108+ backup = false
109+ drain = false
110+ offline = false
111+ weight = 1
112+ }
113+
114+ data "oci_load_balancer_backends" "t" {
115+ load_balancer_id = "${oci_load_balancer.t.id}"
116+ backendset_name = "${oci_load_balancer_backendset.t.name}"
117+ filter {
118+ name = "ip_address"
119+ values = ["1.2.3.4"]
120+ }
121+ }` ,
122+ Check : resource .ComposeAggregateTestCheckFunc (
123+ TestCheckResourceAttributesEqual (resourceName , "load_balancer_id" , "oci_load_balancer.t" , "id" ),
124+ TestCheckResourceAttributesEqual (resourceName , "backendset_name" , "oci_load_balancer_backendset.t" , "name" ),
125+ resource .TestCheckResourceAttr (resourceName , "backends.#" , "1" ),
126+ TestCheckResourceAttributesEqual (resourceName , "backends.0.ip_address" , "oci_load_balancer_backend.t" , "ip_address" ),
127+ TestCheckResourceAttributesEqual (resourceName , "backends.0.port" , "oci_load_balancer_backend.t" , "port" ),
128+ validateBackendName (resourceName ),
96129 ),
97130 },
98131 },
99132 })
100133}
134+
135+ func validateBackendName (resourceName string ) resource.TestCheckFunc {
136+ return func (s * terraform.State ) error {
137+ ipAddress , err := fromInstanceState (s , resourceName , "backends.0.ip_address" )
138+ if err != nil {
139+ return err
140+ }
141+ port , err := fromInstanceState (s , resourceName , "backends.0.port" )
142+ if err != nil {
143+ return err
144+ }
145+ actualName , err := fromInstanceState (s , resourceName , "backends.0.name" )
146+ if err != nil {
147+ return err
148+ }
149+ expectedName := ipAddress + ":" + port
150+ if expectedName != actualName {
151+ return fmt .Errorf ("invalid name: expected %s, got %s" , expectedName , actualName )
152+ }
153+ return nil
154+ }
155+ }
0 commit comments