123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- package ecs
- import (
- "testing"
- "time"
- "github.com/denverdino/aliyungo/common"
- )
- func TestVPCCreationAndDeletion(t *testing.T) {
- client := NewTestClient()
- instance, err := client.DescribeInstanceAttribute(TestInstanceId)
- if err != nil {
- t.Fatalf("Failed to describe instance %s: %v", TestInstanceId, err)
- }
- //client.SetDebug(true)
- regionId := instance.RegionId
- zoneId := instance.ZoneId
- args := CreateVpcArgs{
- RegionId: regionId,
- VpcName: "My_AliyunGO_test_VPC",
- Description: "My AliyunGO test VPC",
- CidrBlock: "172.16.0.0/16",
- ClientToken: client.GenerateClientToken(),
- }
- resp, err := client.CreateVpc(&args)
- if err != nil {
- t.Fatalf("Failed to create VPC: %v", err)
- }
- t.Logf("VPC is created successfully: %++v", resp)
- vpcId := resp.VpcId
- newName := args.VpcName + "_update"
- newDesc := args.Description + "_update"
- modifyArgs := ModifyVpcAttributeArgs{
- VpcId: vpcId,
- VpcName: newName,
- Description: newDesc,
- }
- err = client.ModifyVpcAttribute(&modifyArgs)
- if err != nil {
- t.Errorf("Failed to modify VPC: %v", err)
- }
- describeArgs := DescribeVpcsArgs{
- VpcId: vpcId,
- RegionId: regionId,
- }
- vpcs, _, err := client.DescribeVpcs(&describeArgs)
- if err != nil {
- t.Errorf("Failed to describe VPCs: %v", err)
- }
- t.Logf("VPCs: %++v", vpcs)
- if vpcs[0].VpcName != newName {
- t.Errorf("Failed to modify VPC with new name: %s", newName)
- }
- err = client.WaitForVpcAvailable(regionId, vpcId, 60)
- if err != nil {
- t.Errorf("Failed to wait VPC to available: %v", err)
- }
- _testECSSecurityGroupCreationAndDeletion(t, client, regionId, vpcId)
- //Test VSwitch
- vSwitchId, err := testCreateVSwitch(t, client, regionId, zoneId, vpcId, resp.VRouterId)
- if err != nil {
- t.Errorf("Failed to create VSwitch: %v", err)
- } else {
- if TestIAmRich {
- instanceId, sgId, err := testCreateInstanceVpc(t, client, regionId, vpcId, vSwitchId, instance.ImageId)
- if err == nil {
- testEipAddress(t, client, regionId, instanceId)
- //Test VRouter
- testVRouter(t, client, regionId, vpcId, resp.VRouterId, instanceId)
- }
- if instanceId != "" {
- err = client.StopInstance(instanceId, true)
- if err != nil {
- t.Errorf("Failed to stop instance %s: %v", instanceId, err)
- } else {
- err = client.WaitForInstance(instanceId, Stopped, 0)
- if err != nil {
- t.Errorf("Instance %s is failed to stop: %v", instanceId, err)
- }
- t.Logf("Instance %s is stopped successfully.", instanceId)
- }
- err = client.DeleteInstance(instanceId)
- if err != nil {
- t.Errorf("Failed to delete instance %s: %v", instanceId, err)
- } else {
- t.Logf("Instance %s is deleted successfully.", instanceId)
- }
- }
- if sgId != "" {
- //Wait the instance deleted completedly
- time.Sleep(10 * time.Second)
- err = client.DeleteSecurityGroup(regionId, sgId)
- if err != nil {
- t.Fatalf("Failed to delete security group %s: %v", sgId, err)
- }
- t.Logf("Security group %s is deleted successfully.", sgId)
- }
- }
- }
- if vSwitchId != "" {
- err = client.DeleteVSwitch(vSwitchId)
- if err != nil {
- t.Fatalf("Failed to delete VSwitch: %v", err)
- }
- t.Logf("VSwitch %s is deleted successfully.", vSwitchId)
- }
- time.Sleep(20 * time.Second)
- err = client.DeleteVpc(vpcId)
- if err != nil {
- t.Errorf("Failed to delete VPC: %v", err)
- }
- t.Logf("VPC %s is deleted successfully.", vpcId)
- }
- func testCreateInstanceVpc(t *testing.T, client *Client, regionId common.Region, vpcId string, vswitchId, imageId string) (instanceId string, sgId string, err error) {
- sgName := "test-security-group"
- args := CreateSecurityGroupArgs{
- RegionId: regionId,
- VpcId: vpcId,
- SecurityGroupName: sgName,
- }
- sgId, err = client.CreateSecurityGroup(&args)
- if err != nil {
- t.Errorf("Failed to create security group %s: %v", sgName, err)
- return "", "", err
- }
- createArgs := CreateInstanceArgs{
- RegionId: regionId,
- ImageId: imageId,
- InstanceType: "ecs.t1.small",
- SecurityGroupId: sgId,
- VSwitchId: vswitchId,
- }
- instanceId, err = client.CreateInstance(&createArgs)
- if err != nil {
- t.Errorf("Failed to create instance from Image %s: %v", imageId, err)
- return "", sgId, err
- }
- t.Logf("Instance %s is created successfully.", instanceId)
- instance, err := client.DescribeInstanceAttribute(instanceId)
- t.Logf("Instance: %++v %v", instance, err)
- err = client.WaitForInstance(instanceId, Stopped, 0)
- err = client.StartInstance(instanceId)
- if err != nil {
- t.Errorf("Failed to start instance %s: %v", instanceId, err)
- return instanceId, sgId, err
- }
- err = client.WaitForInstance(instanceId, Running, 0)
- return instanceId, sgId, err
- }
|