@@ -5,12 +5,97 @@ import (
55 "fmt"
66 "testing"
77
8+ cdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb/v20170320"
9+ "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
10+
811 "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
912 "github.com/hashicorp/terraform-plugin-sdk/terraform"
1013 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
1114)
1215
1316const TestAccTencentCloudMysqlMasterInstance_availability_zone = "ap-guangzhou-3"
17+ const TestAccTencentCloudMysqlInstanceName = "testAccMysql"
18+ const TestAccTencentCloudMysqlInstanceNameVersion1 = "testAccMysql-version1"
19+ const TestAccTencentCloudMysqlInstanceNamePrepaid = "testAccMysqlPrepaid"
20+
21+ func init () {
22+ resource .AddTestSweepers ("tencentcloud_mysql_instance" , & resource.Sweeper {
23+ Name : "tencentcloud_mysql_instance" ,
24+ F : testSweepMySQLInstance ,
25+ })
26+ }
27+
28+ func testSweepMySQLInstance (region string ) error {
29+ logId := getLogId (contextNil )
30+ ctx := context .WithValue (context .TODO (), logIdKey , logId )
31+ cli , err := sharedClientForRegion (region )
32+ if err != nil {
33+ return err
34+ }
35+ client := cli .(* TencentCloudClient ).apiV3Conn
36+ service := MysqlService {client : client }
37+
38+ request := cdb .NewDescribeDBInstancesRequest ()
39+ request .InstanceNames = []* string {
40+ helper .String (TestAccTencentCloudMysqlInstanceName ),
41+ helper .String (TestAccTencentCloudMysqlInstanceNameVersion1 ),
42+ helper .String (TestAccTencentCloudMysqlInstanceNamePrepaid ),
43+ }
44+ request .Limit = helper .IntUint64 (2000 )
45+
46+ response , err := client .UseMysqlClient ().DescribeDBInstances (request )
47+ if err != nil {
48+ return err
49+ }
50+
51+ if len (response .Response .Items ) == 0 {
52+ return nil
53+ }
54+
55+ for _ , v := range response .Response .Items {
56+ id := * v .InstanceId
57+ err := resource .Retry (writeRetryTimeout , func () * resource.RetryError {
58+ _ , err := service .IsolateDBInstance (ctx , id )
59+ if err != nil {
60+ //for the pay order wait
61+ return retryError (err , InternalError )
62+ }
63+ return nil
64+ })
65+ if err != nil {
66+ return err
67+ }
68+
69+ err = resource .Retry (7 * readRetryTimeout , func () * resource.RetryError {
70+ mysqlInfo , err := service .DescribeDBInstanceById (ctx , id )
71+
72+ if err != nil {
73+ if _ , ok := err .(* errors.TencentCloudSDKError ); ! ok {
74+ return resource .RetryableError (err )
75+ } else {
76+ return resource .NonRetryableError (err )
77+ }
78+ }
79+ if mysqlInfo == nil {
80+ return nil
81+ }
82+ if * mysqlInfo .Status == MYSQL_STATUS_ISOLATING || * mysqlInfo .Status == MYSQL_STATUS_RUNNING {
83+ return resource .RetryableError (fmt .Errorf ("mysql isolating." ))
84+ }
85+ if * mysqlInfo .Status == MYSQL_STATUS_ISOLATED {
86+ return nil
87+ }
88+ return resource .NonRetryableError (fmt .Errorf ("after IsolateDBInstance mysql Status is %d" , * mysqlInfo .Status ))
89+ })
90+
91+ err = service .OfflineIsolatedInstances (ctx , id )
92+ if err != nil {
93+ return err
94+ }
95+ }
96+
97+ return nil
98+ }
1499
15100func TestAccTencentCloudMysqlMasterInstance_fullslave (t * testing.T ) {
16101 t .Parallel ()
@@ -23,7 +108,7 @@ func TestAccTencentCloudMysqlMasterInstance_fullslave(t *testing.T) {
23108 Config : testAccMysqlMasterInstance_fullslave (),
24109 Check : resource .ComposeAggregateTestCheckFunc (
25110 testAccCheckMysqlMasterInstanceExists ("tencentcloud_mysql_instance.mysql_master" ),
26- resource .TestCheckResourceAttr ("tencentcloud_mysql_instance.mysql_master" , "instance_name" , "testAccMysql" ),
111+ resource .TestCheckResourceAttr ("tencentcloud_mysql_instance.mysql_master" , "instance_name" , TestAccTencentCloudMysqlInstanceName ),
27112 resource .TestCheckResourceAttr ("tencentcloud_mysql_instance.mysql_master" , "slave_deploy_mode" , "0" ),
28113 resource .TestCheckResourceAttr ("tencentcloud_mysql_instance.mysql_master" , "slave_sync_mode" , "2" ),
29114 resource .TestCheckResourceAttr ("tencentcloud_mysql_instance.mysql_master" , "availability_zone" , TestAccTencentCloudMysqlMasterInstance_availability_zone ),
@@ -46,7 +131,7 @@ func TestAccTencentCloudMysqlMasterInstance_basic_and_update(t *testing.T) {
46131 Config : testAccMysqlMasterInstance_basic (),
47132 Check : resource .ComposeAggregateTestCheckFunc (
48133 testAccCheckMysqlMasterInstanceExists ("tencentcloud_mysql_instance.mysql_master" ),
49- resource .TestCheckResourceAttr ("tencentcloud_mysql_instance.mysql_master" , "instance_name" , "testAccMysql" ),
134+ resource .TestCheckResourceAttr ("tencentcloud_mysql_instance.mysql_master" , "instance_name" , TestAccTencentCloudMysqlInstanceName ),
50135 resource .TestCheckResourceAttr ("tencentcloud_mysql_instance.mysql_master" , "mem_size" , "1000" ),
51136 resource .TestCheckResourceAttr ("tencentcloud_mysql_instance.mysql_master" , "volume_size" , "50" ),
52137 resource .TestCheckResourceAttr ("tencentcloud_mysql_instance.mysql_master" , "intranet_port" , "3360" ),
0 commit comments