瀏覽代碼

Add integration tests

Jackson Tian 7 年之前
父節點
當前提交
790a49b477
共有 9 個文件被更改,包括 70 次插入696 次删除
  1. 2 4
      .travis.yml
  2. 0 32
      integration/cdn_test.go
  3. 0 1
      integration/cs_test.go
  4. 11 176
      integration/ecs_test.go
  5. 0 199
      integration/rds_test.go
  6. 0 152
      integration/slb_test.go
  7. 0 46
      integration/utils.go
  8. 0 86
      integration/vpc_test.go
  9. 57 0
      main.go

+ 2 - 4
.travis.yml

@@ -4,11 +4,9 @@ go:
   - 1.10.x
   - 1.11.x
 
-branches:
+branches: # build only on these branches
   only:
     - master
-    - pre-release
-    - dev-jxy
 
 install:
   - go get -u github.com/golang/dep/cmd/dep
@@ -26,7 +24,7 @@ script:
   - go build ./sdk
   - go build ./services/...
   - go test -race -coverprofile=coverage.txt -covermode=atomic ./sdk/...
-  #- go test -v -timeout 60s ./integration/...
+  - if [ "$TRAVIS_BRANCH" == "master" ]; then go test -v -timeout 60s ./integration/... ; fi
 
 after_success:
   - bash <(curl -s https://codecov.io/bash)

+ 0 - 32
integration/cdn_test.go

@@ -1,32 +0,0 @@
-package integration
-
-import (
-	"fmt"
-	"testing"
-
-	"github.com/aliyun/alibaba-cloud-sdk-go/services/cdn"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestCdnInstance(t *testing.T) {
-
-	// init client
-	config := getConfigFromEnv()
-	cdnClient, err := cdn.NewClientWithAccessKey("cn-hangzhou", config.AccessKeyId, config.AccessKeySecret)
-	assertErrorNil(t, err, "Failed to init client")
-	fmt.Printf("Init client success\n")
-
-	// getCdnStatus
-	assertCdnStatus(t, cdnClient)
-
-}
-
-func assertCdnStatus(t *testing.T, client *cdn.Client) {
-	fmt.Print("describing cdn service status...")
-	request := cdn.CreateDescribeCdnServiceRequest()
-	response, err := client.DescribeCdnService(request)
-	assertErrorNil(t, err, "Failed to describing cdn service status")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	assert.Equal(t, "PayByTraffic", response.InternetChargeType)
-	fmt.Printf("ok(%d)!\n", response.GetHttpStatus())
-}

+ 0 - 1
integration/cs_test.go

@@ -1 +0,0 @@
-package integration

+ 11 - 176
integration/ecs_test.go

@@ -1,186 +1,21 @@
 package integration
 
 import (
-	"fmt"
-	"strconv"
-	"strings"
+	"os"
 	"testing"
-	"time"
 
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
-	"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
 	"github.com/stretchr/testify/assert"
-)
 
-const (
-	EcsInstanceDefaultTimeout = 120
-	EcsDefaultWaitForInterval = 20
-
-	EcsInstanceStatusRunning = "Running"
-	EcsInstanceStatusStopped = "Stopped"
-	EcsInstanceStatusDeleted = "Deleted"
+	"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
 )
 
-// create -> start -> stop -> delete
-func TestEcsInstance(t *testing.T) {
-
-	// init client
-	config := getConfigFromEnv()
-	ecsClient, err := ecs.NewClientWithAccessKey("cn-hangzhou", config.AccessKeyId, config.AccessKeySecret)
-	assertErrorNil(t, err, "Failed to init client")
-	fmt.Printf("Init client success\n")
-
-	// get demo instance attributes
-	param := getDemoEcsInstanceAttributes(t, ecsClient)
-
-	// create
-	instanceId := createEcsInstance(t, ecsClient, param)
-
-	// defer wait for deleted
-	defer waitForEcsInstance(t, ecsClient, instanceId, EcsInstanceStatusDeleted, 120)
-
-	// defer delete
-	defer deleteEcsInstance(t, ecsClient, instanceId)
-
-	// wait
-	waitForEcsInstance(t, ecsClient, instanceId, EcsInstanceStatusStopped, 60)
-
-	// start
-	startEcsInstance(t, ecsClient, instanceId)
-
-	// wait
-	waitForEcsInstance(t, ecsClient, instanceId, EcsInstanceStatusRunning, 240)
-
-	// stop
-	stopEcsInstance(t, ecsClient, instanceId)
-
-	// wait
-	waitForEcsInstance(t, ecsClient, instanceId, EcsInstanceStatusStopped, 600)
-
-	//delete all test instance
-	deleteAllTestEcsInstance(t, ecsClient)
-}
-
-func getDemoEcsInstanceAttributes(t *testing.T, client *ecs.Client) *ecs.DescribeInstanceAttributeResponse {
-	fmt.Print("trying to get demo ecs instance...")
-	request := ecs.CreateDescribeInstanceAttributeRequest()
-	request.InstanceId = getEcsDemoInstanceId()
-	response, err := client.DescribeInstanceAttribute(request)
-	assertErrorNil(t, err, "Failed to get demo ecs instance attributes")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Println("success!")
-	return response
-}
-
-func createEcsInstance(t *testing.T, client *ecs.Client, param *ecs.DescribeInstanceAttributeResponse) (instanceId string) {
-	fmt.Print("creating ecs instance...")
-	request := ecs.CreateCreateInstanceRequest()
-	request.ImageId = param.ImageId
-	request.InstanceName = InstanceNamePrefix + strconv.FormatInt(time.Now().Unix(), 10)
-	request.SecurityGroupId = param.SecurityGroupIds.SecurityGroupId[0]
-	request.InstanceType = "ecs.t1.small"
-	response, err := client.CreateInstance(request)
-	assertErrorNil(t, err, "Failed to create ecs instance")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	instanceId = response.InstanceId
-	fmt.Printf("success(%d)! instanceId = %s\n", response.GetHttpStatus(), instanceId)
-	return
-}
-
-func startEcsInstance(t *testing.T, client *ecs.Client, instanceId string) {
-	fmt.Printf("starting ecs instance(%s)...", instanceId)
-	request := ecs.CreateStartInstanceRequest()
-	request.InstanceId = instanceId
-	response, err := client.StartInstance(request)
-	assertErrorNil(t, err, "Failed to start ecs instance "+instanceId)
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Println("success!")
-}
-
-func stopEcsInstance(t *testing.T, client *ecs.Client, instanceId string) {
-	fmt.Printf("stopping ecs instance(%s)...", instanceId)
-	request := ecs.CreateStopInstanceRequest()
-	request.InstanceId = instanceId
-	response, err := client.StopInstance(request)
-	assertErrorNil(t, err, "Failed to stop ecs instance "+instanceId)
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Println("success!")
-}
-
-func deleteEcsInstance(t *testing.T, client *ecs.Client, instanceId string) {
-	fmt.Printf("deleting ecs instance(%s)...", instanceId)
-	request := ecs.CreateDeleteInstanceRequest()
-	request.InstanceId = instanceId
-	response, err := client.DeleteInstance(request)
-	assertErrorNil(t, err, "Failed to delete ecs instance "+instanceId)
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Println("success!")
-}
-
-func deleteAllTestEcsInstance(t *testing.T, client *ecs.Client) {
-	fmt.Print("list all ecs instances...")
-	request := ecs.CreateDescribeInstancesRequest()
-	request.PageSize = requests.NewInteger(30)
-	request.PageNumber = requests.NewInteger(1)
-	response, err := client.DescribeInstances(request)
-	assertErrorNil(t, err, "Failed to list all ecs instances ")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Printf("success! TotalCount = %s\n", strconv.Itoa(response.TotalCount))
-
-	for _, instanceInfo := range response.Instances.Instance {
-		if strings.HasPrefix(instanceInfo.InstanceName, InstanceNamePrefix) {
-			createTime, err := strconv.ParseInt(instanceInfo.InstanceName[26:len(instanceInfo.InstanceName)], 10, 64)
-			assertErrorNil(t, err, "Parse instance create time failed: "+instanceInfo.InstanceName)
-			if (time.Now().Unix() - createTime) < (60 * 60) {
-				fmt.Printf("found undeleted ecs instance(%s) but created in 60 minutes, try to delete next time\n", instanceInfo.InstanceName)
-			} else {
-				fmt.Printf("found undeleted ecs instance(%s), status=%s, try to delete it.\n",
-					instanceInfo.Status, instanceInfo.InstanceId)
-				if instanceInfo.Status == EcsInstanceStatusRunning {
-					// stop
-					stopEcsInstance(t, client, instanceInfo.InstanceId)
-				} else if instanceInfo.Status == EcsInstanceStatusStopped {
-					// delete
-					deleteEcsInstance(t, client, instanceInfo.InstanceId)
-					// wait
-					waitForEcsInstance(t, client, instanceInfo.InstanceId, EcsInstanceStatusDeleted, 600)
-				}
-			}
-		}
-	}
-}
-
-func waitForEcsInstance(t *testing.T, client *ecs.Client, instanceId string, targetStatus string, timeout int) {
-	if timeout <= 0 {
-		timeout = EcsInstanceDefaultTimeout
-	}
-	for {
-		request := ecs.CreateDescribeInstanceAttributeRequest()
-		request.InstanceId = instanceId
-		response, err := client.DescribeInstanceAttribute(request)
-
-		if targetStatus == EcsInstanceStatusDeleted {
-			if response.GetHttpStatus() == 404 || response.Status == EcsInstanceStatusDeleted {
-				fmt.Printf("delete ecs instance(%s) success\n", instanceId)
-				break
-			} else {
-				assertErrorNil(t, err, "Failed to describe ecs instance \n")
-			}
-		} else {
-			assertErrorNil(t, err, "Failed to describe ecs instance \n")
-			if response.Status == targetStatus {
-				fmt.Printf("ecs instance(%s) status changed to %s, wait a moment\n", instanceId, targetStatus)
-				time.Sleep(EcsDefaultWaitForInterval * time.Second)
-				break
-			} else {
-				fmt.Printf("ecs instance(%s) status is %s, wait for changing to %s\n", instanceId, response.Status, targetStatus)
-			}
-		}
-
-		timeout = timeout - EcsDefaultWaitForInterval
-		if timeout <= 0 {
-			t.Errorf(fmt.Sprintf("wait for ecs instance(%s) status to %s timeout(%d)\n", instanceId, targetStatus, timeout))
-		}
-		time.Sleep(EcsDefaultWaitForInterval * time.Second)
-	}
+func Test_DescribeRegions(t *testing.T) {
+	request := ecs.CreateDescribeRegionsRequest()
+	client, err := ecs.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	assert.Nil(t, err)
+	response, err := client.DescribeRegions(request)
+	assert.Nil(t, err)
+	assert.True(t, response.IsSuccess())
+	assert.Equal(t, 36, len(response.RequestId))
+	assert.True(t, len(response.Regions.Region) > 0)
 }

+ 0 - 199
integration/rds_test.go

@@ -1,199 +0,0 @@
-package integration
-
-import (
-	"fmt"
-	"strconv"
-	"strings"
-	"testing"
-	"time"
-
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
-	"github.com/aliyun/alibaba-cloud-sdk-go/services/rds"
-	"github.com/stretchr/testify/assert"
-)
-
-const (
-	RdsInstanceDefaultTimeout = 240
-	RdsDefaultWaitForInterval = 60
-
-	RdsInstanceStatusRunning = "Running"
-	RdsInstanceStatusStopped = "Stopped"
-	RdsInstanceStatusDeleted = "Deleted"
-)
-
-func TestRdsInstance(t *testing.T) {
-	return
-	// init client
-	testConfig := getConfigFromEnv()
-	credential := &credentials.BaseCredential{
-		AccessKeyId:     testConfig.AccessKeyId,
-		AccessKeySecret: testConfig.AccessKeySecret,
-	}
-	clientConfig := sdk.NewConfig().WithTimeout(30 * time.Second)
-	rdsClient, err := rds.NewClientWithOptions("cn-hangzhou", clientConfig, credential)
-	assertErrorNil(t, err, "Failed to init client")
-	fmt.Printf("Init client success\n")
-
-	dbInstanceId := createDBInstance(t, rdsClient)
-
-	waitForRdsInstance(t, rdsClient, dbInstanceId, RdsInstanceStatusRunning, 2400)
-
-	//createAccount(t, rdsClient, dbInstanceId)
-
-	//nodeId := getHAConfig(t, rdsClient, dbInstanceId)
-	//
-	//changeNodeToMaster(t, rdsClient, dbInstanceId, nodeId)
-	//
-	//createDataBase(t, rdsClient, dbInstanceId)
-
-	deleteDBInstance(t, rdsClient, dbInstanceId)
-
-	deleteAllTestRdsInstance(t, rdsClient)
-}
-
-func createDBInstance(t *testing.T, client *rds.Client) (rdsInstanceId string) {
-	fmt.Print("creating rds mysql instance...")
-	request := rds.CreateCreateDBInstanceRequest()
-	request.Engine = "MySQL"
-	request.EngineVersion = "5.7"
-	request.DBInstanceClass = "mysql.n1.micro.1"
-	request.DBInstanceStorage = "20"
-	request.DBInstanceNetType = "Intranet"
-	request.SecurityIPList = "0.0.0.0/0"
-	request.PayType = "Postpaid"
-	request.DBInstanceDescription = InstanceNamePrefix + strconv.FormatInt(time.Now().Unix(), 10)
-	response, err := client.CreateDBInstance(request)
-	assertErrorNil(t, err, "Failed to create rds mysql instance")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	rdsInstanceId = response.DBInstanceId
-	fmt.Printf("success(%d)! dbInstanceId = %s\n", response.GetHttpStatus(), rdsInstanceId)
-	return
-}
-
-func getHAConfig(t *testing.T, client *rds.Client, instanceId string) (nodeId string) {
-	fmt.Print("get dbInstance HA nodeId...")
-	request := rds.CreateDescribeDBInstanceHAConfigRequest()
-	request.DBInstanceId = instanceId
-	response, err := client.DescribeDBInstanceHAConfig(request)
-	assertErrorNil(t, err, "Failed to get dbInstance HA nodeId")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	nodeId = response.HostInstanceInfos.NodeInfo[0].NodeId
-	fmt.Printf("success(%d)! nodeId = %s\n", response.GetHttpStatus(), nodeId)
-	return
-}
-
-func changeNodeToMaster(t *testing.T, client *rds.Client, instanceId, nodeId string) {
-	fmt.Print("trying to change current instance to master...")
-	request := rds.CreateSwitchDBInstanceHARequest()
-	request.DBInstanceId = instanceId
-	request.NodeId = nodeId
-	response, err := client.SwitchDBInstanceHA(request)
-	assertErrorNil(t, err, "Failed to change current instance to master")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Printf("success(%d)!\n", response.GetHttpStatus())
-	return
-}
-
-func createAccount(t *testing.T, client *rds.Client, instanceId string) {
-	fmt.Print("creating mysql account...")
-	request := rds.CreateCreateAccountRequest()
-	request.DBInstanceId = instanceId
-	request.AccountName = "sdktest"
-	request.AccountPassword = strconv.FormatInt(time.Now().Unix(), 10)
-	response, err := client.CreateAccount(request)
-	assertErrorNil(t, err, "Failed to create mysql account")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Printf("success(%d)!\n", response.GetHttpStatus())
-	return
-}
-
-func createDataBase(t *testing.T, client *rds.Client, instanceId string) {
-	fmt.Print("creating mysql database...")
-	request := rds.CreateCreateDatabaseRequest()
-	request.DBInstanceId = instanceId
-	request.DBName = "sdktest"
-	request.CharacterSetName = "utf8"
-	response, err := client.CreateDatabase(request)
-	assertErrorNil(t, err, "Failed to create mysql database")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Printf("success(%d)!\n", response.GetHttpStatus())
-	return
-}
-
-func deleteDBInstance(t *testing.T, client *rds.Client, instanceId string) {
-	fmt.Print("deleting rds instance...")
-	request := rds.CreateDeleteDBInstanceRequest()
-	request.DBInstanceId = instanceId
-	response, err := client.DeleteDBInstance(request)
-	assertErrorNil(t, err, "Failed to delete rds instance")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Printf("success(%d)!\n", response.GetHttpStatus())
-	return
-}
-
-func waitForRdsInstance(t *testing.T, client *rds.Client, instanceId string, targetStatus string, timeout int) {
-	if timeout <= 0 {
-		timeout = RdsInstanceDefaultTimeout
-	}
-	for {
-		request := rds.CreateDescribeDBInstanceAttributeRequest()
-		request.DBInstanceId = instanceId
-		response, err := client.DescribeDBInstanceAttribute(request)
-
-		currentStatus := getSingleInstanceStatusFromDescribeDBInstanceAttributeResponse(response)
-		if targetStatus == RdsInstanceStatusDeleted {
-			if currentStatus == targetStatus {
-				fmt.Printf("delete rds instance(%s) success\n", instanceId)
-				break
-			} else {
-				assertErrorNil(t, err, "Failed to describe rds instance \n")
-			}
-		} else {
-			assertErrorNil(t, err, "Failed to describe rds instance \n")
-			if currentStatus == targetStatus {
-				fmt.Printf("rds instance(%s) status changed to %s, wait a moment\n", instanceId, targetStatus)
-				time.Sleep(RdsDefaultWaitForInterval * time.Second)
-				break
-			} else {
-				fmt.Printf("rds instance(%s) status is %s, wait for changing to %s\n", instanceId, currentStatus, targetStatus)
-			}
-		}
-
-		timeout = timeout - RdsDefaultWaitForInterval
-		if timeout <= 0 {
-			t.Errorf(fmt.Sprintf("wait for ecs instance(%s) status to %s timeout(%d)\n", instanceId, targetStatus, timeout))
-		}
-		time.Sleep(RdsDefaultWaitForInterval * time.Second)
-	}
-}
-
-func deleteAllTestRdsInstance(t *testing.T, client *rds.Client) {
-	// list all instances
-	fmt.Print("trying to list all rds test instances...")
-	listRequest := rds.CreateDescribeDBInstancesRequest()
-	listResponse, err := client.DescribeDBInstances(listRequest)
-	assertErrorNil(t, err, "Failed to list all rds instances")
-	assert.Equal(t, 200, listResponse.GetHttpStatus(), listResponse.GetHttpContentString())
-
-	fmt.Printf("found %s instances\n", strconv.Itoa(listResponse.TotalRecordCount))
-	for _, instance := range listResponse.Items.DBInstance {
-		if strings.HasPrefix(instance.DBInstanceDescription, InstanceNamePrefix) {
-			createTime, err := strconv.ParseInt(instance.DBInstanceDescription[len(InstanceNamePrefix):], 10, 64)
-			assertErrorNil(t, err, "Parse instance create time failed: "+instance.DBInstanceDescription)
-			if (time.Now().Unix() - createTime) < (60 * 60) {
-				fmt.Printf("found undeleted rds instance(%s) but created in 60 minutes, try to delete next time\n", instance.DBInstanceDescription)
-			} else {
-				fmt.Printf("found rds test instance(%s), trying to delte it\n", instance.DBInstanceId)
-				deleteDBInstance(t, client, instance.DBInstanceId)
-			}
-		}
-	}
-}
-
-func getSingleInstanceStatusFromDescribeDBInstanceAttributeResponse(response *rds.DescribeDBInstanceAttributeResponse) string {
-	if response.GetHttpStatus() == 404 || len(response.Items.DBInstanceAttribute) == 0 {
-		return RdsInstanceStatusDeleted
-	}
-	return response.Items.DBInstanceAttribute[0].DBInstanceStatus
-}

+ 0 - 152
integration/slb_test.go

@@ -1,152 +0,0 @@
-package integration
-
-import (
-	"fmt"
-	"net/http"
-	"strconv"
-	"strings"
-	"testing"
-	"time"
-
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
-	"github.com/aliyun/alibaba-cloud-sdk-go/services/slb"
-	"github.com/stretchr/testify/assert"
-)
-
-const (
-	SlbInstanceStopped = "inactive"
-)
-
-// create -> start -> stop -> delete
-func TestSlbInstance(t *testing.T) {
-	return
-	// init client
-	config := getConfigFromEnv()
-	slbClient, err := slb.NewClientWithAccessKey("cn-hangzhou", config.AccessKeyId, config.AccessKeySecret)
-	assertErrorNil(t, err, "Failed to init client")
-	fmt.Printf("Init client success\n")
-
-	// create
-	instanceId := createSlbInstance(t, slbClient)
-
-	// defer delete
-	defer deleteSlbInstance(t, slbClient, instanceId)
-
-	// add backend server
-	addBackEndServer(t, slbClient, instanceId)
-
-	// set weight to 80
-	setBackEndServer(t, slbClient, instanceId)
-
-	// remove backend server
-	removeBackEndServer(t, slbClient, instanceId)
-
-	// stop
-	stopSlbInstance(t, slbClient, instanceId)
-
-	// delete all test instance
-	deleteAllTestSlbInstance(t, slbClient)
-}
-
-func createSlbInstance(t *testing.T, client *slb.Client) (instanceId string) {
-	fmt.Print("creating slb instance...")
-	request := slb.CreateCreateLoadBalancerRequest()
-	request.LoadBalancerName = InstanceNamePrefix + strconv.FormatInt(time.Now().Unix(), 10)
-	request.AddressType = "internet"
-	request.ClientToken = utils.GetUUIDV4()
-	response, err := client.CreateLoadBalancer(request)
-	assertErrorNil(t, err, "Failed to create slb instance")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	instanceId = response.LoadBalancerId
-	fmt.Printf("success(%d)! loadBalancerId = %s\n", response.GetHttpStatus(), instanceId)
-	return
-}
-
-func stopSlbInstance(t *testing.T, client *slb.Client, instanceId string) {
-	fmt.Printf("stopping slb instance(%s)...", instanceId)
-	request := slb.CreateSetLoadBalancerStatusRequest()
-	request.LoadBalancerId = instanceId
-	request.LoadBalancerStatus = SlbInstanceStopped
-	response, err := client.SetLoadBalancerStatus(request)
-	assertErrorNil(t, err, "Failed to stop slb instance "+instanceId)
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Println("success!")
-}
-
-func deleteSlbInstance(t *testing.T, client *slb.Client, instanceId string) {
-	fmt.Printf("deleting slb instance(%s)...", instanceId)
-	request := slb.CreateDeleteLoadBalancerRequest()
-	request.LoadBalancerId = instanceId
-	response, err := client.DeleteLoadBalancer(request)
-	if response != nil && response.GetHttpStatus() == http.StatusNotFound {
-		fmt.Println("success!")
-	} else {
-		assertErrorNil(t, err, "Failed to delete slb instance "+instanceId)
-		assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-		fmt.Println("success!")
-	}
-}
-
-func addBackEndServer(t *testing.T, client *slb.Client, instanceId string) {
-	fmt.Printf("add backend server for slb(%s)...", instanceId)
-	ecsDemoInstanceId := getEcsDemoInstanceId()
-	request := slb.CreateSetBackendServersRequest()
-	request.BackendServers = fmt.Sprintf("[{\"ServerId\":\"%s\",\"Weight\":\"100\"}]", ecsDemoInstanceId)
-	request.LoadBalancerId = instanceId
-	response, err := client.SetBackendServers(request)
-	assertErrorNil(t, err, "Failed to add backend servers, LoadBalancerId: "+instanceId)
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Println("success!")
-}
-
-func setBackEndServer(t *testing.T, client *slb.Client, instanceId string) {
-	fmt.Printf("set backend server for slb(%s)...", instanceId)
-	ecsDemoInstanceId := getEcsDemoInstanceId()
-	request := slb.CreateSetBackendServersRequest()
-	request.BackendServers = fmt.Sprintf("[{\"ServerId\":\"%s\",\"Weight\":\"80\"}]", ecsDemoInstanceId)
-	request.LoadBalancerId = instanceId
-	response, err := client.SetBackendServers(request)
-	assertErrorNil(t, err, "Failed to set backend servers, LoadBalancerId: "+instanceId)
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Println("success!")
-}
-
-func removeBackEndServer(t *testing.T, client *slb.Client, instanceId string) {
-	fmt.Printf("remove backend server for slb(%s)...", instanceId)
-	ecsDemoInstanceId := getEcsDemoInstanceId()
-	request := slb.CreateRemoveBackendServersRequest()
-	request.BackendServers = fmt.Sprintf("[\"%s\"]", ecsDemoInstanceId)
-	request.LoadBalancerId = instanceId
-	response, err := client.RemoveBackendServers(request)
-	assertErrorNil(t, err, "Failed to remove backend servers, LoadBalancerId: "+instanceId)
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Println("success!")
-}
-
-func deleteAllTestSlbInstance(t *testing.T, client *slb.Client) {
-	fmt.Printf("list all slb instances...")
-	request := slb.CreateDescribeLoadBalancersRequest()
-	response, err := client.DescribeLoadBalancers(request)
-	assertErrorNil(t, err, "Failed to list all slb instances")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Printf("success(%d)! TotalCount = %s\n", response.GetHttpStatus(), strconv.Itoa(response.TotalCount))
-
-	for _, slbInstanceInfo := range response.LoadBalancers.LoadBalancer {
-		if strings.HasPrefix(slbInstanceInfo.LoadBalancerName, InstanceNamePrefix) {
-			createTime, err := strconv.ParseInt(slbInstanceInfo.LoadBalancerName[len(InstanceNamePrefix):], 10, 64)
-			assertErrorNil(t, err, "Parse instance create time failed: "+slbInstanceInfo.LoadBalancerName)
-			if (time.Now().Unix() - createTime) < (60 * 60) {
-				fmt.Printf("found undeleted slb instance(%s) but created in 60 minutes, try to delete next time\n", slbInstanceInfo.LoadBalancerName)
-			} else {
-				fmt.Printf("found undeleted slb instance(%s), status=%s, try to delete it.\n",
-					slbInstanceInfo.LoadBalancerId, slbInstanceInfo.LoadBalancerStatus)
-				if slbInstanceInfo.LoadBalancerStatus != SlbInstanceStopped {
-					// stop
-					stopSlbInstance(t, client, slbInstanceInfo.LoadBalancerId)
-				}
-				// delete
-				deleteSlbInstance(t, client, slbInstanceInfo.LoadBalancerId)
-			}
-		}
-	}
-}

+ 0 - 46
integration/utils.go

@@ -1,46 +0,0 @@
-package integration
-
-import (
-	"fmt"
-	"os"
-	"testing"
-)
-
-const InstanceNamePrefix = "SdkIntegrationTestInstance"
-
-type Config struct {
-	AccessKeyId     string
-	AccessKeySecret string
-	PublicKeyId     string
-	PrivateKey      string
-	RoleArn         string
-	ChildAK         string
-	ChildSecret     string
-}
-
-func getConfigFromEnv() *Config {
-	config := &Config{
-		AccessKeyId:     os.Getenv("ACCESS_KEY_ID"),
-		AccessKeySecret: os.Getenv("ACCESS_KEY_SECRET"),
-		PublicKeyId:     os.Getenv("PUBLIC_KEY_ID"),
-		PrivateKey:      os.Getenv("PRIVATE_KEY"),
-		RoleArn:         os.Getenv("ROLE_ARN"),
-		ChildAK:         os.Getenv("CHILD_AK"),
-		ChildSecret:     os.Getenv("CHILD_SECRET"),
-	}
-	if config.AccessKeyId == "" {
-		panic("Get ACCESS_KEY_ID from environment variables failed")
-	} else {
-		return config
-	}
-}
-
-func getEcsDemoInstanceId() string {
-	return os.Getenv("DEMO_ECS_INSTANCE_ID")
-}
-
-func assertErrorNil(t *testing.T, err error, message string) {
-	if err != nil {
-		fmt.Fprintf(os.Stderr, message+": %v\n", err)
-	}
-}

+ 0 - 86
integration/vpc_test.go

@@ -1,86 +0,0 @@
-package integration
-
-import (
-	"fmt"
-	"strconv"
-	"testing"
-	"time"
-
-	"github.com/aliyun/alibaba-cloud-sdk-go/services/vpc"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestVpcInstance(t *testing.T) {
-	return
-	// init client
-	config := getConfigFromEnv()
-	vpcClient, err := vpc.NewClientWithAccessKey("cn-hangzhou", config.AccessKeyId, config.AccessKeySecret)
-	assertErrorNil(t, err, "Failed to init client")
-	fmt.Printf("Init client success\n")
-
-	// create vpc
-	vpcId := createVpcInstance(t, vpcClient)
-
-	time.Sleep(5 * time.Second)
-
-	// create switch
-	vswitchId := createVswitchInstance(t, vpcClient, vpcId)
-
-	time.Sleep(5 * time.Second)
-
-	// delete vswitch
-	deleteVSwitchInstance(t, vpcClient, vswitchId)
-
-	// delete vpc
-	deleteVpcInstance(t, vpcClient, vpcId)
-}
-
-func createVpcInstance(t *testing.T, client *vpc.Client) (vpcId string) {
-	fmt.Print("creating vpc instance...")
-	request := vpc.CreateCreateVpcRequest()
-	request.VpcName = InstanceNamePrefix + strconv.FormatInt(time.Now().Unix(), 10)
-	request.CidrBlock = "192.168.0.0/16"
-	response, err := client.CreateVpc(request)
-	assertErrorNil(t, err, "Failed to create vpc instance")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	vpcId = response.VpcId
-	fmt.Printf("success(%d)! vpcId = %s\n", response.GetHttpStatus(), vpcId)
-	return
-}
-
-func createVswitchInstance(t *testing.T, client *vpc.Client, vpcId string) (vswitchId string) {
-	fmt.Print("creating vswitch instance...")
-	request := vpc.CreateCreateVSwitchRequest()
-	request.VSwitchName = InstanceNamePrefix + strconv.FormatInt(time.Now().Unix(), 10)
-	request.VpcId = vpcId
-	request.ZoneId = "cn-hangzhou-b"
-	request.CidrBlock = "192.168.3.0/24"
-	response, err := client.CreateVSwitch(request)
-	assertErrorNil(t, err, "Failed to create vswitch instance")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	vswitchId = response.VSwitchId
-	fmt.Printf("success(%d)! VSwitchId = %s\n", response.GetHttpStatus(), vpcId)
-	return
-}
-
-func deleteVSwitchInstance(t *testing.T, client *vpc.Client, vswitchId string) {
-	fmt.Printf("deleting vswitch instance(%s)...", vswitchId)
-	request := vpc.CreateDeleteVSwitchRequest()
-	request.VSwitchId = vswitchId
-	response, err := client.DeleteVSwitch(request)
-	assertErrorNil(t, err, "Failed to delete vswitch instance")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Printf("success(%d)!\n", response.GetHttpStatus())
-	return
-}
-
-func deleteVpcInstance(t *testing.T, client *vpc.Client, vpcId string) {
-	fmt.Printf("deleting vpc instance(%s)...", vpcId)
-	request := vpc.CreateDeleteVpcRequest()
-	request.VpcId = vpcId
-	response, err := client.DeleteVpc(request)
-	assertErrorNil(t, err, "Failed to delete vpc instance")
-	assert.Equal(t, 200, response.GetHttpStatus(), response.GetHttpContentString())
-	fmt.Printf("success(%d)!\n", response.GetHttpStatus())
-	return
-}

+ 57 - 0
main.go

@@ -0,0 +1,57 @@
+package main
+
+import (
+	"fmt"
+	"os"
+
+	"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
+)
+
+func main() {
+	input := ecs.CreateDescribeRegionsRequest()
+	client, err := ecs.NewClientWithAccessKey("cn-beijing", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+	if err != nil {
+		fmt.Printf("Failed to NewClientWithAccessKey! Error: %s\n", err.Error())
+	}
+	output, err := client.DescribeRegions(input)
+	if err != nil {
+		msg := fmt.Sprintf("Failed to DescribeRegions.!")
+		fmt.Printf("%s\nError: %s\n", msg, err.Error())
+		return
+	}
+
+	fmt.Printf("Regions:%s", output.Regions.Region)
+}
+
+// package main
+
+// import (
+// 	"fmt"
+// 	"os"
+
+// 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
+// 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+// )
+
+// func main() {
+
+// 	client, err := sdk.NewClientWithAccessKey("cn-hangzhou", os.Getenv("ACCESS_KEY_ID"), os.Getenv("ACCESS_KEY_SECRET"))
+// 	if err != nil {
+// 		panic(err)
+// 	}
+
+// 	request := requests.NewCommonRequest()
+// 	// request.Domain = "ecs.aliyuncs.com"
+// 	request.Version = "2014-05-26"
+// 	request.ApiName = "DescribeInstanceStatus"
+
+// 	request.QueryParams["PageNumber"] = "1"
+// 	request.QueryParams["PageSize"] = "30"
+
+// 	response, err := client.ProcessCommonRequest(request)
+// 	if err != nil {
+// 		panic(err)
+// 	}
+
+// 	fmt.Print(response.GetHttpContentString())
+// }