Skip to content

Commit a184b95

Browse files
authored
Merge pull request #19351 from hashicorp/t-timestreamwrite-database-sweeper
sweepers/timestreamwrite_database: fix sweeper error handling; add _disappears test
2 parents f0647fc + 3520165 commit a184b95

File tree

1 file changed

+36
-7
lines changed

1 file changed

+36
-7
lines changed

aws/resource_aws_timestreamwrite_database_test.go

+36-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package aws
22

33
import (
4+
"context"
45
"fmt"
56
"log"
67
"regexp"
@@ -10,6 +11,7 @@ import (
1011
"github.com/aws/aws-sdk-go/service/timestreamwrite"
1112
"github.com/hashicorp/aws-sdk-go-base/tfawserr"
1213
"github.com/hashicorp/go-multierror"
14+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1315
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
1416
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1517
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
@@ -28,12 +30,13 @@ func testSweepTimestreamWriteDatabases(region string) error {
2830
return fmt.Errorf("error getting client: %s", err)
2931
}
3032
conn := client.(*AWSClient).timestreamwriteconn
33+
ctx := context.Background()
3134

3235
var sweeperErrs *multierror.Error
3336

3437
input := &timestreamwrite.ListDatabasesInput{}
3538

36-
err = conn.ListDatabasesPages(input, func(page *timestreamwrite.ListDatabasesOutput, lastPage bool) bool {
39+
err = conn.ListDatabasesPagesWithContext(ctx, input, func(page *timestreamwrite.ListDatabasesOutput, lastPage bool) bool {
3740
if page == nil {
3841
return !lastPage
3942
}
@@ -45,17 +48,21 @@ func testSweepTimestreamWriteDatabases(region string) error {
4548

4649
dbName := aws.StringValue(database.DatabaseName)
4750

51+
log.Printf("[INFO] Deleting Timestream Database (%s)", dbName)
4852
r := resourceAwsTimestreamWriteDatabase()
4953
d := r.Data(nil)
5054
d.SetId(dbName)
5155

52-
err := r.Delete(d, client)
56+
diags := r.DeleteWithoutTimeout(ctx, d, client)
5357

54-
if err != nil {
55-
sweeperErr := fmt.Errorf("error deleting Timestream Database (%s): %w", dbName, err)
56-
log.Printf("[ERROR] %s", sweeperErr)
57-
sweeperErrs = multierror.Append(sweeperErrs, sweeperErr)
58-
continue
58+
if diags != nil && diags.HasError() {
59+
for _, d := range diags {
60+
if d.Severity == diag.Error {
61+
sweeperErr := fmt.Errorf("error deleting Timestream Database (%s): %s", dbName, d.Summary)
62+
log.Printf("[ERROR] %s", sweeperErr)
63+
sweeperErrs = multierror.Append(sweeperErrs, sweeperErr)
64+
}
65+
}
5966
}
6067
}
6168

@@ -103,6 +110,28 @@ func TestAccAWSTimestreamWriteDatabase_basic(t *testing.T) {
103110
})
104111
}
105112

113+
func TestAccAWSTimestreamWriteDatabase_disappears(t *testing.T) {
114+
resourceName := "aws_timestreamwrite_database.test"
115+
rName := acctest.RandomWithPrefix("tf-acc-test")
116+
117+
resource.ParallelTest(t, resource.TestCase{
118+
PreCheck: func() { testAccPreCheck(t); testAccPreCheckAWSTimestreamWrite(t) },
119+
ErrorCheck: testAccErrorCheck(t, timestreamwrite.EndpointsID),
120+
Providers: testAccProviders,
121+
CheckDestroy: testAccCheckAWSTimestreamWriteDatabaseDestroy,
122+
Steps: []resource.TestStep{
123+
{
124+
Config: testAccAWSTimestreamWriteDatabaseConfigBasic(rName),
125+
Check: resource.ComposeTestCheckFunc(
126+
testAccCheckAWSTimestreamWriteDatabaseExists(resourceName),
127+
testAccCheckResourceDisappears(testAccProvider, resourceAwsTimestreamWriteDatabase(), resourceName),
128+
),
129+
ExpectNonEmptyPlan: true,
130+
},
131+
},
132+
})
133+
}
134+
106135
func TestAccAWSTimestreamWriteDatabase_kmsKey(t *testing.T) {
107136
resourceName := "aws_timestreamwrite_database.test"
108137
rName := acctest.RandomWithPrefix("tf-acc-test")

0 commit comments

Comments
 (0)