@@ -14,41 +14,91 @@ import (
14
14
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
15
15
)
16
16
17
- func TestAccResourceTransform (t * testing.T ) {
18
- transformName := sdkacctest .RandStringFromCharSet (18 , sdkacctest .CharSetAlphaNum )
17
+ func TestAccResourceTransformWithPivot (t * testing.T ) {
18
+
19
+ transformNamePivot := sdkacctest .RandStringFromCharSet (18 , sdkacctest .CharSetAlphaNum )
20
+ resource .Test (t , resource.TestCase {
21
+ PreCheck : func () { acctest .PreCheck (t ) },
22
+ CheckDestroy : checkResourceTransformDestroy ,
23
+ ProtoV5ProviderFactories : acctest .Providers ,
24
+ Steps : []resource.TestStep {
25
+ {
26
+ Config : testAccResourceTransformWithPivotCreate (transformNamePivot ),
27
+ Check : resource .ComposeTestCheckFunc (
28
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "name" , transformNamePivot ),
29
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "description" , "test description" ),
30
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "source.0.indices.0" , "source_index_for_transform" ),
31
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "destination.0.index" , "dest_index_for_transform" ),
32
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "frequency" , "5m" ),
33
+ ),
34
+ },
35
+ {
36
+ Config : testAccResourceTransformWithPivotUpdate (transformNamePivot ),
37
+ Check : resource .ComposeTestCheckFunc (
38
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "name" , transformNamePivot ),
39
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "description" , "yet another test description" ),
40
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "source.0.indices.0" , "source_index_for_transform" ),
41
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "source.0.indices.1" , "additional_index" ),
42
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "destination.0.index" , "dest_index_for_transform_v2" ),
43
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "frequency" , "10m" ),
44
+ ),
45
+ },
46
+ },
47
+ })
48
+ }
19
49
50
+ func TestAccResourceTransformWithLatest (t * testing.T ) {
51
+
52
+ transformNameLatest := sdkacctest .RandStringFromCharSet (20 , sdkacctest .CharSetAlphaNum )
53
+ resource .Test (t , resource.TestCase {
54
+ PreCheck : func () { acctest .PreCheck (t ) },
55
+ CheckDestroy : checkResourceTransformDestroy ,
56
+ ProtoV5ProviderFactories : acctest .Providers ,
57
+ Steps : []resource.TestStep {
58
+ {
59
+ Config : testAccResourceTransformWithLatestCreate (transformNameLatest ),
60
+ Check : resource .ComposeTestCheckFunc (
61
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_latest" , "name" , transformNameLatest ),
62
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_latest" , "description" , "test description (latest)" ),
63
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_latest" , "source.0.indices.0" , "source_index_for_transform" ),
64
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_latest" , "destination.0.index" , "dest_index_for_transform" ),
65
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_latest" , "frequency" , "2m" ),
66
+ ),
67
+ },
68
+ },
69
+ })
70
+ }
71
+
72
+ func TestAccResourceTransformNoDefer (t * testing.T ) {
73
+
74
+ transformName := sdkacctest .RandStringFromCharSet (18 , sdkacctest .CharSetAlphaNum )
75
+ indexName := sdkacctest .RandStringFromCharSet (22 , sdkacctest .CharSetAlphaNum )
20
76
resource .Test (t , resource.TestCase {
21
77
PreCheck : func () { acctest .PreCheck (t ) },
22
78
CheckDestroy : checkResourceTransformDestroy ,
23
79
ProtoV5ProviderFactories : acctest .Providers ,
24
80
Steps : []resource.TestStep {
25
81
{
26
- Config : testAccResourceTransformCreate (transformName ),
82
+ Config : testAccResourceTransformNoDeferCreate (transformName , indexName ),
27
83
Check : resource .ComposeTestCheckFunc (
28
- resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test" , "name" , transformName ),
29
- resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test" , "description" , "test description" ),
30
- resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test" , "source.0.indices.0" , "source_index_for_transform" ),
31
- resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test" , "destination.0.index" , "dest_index_for_transform" ),
32
- resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test" , "frequency" , "5m" ),
33
- resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test" , "pivot.#" , "1" ),
34
- resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test" , "latest.#" , "0" ),
84
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "name" , transformName ),
85
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "description" , "test description" ),
86
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "source.0.indices.0" , indexName ),
87
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "destination.0.index" , "dest_index_for_transform" ),
88
+ resource .TestCheckResourceAttr ("elasticstack_elasticsearch_transform.test_pivot" , "frequency" , "5m" ),
35
89
),
36
90
},
37
- // {
38
- // Config: testAccResourceTransformUpdate(transformName),
39
- // Check: resource.ComposeTestCheckFunc(),
40
- // },
41
91
},
42
92
})
43
93
}
44
94
45
- func testAccResourceTransformCreate (name string ) string {
95
+ func testAccResourceTransformWithPivotCreate (name string ) string {
46
96
return fmt .Sprintf (`
47
97
provider "elasticstack" {
48
98
elasticsearch {}
49
99
}
50
100
51
- resource "elasticstack_elasticsearch_transform" "test " {
101
+ resource "elasticstack_elasticsearch_transform" "test_pivot " {
52
102
name = "%s"
53
103
description = "test description"
54
104
@@ -85,6 +135,148 @@ resource "elasticstack_elasticsearch_transform" "test" {
85
135
` , name )
86
136
}
87
137
138
+ func testAccResourceTransformWithPivotUpdate (name string ) string {
139
+ return fmt .Sprintf (`
140
+ provider "elasticstack" {
141
+ elasticsearch {}
142
+ }
143
+
144
+ resource "elasticstack_elasticsearch_transform" "test_pivot" {
145
+ name = "%s"
146
+ description = "yet another test description"
147
+
148
+ source {
149
+ indices = ["source_index_for_transform", "additional_index"]
150
+ }
151
+
152
+ destination {
153
+ index = "dest_index_for_transform_v2"
154
+ }
155
+
156
+ pivot = jsonencode({
157
+ "group_by": {
158
+ "customer_id": {
159
+ "terms": {
160
+ "field": "customer_id",
161
+ "missing_bucket": true
162
+ }
163
+ }
164
+ },
165
+ "aggregations": {
166
+ "max_price": {
167
+ "max": {
168
+ "field": "taxful_total_price"
169
+ }
170
+ }
171
+ }
172
+ })
173
+ frequency = "10m"
174
+
175
+ defer_validation = true
176
+ timeout = "1m"
177
+ }
178
+ ` , name )
179
+ }
180
+
181
+ func testAccResourceTransformWithLatestCreate (name string ) string {
182
+ return fmt .Sprintf (`
183
+ provider "elasticstack" {
184
+ elasticsearch {}
185
+ }
186
+
187
+ resource "elasticstack_elasticsearch_transform" "test_latest" {
188
+ name = "%s"
189
+ description = "test description (latest)"
190
+
191
+ source {
192
+ indices = ["source_index_for_transform"]
193
+ }
194
+
195
+ destination {
196
+ index = "dest_index_for_transform"
197
+ }
198
+
199
+ latest = jsonencode({
200
+ "unique_key": ["customer_id"],
201
+ "sort": "order_date"
202
+ })
203
+ frequency = "2m"
204
+
205
+ defer_validation = true
206
+ timeout = "1m"
207
+ }
208
+ ` , name )
209
+ }
210
+
211
+ func testAccResourceTransformNoDeferCreate (transformName , indexName string ) string {
212
+ return fmt .Sprintf (`
213
+ provider "elasticstack" {
214
+ elasticsearch {}
215
+ }
216
+
217
+ resource "elasticstack_elasticsearch_index" "test_index" {
218
+ name = "%s"
219
+
220
+ alias {
221
+ name = "test_alias_1"
222
+ }
223
+
224
+ mappings = jsonencode({
225
+ properties = {
226
+ field1 = { type = "text" }
227
+ }
228
+ })
229
+
230
+ settings {
231
+ setting {
232
+ name = "index.number_of_replicas"
233
+ value = "2"
234
+ }
235
+ }
236
+
237
+ deletion_protection = false
238
+ wait_for_active_shards = "all"
239
+ master_timeout = "1m"
240
+ timeout = "1m"
241
+ }
242
+
243
+ resource "elasticstack_elasticsearch_transform" "test_pivot" {
244
+ name = "%s"
245
+ description = "test description"
246
+
247
+ source {
248
+ indices = [elasticstack_elasticsearch_index.test_index.name]
249
+ }
250
+
251
+ destination {
252
+ index = "dest_index_for_transform"
253
+ }
254
+
255
+ pivot = jsonencode({
256
+ "group_by": {
257
+ "customer_id": {
258
+ "terms": {
259
+ "field": "customer_id",
260
+ "missing_bucket": true
261
+ }
262
+ }
263
+ },
264
+ "aggregations": {
265
+ "max_price": {
266
+ "max": {
267
+ "field": "taxful_total_price"
268
+ }
269
+ }
270
+ }
271
+ })
272
+ frequency = "5m"
273
+
274
+ defer_validation = false
275
+ timeout = "1m"
276
+ }
277
+ ` , indexName , transformName )
278
+ }
279
+
88
280
func checkResourceTransformDestroy (s * terraform.State ) error {
89
281
client , err := clients .NewAcceptanceTestingClient ()
90
282
if err != nil {
0 commit comments