github.com/sacloud/iaas-api-go@v1.12.0/helper/query/_previous_id_test.go (about) 1 // Copyright 2016-2022 The sacloud/iaas-api-go 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 query 16 17 import ( 18 "context" 19 "testing" 20 21 "github.com/sacloud/iaas-api-go" 22 internetBuilder "github.com/sacloud/iaas-api-go/helper/builder/internet" 23 "github.com/sacloud/iaas-api-go/helper/plans" 24 "github.com/sacloud/iaas-api-go/testutil" 25 "github.com/sacloud/iaas-api-go/types" 26 "github.com/sacloud/packages-go/size" 27 "github.com/stretchr/testify/require" 28 ) 29 30 func TestReadServer(t *testing.T) { 31 ctx := context.Background() 32 caller := testutil.SingletonAPICaller() 33 zone := testutil.TestZone() 34 35 serverOp := iaas.NewServerOp(caller) 36 37 server, err := serverOp.Create(ctx, zone, &iaas.ServerCreateRequest{ 38 Name: testutil.ResourceName("query-server-with-previous-id"), 39 CPU: 1, 40 MemoryMB: 1 * size.GiB, 41 }) 42 if err != nil { 43 t.Fatal(err) 44 } 45 46 // ID指定でreadできる 47 read, err := ReadServer(ctx, caller, zone, server.ID) 48 if err != nil { 49 t.Fatal(err) 50 } 51 require.EqualValues(t, server.ID, read.ID) 52 53 // プラン変更(@previous-idタグが付与される) 54 _, err = plans.ChangeServerPlan(ctx, caller, zone, server.ID, 1, 2, types.Commitments.Standard, types.PlanGenerations.Default) 55 if err != nil { 56 t.Fatal(err) 57 } 58 59 // 旧IDでReadできる 60 read2, err := ReadServer(ctx, caller, zone, server.ID) 61 if err != nil { 62 t.Fatal(err) 63 } 64 require.Equal(t, 2, read2.GetMemoryGB()) 65 66 // 存在しないIDだとNoResultErr 67 _, err = ReadServer(ctx, caller, zone, types.ID(9999999999)) 68 require.True(t, iaas.IsNoResultsError(err)) 69 70 // cleanup 71 if err := serverOp.Delete(ctx, zone, read2.ID); err != nil { 72 t.Fatal(err) 73 } 74 } 75 76 func TestReadRouter(t *testing.T) { 77 ctx := context.Background() 78 caller := testutil.SingletonAPICaller() 79 zone := testutil.TestZone() 80 81 routerOp := iaas.NewInternetOp(caller) 82 routerBuilder := &internetBuilder.Builder{ 83 Name: testutil.ResourceName("query-router-with-previous-id"), 84 NetworkMaskLen: 28, 85 BandWidthMbps: 100, 86 Client: internetBuilder.NewAPIClient(caller), 87 } 88 89 router, err := routerBuilder.Build(ctx, zone) 90 if err != nil { 91 t.Fatal(err) 92 } 93 94 // ID指定でreadできる 95 read, err := ReadRouter(ctx, caller, zone, router.ID) 96 if err != nil { 97 t.Fatal(err) 98 } 99 require.EqualValues(t, router.ID, read.ID) 100 101 // プラン変更(@previous-idタグが付与される) 102 _, err = plans.ChangeRouterPlan(ctx, caller, zone, router.ID, 250) 103 if err != nil { 104 t.Fatal(err) 105 } 106 107 // 旧IDでReadできる 108 read2, err := ReadRouter(ctx, caller, zone, router.ID) 109 if err != nil { 110 t.Fatal(err) 111 } 112 require.Equal(t, 250, read2.BandWidthMbps) 113 114 // cleanup 115 if err := routerOp.Delete(ctx, zone, read2.ID); err != nil { 116 t.Fatal(err) 117 } 118 } 119 120 func TestReadProxyLB(t *testing.T) { 121 ctx := context.Background() 122 caller := testutil.SingletonAPICaller() 123 124 elbOp := iaas.NewProxyLBOp(caller) 125 elb, err := elbOp.Create(ctx, &iaas.ProxyLBCreateRequest{ 126 Plan: types.ProxyLBPlans.CPS100, 127 Region: types.ProxyLBRegions.IS1, 128 Name: testutil.ResourceName("query-elb-with-previous-id"), 129 HealthCheck: &iaas.ProxyLBHealthCheck{ 130 Protocol: types.ProxyLBProtocols.TCP, 131 DelayLoop: 10, 132 }, 133 Timeout: &iaas.ProxyLBTimeout{ 134 InactiveSec: 10, 135 }, 136 }) 137 if err != nil { 138 t.Fatal(err) 139 } 140 141 // ID指定でreadできる 142 read, err := ReadProxyLB(ctx, caller, elb.ID) 143 if err != nil { 144 t.Fatal(err) 145 } 146 require.EqualValues(t, elb.ID, read.ID) 147 148 // プラン変更(@previous-idタグが付与される) 149 _, err = plans.ChangeProxyLBPlan(ctx, caller, elb.ID, types.ProxyLBPlans.CPS500.Int()) 150 if err != nil { 151 t.Fatal(err) 152 } 153 154 // 旧IDでReadできる 155 read2, err := ReadProxyLB(ctx, caller, elb.ID) 156 if err != nil { 157 t.Fatal(err) 158 } 159 require.Equal(t, types.ProxyLBPlans.CPS500, read2.Plan) 160 161 // cleanup 162 if err := elbOp.Delete(ctx, read2.ID); err != nil { 163 t.Fatal(err) 164 } 165 }