Skip to content

Commit 4661bf1

Browse files
authored
Merge pull request #22 from alakae/test_reordering
Add Test for Reordering Network Interfaces
2 parents 69dfe06 + 0149b90 commit 4661bf1

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed

test/integration/network_integration_test.go

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,95 @@ func TestIntegrationNetwork_Reattach(t *testing.T) {
278278
}
279279
}
280280

281+
func TestIntegrationNetwork_Reorder(t *testing.T) {
282+
integrationTest(t)
283+
284+
autoCreateSubnet := false
285+
createNetworkRequest := &cloudscale.NetworkCreateRequest{
286+
Name: networkBaseName,
287+
AutoCreateIPV4Subnet: &autoCreateSubnet,
288+
}
289+
network, err := client.Networks.Create(context.TODO(), createNetworkRequest)
290+
if err != nil {
291+
t.Fatalf("Networks.Create returned error %s\n", err)
292+
}
293+
294+
createSubnetRequest := &cloudscale.SubnetCreateRequest{
295+
Network: network.UUID,
296+
CIDR: "192.168.177.0/24",
297+
}
298+
subnet, err := client.Subnets.Create(context.TODO(), createSubnetRequest)
299+
if err != nil {
300+
t.Fatalf("Subnets.Create returned error %s\n", err)
301+
}
302+
303+
interfaces := []cloudscale.InterfaceRequest{
304+
{Network: "public"},
305+
{Network: network.UUID},
306+
}
307+
createServerRequest := &cloudscale.ServerRequest{
308+
Name: "go-sdk-integration-test-network",
309+
Flavor: "flex-2",
310+
Image: DefaultImageSlug,
311+
VolumeSizeGB: 10,
312+
Interfaces: &interfaces,
313+
SSHKeys: []string{
314+
pubKey,
315+
},
316+
}
317+
318+
server, err := client.Servers.Create(context.Background(), createServerRequest)
319+
if err != nil {
320+
t.Fatalf("Servers.Create returned error %s\n", err)
321+
}
322+
waitUntil("running", server.UUID, t)
323+
324+
if numNetworks := len(server.Interfaces); numNetworks != 2 {
325+
t.Errorf("Attatched to number of Networks\ngot=%#v\nwant=%#v", numNetworks, 2)
326+
}
327+
328+
if subnetUUID := server.Interfaces[1].Addresses[0].Subnet.UUID; subnetUUID != subnet.UUID {
329+
t.Errorf("Unexpected subnet UUID on second interface\ngot=%#v\nwant=%#v", subnetUUID, subnet.UUID)
330+
}
331+
332+
for i, j := 0, len(interfaces)-1; i < j; i, j = i+1, j-1 {
333+
interfaces[i], interfaces[j] = interfaces[j], interfaces[i]
334+
}
335+
336+
updateRequest := cloudscale.ServerUpdateRequest{
337+
Interfaces: &interfaces,
338+
}
339+
err = client.Servers.Update(context.Background(), server.UUID, &updateRequest)
340+
if err != nil {
341+
t.Fatalf("Servers.Update returned error %s\n", err)
342+
}
343+
344+
updatedServer, err := client.Servers.Get(context.Background(), server.UUID)
345+
if err != nil {
346+
t.Fatalf("Servers.Get returned error %s\n", err)
347+
}
348+
349+
if numNetworks := len(updatedServer.Interfaces); numNetworks != 2 {
350+
t.Errorf("Attatched to number of Networks\ngot=%#v\nwant=%#v", numNetworks, 2)
351+
}
352+
if subnetUUID := updatedServer.Interfaces[0].Addresses[0].Subnet.UUID; subnetUUID != subnet.UUID {
353+
t.Errorf("Unexpected subnet UUID on first interface\ngot=%#v\nwant=%#v", subnetUUID, subnet.UUID)
354+
}
355+
356+
err = client.Servers.Delete(context.Background(), server.UUID)
357+
if err != nil {
358+
t.Fatalf("Servers.Delete returned error %s\n", err)
359+
}
360+
361+
// sending the next request immediately can cause errors, since the port cleanup process is still ongoing
362+
time.Sleep(5 * time.Second)
363+
err = client.Networks.Delete(context.Background(), network.UUID)
364+
if err != nil {
365+
t.Fatalf("Networks.Delete returned error %s\n", err)
366+
}
367+
}
368+
369+
281370
func TestIntegrationNetwork_Update(t *testing.T) {
282371

283372
createNetworkRequest := &cloudscale.NetworkCreateRequest{

0 commit comments

Comments
 (0)