Skip to content

Commit c2966fe

Browse files
committed
Add reattach test.
1 parent 7962948 commit c2966fe

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

test/integration/network_integration_test.go

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,88 @@ func TestIntegrationNetwork_CreateAttached(t *testing.T) {
178178
}
179179
}
180180

181+
func TestIntegrationNetwork_Reattach(t *testing.T) {
182+
integrationTest(t)
183+
184+
autoCreateSubnet := false
185+
createNetworkRequest := &cloudscale.NetworkCreateRequest{
186+
Name: networkBaseName,
187+
AutoCreateIPV4Subnet: &autoCreateSubnet,
188+
}
189+
network, err := client.Networks.Create(context.TODO(), createNetworkRequest)
190+
if err != nil {
191+
t.Fatalf("Networks.Create returned error %s\n", err)
192+
}
193+
194+
createSubnetRequest := &cloudscale.SubnetCreateRequest{
195+
Network: network.UUID,
196+
CIDR: "192.168.77.0/24",
197+
}
198+
subnet, err := client.Subnets.Create(context.TODO(), createSubnetRequest)
199+
if err != nil {
200+
t.Fatalf("Subnets.Create returned error %s\n", err)
201+
}
202+
203+
interfaces := []cloudscale.InterfaceRequest{
204+
{Network: "public"},
205+
}
206+
createServerRequest := &cloudscale.ServerRequest{
207+
Name: "go-sdk-integration-test-network",
208+
Flavor: "flex-2",
209+
Image: DefaultImageSlug,
210+
VolumeSizeGB: 10,
211+
Interfaces: &interfaces,
212+
SSHKeys: []string{
213+
pubKey,
214+
},
215+
}
216+
217+
server, err := client.Servers.Create(context.Background(), createServerRequest)
218+
if err != nil {
219+
t.Fatalf("Servers.Create returned error %s\n", err)
220+
}
221+
waitUntil("running", server.UUID, t)
222+
223+
if numNetworks := len(server.Interfaces); numNetworks != 1 {
224+
t.Errorf("Attatched to number of Networks\ngot=%#v\nwant=%#v", numNetworks, 1)
225+
}
226+
227+
addresses := []cloudscale.AddressRequest{{
228+
Subnet: subnet.UUID,
229+
Address: "192.168.77.77",
230+
}}
231+
interfaces = append(interfaces, cloudscale.InterfaceRequest{
232+
Addresses: &addresses,
233+
})
234+
updateRequest := cloudscale.ServerUpdateRequest{
235+
Interfaces: &interfaces,
236+
}
237+
err = client.Servers.Update(context.Background(), server.UUID, &updateRequest)
238+
if err != nil {
239+
t.Fatalf("Servers.Update returned error %s\n", err)
240+
}
241+
242+
updatedServer, err := client.Servers.Get(context.Background(), server.UUID)
243+
if err != nil {
244+
t.Fatalf("Servers.Get returned error %s\n", err)
245+
}
246+
if numNetworks := len(updatedServer.Interfaces); numNetworks != 2 {
247+
t.Errorf("Attatched to number of Networks\ngot=%#v\nwant=%#v", numNetworks, 2)
248+
}
249+
250+
err = client.Servers.Delete(context.Background(), server.UUID)
251+
if err != nil {
252+
t.Fatalf("Servers.Delete returned error %s\n", err)
253+
}
254+
255+
// sending the next request immediately can cause errors, since the port cleanup process is still ongoing
256+
time.Sleep(5 * time.Second)
257+
err = client.Networks.Delete(context.Background(), network.UUID)
258+
if err != nil {
259+
t.Fatalf("Networks.Delete returned error %s\n", err)
260+
}
261+
}
262+
181263
func TestIntegrationNetwork_Update(t *testing.T) {
182264

183265
createNetworkRequest := &cloudscale.NetworkCreateRequest{

0 commit comments

Comments
 (0)