github.com/sacloud/libsacloud/v2@v2.32.3/helper/builder/database/builder_test.go (about) 1 // Copyright 2016-2022 The Libsacloud Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package database 16 17 import ( 18 "testing" 19 "time" 20 21 "github.com/sacloud/libsacloud/v2/helper/power" 22 23 "github.com/sacloud/libsacloud/v2/helper/builder" 24 25 "github.com/sacloud/libsacloud/v2/sacloud" 26 "github.com/sacloud/libsacloud/v2/sacloud/testutil" 27 "github.com/sacloud/libsacloud/v2/sacloud/types" 28 ) 29 30 func getSetupOption() *builder.RetryableSetupParameter { 31 if testutil.IsAccTest() { 32 return nil 33 } 34 return &builder.RetryableSetupParameter{ 35 DeleteRetryInterval: 10 * time.Millisecond, 36 ProvisioningRetryInterval: 10 * time.Millisecond, 37 PollingInterval: 10 * time.Millisecond, 38 NICUpdateWaitDuration: 10 * time.Millisecond, 39 } 40 } 41 42 func TestDatabaseBuilder_Build(t *testing.T) { 43 var switchID types.ID 44 var testZone = testutil.TestZone() 45 46 testutil.RunCRUD(t, &testutil.CRUDTestCase{ 47 SetupAPICallerFunc: func() sacloud.APICaller { 48 return testutil.SingletonAPICaller() 49 }, 50 Parallel: true, 51 IgnoreStartupWait: true, 52 Setup: func(ctx *testutil.CRUDTestContext, caller sacloud.APICaller) error { 53 swOp := sacloud.NewSwitchOp(caller) 54 55 sw, err := swOp.Create(ctx, testZone, &sacloud.SwitchCreateRequest{ 56 Name: testutil.ResourceName("database-builder"), 57 }) 58 if err != nil { 59 return err 60 } 61 switchID = sw.ID 62 return nil 63 }, 64 Create: &testutil.CRUDTestFunc{ 65 Func: func(ctx *testutil.CRUDTestContext, caller sacloud.APICaller) (interface{}, error) { 66 builder := &Builder{ 67 PlanID: types.DatabasePlans.DB10GB, 68 SwitchID: switchID, 69 IPAddresses: []string{"192.168.0.11"}, 70 NetworkMaskLen: 24, 71 DefaultRoute: "192.168.0.1", 72 Conf: &sacloud.DatabaseRemarkDBConfCommon{ 73 DatabaseName: types.RDBMSVersions[types.RDBMSTypesPostgreSQL].Name, 74 DatabaseVersion: types.RDBMSVersions[types.RDBMSTypesPostgreSQL].Version, 75 DatabaseRevision: types.RDBMSVersions[types.RDBMSTypesPostgreSQL].Revision, 76 DefaultUser: "builder", 77 UserPassword: "builder-password-dummy", 78 }, 79 CommonSetting: &sacloud.DatabaseSettingCommon{ 80 DefaultUser: "builder", 81 UserPassword: "builder-password-dummy", 82 ReplicaUser: "", 83 ReplicaPassword: "", 84 }, 85 BackupSetting: &sacloud.DatabaseSettingBackup{ 86 Rotate: 7, 87 Time: "00:00", 88 DayOfWeek: []types.EBackupSpanWeekday{types.BackupSpanWeekdays.Monday}, 89 }, 90 ReplicationSetting: &sacloud.DatabaseReplicationSetting{}, 91 Parameters: map[string]interface{}{ 92 "max_connections": 50, 93 }, 94 Name: testutil.ResourceName("database-builder"), 95 Description: "description", 96 Tags: types.Tags{"tag1", "tag2"}, 97 SetupOptions: getSetupOption(), 98 Client: NewAPIClient(caller), 99 } 100 return builder.Build(ctx, testZone) 101 }, 102 }, 103 Read: &testutil.CRUDTestFunc{ 104 Func: func(ctx *testutil.CRUDTestContext, caller sacloud.APICaller) (interface{}, error) { 105 dbOp := sacloud.NewDatabaseOp(caller) 106 return dbOp.Read(ctx, testZone, ctx.ID) 107 }, 108 CheckFunc: func(t testutil.TestT, ctx *testutil.CRUDTestContext, value interface{}) error { 109 db := value.(*sacloud.Database) 110 return testutil.DoAsserts( 111 testutil.AssertNotNilFunc(t, db, "Database"), 112 testutil.AssertNotNilFunc(t, db.Conf, "Database.Conf"), 113 ) 114 }, 115 }, 116 Delete: &testutil.CRUDTestDeleteFunc{ 117 Func: func(ctx *testutil.CRUDTestContext, caller sacloud.APICaller) error { 118 dbOp := sacloud.NewDatabaseOp(caller) 119 return dbOp.Delete(ctx, testZone, ctx.ID) 120 }, 121 }, 122 Shutdown: func(ctx *testutil.CRUDTestContext, caller sacloud.APICaller) error { 123 dbOp := sacloud.NewDatabaseOp(caller) 124 return power.ShutdownDatabase(ctx, dbOp, testZone, ctx.ID, true) 125 }, 126 Cleanup: func(ctx *testutil.CRUDTestContext, caller sacloud.APICaller) error { 127 swOp := sacloud.NewSwitchOp(caller) 128 return swOp.Delete(ctx, testZone, switchID) 129 }, 130 }) 131 }