Skip to content

Commit d1f16da

Browse files
authored
tests(instance): update failed tests (#2633)
Signed-off-by: Leïla Marabese <lmarabese@scaleway.com>
1 parent 8ac9633 commit d1f16da

11 files changed

+929
-558
lines changed

api/instance/v1/instance_sdk_server_test.go

Lines changed: 12 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package instance
33
import (
44
"testing"
55

6+
"github.com/dnaeon/go-vcr/recorder"
67
"github.com/scaleway/scaleway-sdk-go/internal/testhelpers"
78
"github.com/scaleway/scaleway-sdk-go/internal/testhelpers/httprecorder"
89
"github.com/scaleway/scaleway-sdk-go/scw"
@@ -15,6 +16,10 @@ func TestServerUpdate(t *testing.T) {
1516
testhelpers.AssertNoError(t, r.Stop()) // Make sure recorder is stopped once done with it
1617
}()
1718

19+
project, ok := client.GetDefaultProjectID()
20+
if !ok && r.Mode() == recorder.ModeRecording {
21+
t.Fatal("default project ID is required to record this test")
22+
}
1823
instanceAPI := NewAPI(client)
1924

2025
var (
@@ -25,10 +30,8 @@ func TestServerUpdate(t *testing.T) {
2530
dynamicIPRequired = scw.BoolPtr(true)
2631
commercialType = "START1-S"
2732
image = scw.StringPtr("f974feac-abae-4365-b988-8ec7d1cec10d")
28-
enableIPv6 = scw.BoolPtr(true)
2933
bootType = BootTypeLocal
3034
tags = []string{"foo", "bar"}
31-
project = "14d2f7ae-9775-414c-9bed-6810e060d500"
3235
)
3336

3437
t.Run("create server", func(t *testing.T) {
@@ -38,7 +41,6 @@ func TestServerUpdate(t *testing.T) {
3841
Name: name,
3942
Project: &project,
4043
Image: image,
41-
EnableIPv6: enableIPv6,
4244
CommercialType: commercialType,
4345
Tags: tags,
4446
DynamicIPRequired: dynamicIPRequired,
@@ -54,35 +56,14 @@ func TestServerUpdate(t *testing.T) {
5456
}
5557

5658
testhelpers.Equals(t, name, createServerResponse.Server.Name)
57-
testhelpers.Equals(t, project, createServerResponse.Server.Project)
58-
testhelpers.Equals(t, project, createServerResponse.Server.Organization)
5959
testhelpers.Equals(t, *image, createServerResponse.Server.Image.ID)
60-
testhelpers.Equals(t, enableIPv6, createServerResponse.Server.EnableIPv6)
6160
testhelpers.Equals(t, bootType, createServerResponse.Server.BootType)
6261
testhelpers.Equals(t, commercialType, createServerResponse.Server.CommercialType)
6362
testhelpers.Equals(t, tags, createServerResponse.Server.Tags)
6463
testhelpers.Equals(t, *dynamicIPRequired, createServerResponse.Server.DynamicIPRequired)
65-
})
66-
67-
t.Run("create server with orga (deprecated)", func(t *testing.T) {
68-
// Create server
69-
createServerResponse, err := instanceAPI.CreateServer(&CreateServerRequest{
70-
Zone: zone,
71-
Name: name,
72-
Organization: &project,
73-
Image: image,
74-
})
75-
testhelpers.AssertNoError(t, err)
76-
77-
testhelpers.Equals(t, project, createServerResponse.Server.Project)
78-
testhelpers.Equals(t, project, createServerResponse.Server.Organization)
79-
80-
// Delete Server
81-
err = instanceAPI.DeleteServer(&DeleteServerRequest{
82-
Zone: zone,
83-
ServerID: createServerResponse.Server.ID,
84-
})
85-
testhelpers.AssertNoError(t, err)
64+
if r.Mode() == recorder.ModeRecording {
65+
testhelpers.Equals(t, project, createServerResponse.Server.Project)
66+
}
8667
})
8768

8869
t.Run("update server", func(t *testing.T) {
@@ -98,21 +79,20 @@ func TestServerUpdate(t *testing.T) {
9879
Name: &newName,
9980
Tags: &updatedTags,
10081
})
101-
testhelpers.Assert(t, updateServerResponse.Server != nil, "Should have server in response")
10282
testhelpers.AssertNoError(t, err)
83+
testhelpers.Assert(t, updateServerResponse.Server != nil, "Should have server in response")
10384

10485
// Initial values that are not altered in the above request should remaining the same
105-
testhelpers.Equals(t, project, updateServerResponse.Server.Project)
106-
testhelpers.Equals(t, project, updateServerResponse.Server.Organization)
10786
testhelpers.Equals(t, *image, updateServerResponse.Server.Image.ID)
108-
testhelpers.Equals(t, enableIPv6, updateServerResponse.Server.EnableIPv6)
10987
testhelpers.Equals(t, bootType, updateServerResponse.Server.BootType)
11088
testhelpers.Equals(t, commercialType, updateServerResponse.Server.CommercialType)
11189
testhelpers.Equals(t, *dynamicIPRequired, updateServerResponse.Server.DynamicIPRequired)
11290
testhelpers.Assert(t, len(updateServerResponse.Server.Volumes) == 1, "should have exactly one volume because we didn't pass volumes map in the requests.")
113-
11491
testhelpers.Equals(t, newName, updateServerResponse.Server.Name)
11592
testhelpers.Equals(t, updatedTags, updateServerResponse.Server.Tags)
93+
if r.Mode() == recorder.ModeRecording {
94+
testhelpers.Equals(t, project, updateServerResponse.Server.Project)
95+
}
11696
})
11797

11898
t.Run("remove server volumes", func(t *testing.T) {

api/instance/v1/instance_utils_test.go

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package instance
33
import (
44
"testing"
55

6+
"github.com/dnaeon/go-vcr/recorder"
67
block "github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1"
78
"github.com/scaleway/scaleway-sdk-go/internal/testhelpers"
89
"github.com/scaleway/scaleway-sdk-go/internal/testhelpers/httprecorder"
@@ -16,14 +17,17 @@ func TestInstanceHelpers(t *testing.T) {
1617
testhelpers.AssertNoError(t, r.Stop()) // Make sure recorder is stopped once done with it
1718
}()
1819

20+
project, ok := client.GetDefaultProjectID()
21+
if !ok && r.Mode() == recorder.ModeRecording {
22+
t.Fatal("default project ID is required to record this test")
23+
}
1924
instanceAPI := NewAPI(client)
2025

2126
var (
2227
serverID string
2328
ipID string
2429
volumeID string
2530
zone = scw.ZoneFrPar1
26-
project = "ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b"
2731
image = scw.StringPtr("81b9475d-e1b5-43c2-ac48-4c1a3b640686")
2832
)
2933

@@ -126,6 +130,10 @@ func TestInstanceHelpers_BlockVolume(t *testing.T) {
126130
testhelpers.AssertNoError(t, r.Stop()) // Make sure recorder is stopped once done with it
127131
}()
128132

133+
project, ok := client.GetDefaultProjectID()
134+
if !ok && r.Mode() == recorder.ModeRecording {
135+
t.Fatal("default project ID is required to record this test")
136+
}
129137
instanceAPI := NewAPI(client)
130138
blockAPI := block.NewAPI(client)
131139

@@ -134,7 +142,6 @@ func TestInstanceHelpers_BlockVolume(t *testing.T) {
134142
volumeID string
135143
volumeID2 string
136144
zone = scw.ZoneFrPar1
137-
project = "ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b"
138145
image = scw.StringPtr("81b9475d-e1b5-43c2-ac48-4c1a3b640686")
139146
)
140147

@@ -184,15 +191,28 @@ func TestInstanceHelpers_BlockVolume(t *testing.T) {
184191

185192
t.Run("Test attach and detach volume", func(t *testing.T) {
186193
detachVolumeResponse, err := instanceAPI.DetachVolume(&DetachVolumeRequest{
187-
Zone: zone,
188-
VolumeID: volumeID,
194+
Zone: zone,
195+
VolumeID: volumeID,
196+
IsBlockVolume: scw.BoolPtr(true),
189197
})
190198
testhelpers.AssertNoError(t, err)
191199

192200
testhelpers.Assert(t, detachVolumeResponse.Server != nil, "Should have server in response")
193201
testhelpers.Assert(t, detachVolumeResponse.Server.Volumes != nil, "Should have volumes in response")
194202
testhelpers.Assert(t, len(detachVolumeResponse.Server.Volumes) == 0, "Server should have zero volumes after detaching")
195203

204+
_, err = instanceAPI.WaitForServer(&WaitForServerRequest{
205+
Zone: zone,
206+
ServerID: serverID,
207+
})
208+
testhelpers.AssertNoError(t, err)
209+
210+
_, err = blockAPI.WaitForVolume(&block.WaitForVolumeRequest{
211+
VolumeID: volumeID,
212+
Zone: zone,
213+
})
214+
testhelpers.AssertNoError(t, err)
215+
196216
attachVolumeResponse, err := instanceAPI.AttachVolume(&AttachVolumeRequest{
197217
Zone: zone,
198218
ServerID: serverID,

api/instance/v1/security_group_utils_test.go

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package instance
22

33
import (
4+
"fmt"
45
"net"
56
"testing"
7+
"time"
68

79
"github.com/scaleway/scaleway-sdk-go/internal/testhelpers"
810
"github.com/scaleway/scaleway-sdk-go/internal/testhelpers/httprecorder"
@@ -53,8 +55,12 @@ func TestAPI_UpdateSecurityGroup(t *testing.T) {
5355
testhelpers.Equals(t, false, *updateResponse.SecurityGroup.OrganizationDefault)
5456
testhelpers.Equals(t, []string{"foo", "bar"}, updateResponse.SecurityGroup.Tags)
5557

58+
err = waitForSecurityGroup(client, createResponse.SecurityGroup.Zone, createResponse.SecurityGroup.ID, 10)
59+
testhelpers.AssertNoError(t, err)
60+
5661
err = instanceAPI.DeleteSecurityGroup(&DeleteSecurityGroupRequest{
5762
SecurityGroupID: createResponse.SecurityGroup.ID,
63+
Zone: createResponse.SecurityGroup.Zone,
5864
})
5965
testhelpers.AssertNoError(t, err)
6066
}
@@ -93,8 +99,15 @@ func TestAPI_UpdateSecurityGroupRule(t *testing.T) {
9399
testhelpers.AssertNoError(t, err)
94100

95101
return createSecurityGroupResponse.SecurityGroup, createRuleResponse.Rule, func() {
102+
zone := createSecurityGroupResponse.SecurityGroup.Zone
103+
sgID := createSecurityGroupResponse.SecurityGroup.ID
104+
105+
err = waitForSecurityGroup(client, zone, sgID, 10)
106+
testhelpers.AssertNoError(t, err)
107+
96108
err = instanceAPI.DeleteSecurityGroup(&DeleteSecurityGroupRequest{
97-
SecurityGroupID: createSecurityGroupResponse.SecurityGroup.ID,
109+
SecurityGroupID: sgID,
110+
Zone: zone,
98111
})
99112
testhelpers.AssertNoError(t, err)
100113
}
@@ -189,3 +202,31 @@ func TestAPI_UpdateSecurityGroupRule(t *testing.T) {
189202
testhelpers.Equals(t, SecurityGroupRuleDirectionInbound, updateResponse.Rule.Direction)
190203
})
191204
}
205+
206+
func waitForSecurityGroup(client *scw.Client, zone scw.Zone, sgID string, maxRetries int) error {
207+
instanceAPI := NewAPI(client)
208+
209+
sg, err := instanceAPI.GetSecurityGroup(&GetSecurityGroupRequest{
210+
SecurityGroupID: sgID,
211+
Zone: zone,
212+
})
213+
if err != nil {
214+
return err
215+
}
216+
217+
switch sg.SecurityGroup.State {
218+
case SecurityGroupStateAvailable:
219+
return nil
220+
case SecurityGroupStateSyncingError:
221+
return nil
222+
case SecurityGroupStateSyncing:
223+
if maxRetries == 0 {
224+
return fmt.Errorf("max retries exceeded")
225+
}
226+
time.Sleep(100 * time.Millisecond)
227+
228+
return waitForSecurityGroup(client, zone, sgID, maxRetries-1)
229+
default:
230+
return fmt.Errorf("unknown state: %s", sg.SecurityGroup.State)
231+
}
232+
}

api/instance/v1/server_utils_test.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"strings"
99
"testing"
1010

11+
"github.com/dnaeon/go-vcr/recorder"
1112
block "github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1"
1213
"github.com/scaleway/scaleway-sdk-go/api/marketplace/v2"
1314
"github.com/scaleway/scaleway-sdk-go/internal/testhelpers"
@@ -42,6 +43,10 @@ func TestAPI_ServerUserData(t *testing.T) {
4243
testhelpers.AssertNoError(t, r.Stop()) // Make sure recorder is stopped once done with it
4344
}()
4445

46+
project, ok := client.GetDefaultProjectID()
47+
if !ok && r.Mode() == recorder.ModeRecording {
48+
t.Fatal("default project ID is required to record this test")
49+
}
4550
instanceAPI := NewAPI(client)
4651

4752
key := "hello"
@@ -52,7 +57,7 @@ func TestAPI_ServerUserData(t *testing.T) {
5257
CommercialType: "DEV1-S",
5358
Name: namegenerator.GetRandomName("srv"),
5459
Image: scw.StringPtr("f974feac-abae-4365-b988-8ec7d1cec10d"),
55-
Project: scw.StringPtr("14d2f7ae-9775-414c-9bed-6810e060d500"),
60+
Project: &project,
5661
})
5762
testhelpers.AssertNoError(t, err)
5863

@@ -84,14 +89,18 @@ func TestAPI_AllServerUserData(t *testing.T) {
8489
testhelpers.AssertNoError(t, r.Stop()) // Make sure recorder is stopped once done with it
8590
}()
8691

92+
project, ok := client.GetDefaultProjectID()
93+
if !ok && r.Mode() == recorder.ModeRecording {
94+
t.Fatal("default project ID is required to record this test")
95+
}
8796
instanceAPI := NewAPI(client)
8897

8998
serverRes, err := instanceAPI.CreateServer(&CreateServerRequest{
9099
Zone: scw.ZoneFrPar1,
91100
CommercialType: "DEV1-S",
92101
Name: namegenerator.GetRandomName("srv"),
93102
Image: scw.StringPtr("f974feac-abae-4365-b988-8ec7d1cec10d"),
94-
Project: scw.StringPtr("14d2f7ae-9775-414c-9bed-6810e060d500"),
103+
Project: &project,
95104
})
96105
testhelpers.AssertNoError(t, err)
97106

@@ -163,7 +172,7 @@ func TestAPI_CreateServer(t *testing.T) {
163172

164173
testhelpers.AssertNoError(t, err)
165174
// this UUID might change when running the cassette later when the image "ubuntu_focal" got a new version
166-
testhelpers.Equals(t, "9c41e95b-add2-4ef8-b1b1-af8899748eda", res.Server.Image.ID)
175+
testhelpers.Equals(t, "4a4d2994-e7e0-4b29-a760-36235e6ba258", res.Server.Image.ID)
167176
err = instanceAPI.DeleteServer(&DeleteServerRequest{
168177
Zone: scw.ZoneFrPar1,
169178
ServerID: res.Server.ID,

api/instance/v1/snapshot_utils_test.go

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -76,23 +76,12 @@ func TestAPI_UpdateSnapshot(t *testing.T) {
7676

7777
instanceAPI := NewAPI(client)
7878

79-
volumeSize := 1 * scw.GB
80-
81-
createVolume, err := instanceAPI.CreateVolume(&CreateVolumeRequest{
82-
Name: "volume_name",
83-
VolumeType: VolumeVolumeTypeBSSD,
84-
Size: &volumeSize,
85-
})
86-
testhelpers.AssertNoError(t, err)
87-
88-
createResponse, err := instanceAPI.CreateSnapshot(&CreateSnapshotRequest{
89-
Name: "name",
90-
VolumeID: &createVolume.Volume.ID,
91-
})
92-
testhelpers.AssertNoError(t, err)
79+
zone := scw.ZoneFrPar1
80+
localSnapshot := createLocalSnapshot(t, client, zone)
9381

9482
updateResponse, err := instanceAPI.UpdateSnapshot(&UpdateSnapshotRequest{
95-
SnapshotID: createResponse.Snapshot.ID,
83+
SnapshotID: localSnapshot.ID,
84+
Zone: zone,
9685
Name: scw.StringPtr("new_name"),
9786
Tags: scw.StringsPtr([]string{"foo", "bar"}),
9887
})
@@ -101,12 +90,14 @@ func TestAPI_UpdateSnapshot(t *testing.T) {
10190
testhelpers.Equals(t, []string{"foo", "bar"}, updateResponse.Snapshot.Tags)
10291

10392
_, err = instanceAPI.WaitForSnapshot(&WaitForSnapshotRequest{
104-
SnapshotID: createResponse.Snapshot.ID,
93+
SnapshotID: localSnapshot.ID,
94+
Zone: zone,
10595
})
10696
testhelpers.AssertNoError(t, err)
10797

10898
err = instanceAPI.DeleteSnapshot(&DeleteSnapshotRequest{
109-
SnapshotID: createResponse.Snapshot.ID,
99+
SnapshotID: localSnapshot.ID,
100+
Zone: zone,
110101
})
111102
testhelpers.AssertNoError(t, err)
112103
}

0 commit comments

Comments
 (0)