ecs_describeInstances_ft.cc 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. #include <iostream>
  2. #include "../utils.h"
  3. #include "gtest/gtest.h"
  4. #include "alibabacloud/core/AlibabaCloud.h"
  5. #include "alibabacloud/ecs/EcsClient.h"
  6. #include "alibabacloud/core/CommonClient.h"
  7. #include "alibabacloud/core/CommonRequest.h"
  8. #include "alibabacloud/core/sts/StsClient.h"
  9. #include "alibabacloud/core/StsAssumeRoleCredentialsProvider.h"
  10. using namespace std;
  11. using namespace AlibabaCloud;
  12. using namespace AlibabaCloud::Ecs;
  13. namespace {
  14. TEST(ecs, describeInstances) {
  15. utUtils utils;
  16. string key = utils.get_env("ENV_AccessKeyId");
  17. string secret = utils.get_env("ENV_AccessKeySecret");
  18. InitializeSdk();
  19. ClientConfiguration configuration("cn-hangzhou");
  20. EcsClient client(key, secret, configuration);
  21. Model::DescribeInstancesRequest request;
  22. request.setPageSize(10);
  23. auto outcome = client.describeInstances(request);
  24. EXPECT_TRUE(outcome.isSuccess());
  25. EXPECT_TRUE(outcome.error().errorCode().empty());
  26. EXPECT_TRUE(outcome.result().getTotalCount() >= 0);
  27. ShutdownSdk();
  28. }
  29. TEST(ecs, deleteInstance) {
  30. utUtils utils;
  31. string key = utils.get_env("ENV_AccessKeyId");
  32. string secret = utils.get_env("ENV_AccessKeySecret");
  33. InitializeSdk();
  34. ClientConfiguration configuration("cn-hangzhou");
  35. EcsClient client(key, secret, configuration);
  36. Model::DeleteInstanceRequest delReq;
  37. delReq.setInstanceId("non-exist-ecs-instance");
  38. delReq.setForce(true);
  39. auto outcome = client.deleteInstance(delReq);
  40. EXPECT_TRUE(outcome.error().errorCode() == "InvalidParameter");
  41. EXPECT_TRUE(outcome.error().errorMessage() == "The specified parameter \"Force\" is not valid.");
  42. ShutdownSdk();
  43. }
  44. TEST(ecs, describeInstancesViaCommonRequest) {
  45. utUtils utils;
  46. string key = utils.get_env("ENV_AccessKeyId");
  47. string secret = utils.get_env("ENV_AccessKeySecret");
  48. InitializeSdk();
  49. ClientConfiguration configuration("cn-hangzhou");
  50. CommonClient client(key, secret, configuration);
  51. CommonRequest request(CommonRequest::RpcPattern);
  52. request.setScheme("https");
  53. request.setDomain("ecs.aliyuncs.com");
  54. request.setHttpMethod(HttpRequest::Get);
  55. request.setHeaderParameter("Content-Type", "application/json;chrset=utf-8");
  56. request.setVersion("2014-05-26");
  57. request.setQueryParameter("action", "DescribeInstances");
  58. auto outcome = client.commonResponse(request);
  59. EXPECT_TRUE(outcome.error().errorCode().empty());
  60. EXPECT_TRUE(outcome.result().payload().find("\"TotalCount\":") != string::npos);
  61. ShutdownSdk();
  62. }
  63. TEST(ecs, describeInstancesViaCommonRequestAndStsAssumeRole) {
  64. utUtils utils;
  65. const string sub_user_key = utils.get_env("ENV_AccessKeyId_AssumeRole");
  66. const string sub_user_secret = utils.get_env("ENV_AccessKeySecret_AssumeRole");
  67. const Credentials sub_user_credentials(sub_user_key, sub_user_secret);
  68. const string arn = "acs:ram::1940345800212929:role/testassumerole";
  69. const string session = "roleSessionName";
  70. const string policy = "";
  71. int duration = 1800;
  72. InitializeSdk();
  73. ClientConfiguration configuration("cn-hangzhou");
  74. StsAssumeRoleCredentialsProvider provider(sub_user_credentials, configuration, arn, session, policy, duration);
  75. Credentials assumed_role_credentials = provider.getCredentials();
  76. CommonClient client(assumed_role_credentials, configuration);
  77. CommonRequest request(CommonRequest::RpcPattern);
  78. request.setScheme("https");
  79. request.setDomain("ecs.aliyuncs.com");
  80. request.setHttpMethod(HttpRequest::Get);
  81. request.setHeaderParameter("Content-Type", "application/json;chrset=utf-8");
  82. request.setVersion("2014-05-26");
  83. request.setQueryParameter("action", "DescribeInstances");
  84. auto outcome = client.commonResponse(request);
  85. EXPECT_TRUE(outcome.error().errorCode().empty());
  86. EXPECT_TRUE(outcome.result().payload().find("\"TotalCount\":") != string::npos);
  87. EXPECT_TRUE(outcome.result().payload().find("\"PageNumber\":") != string::npos);
  88. EXPECT_TRUE(outcome.result().payload().find("\"PageSize\":") != string::npos);
  89. EXPECT_TRUE(outcome.result().payload().find("\"Instances\":") != string::npos);
  90. ShutdownSdk();
  91. }
  92. TEST(ecs, describeInstancesClientTimeout) {
  93. utUtils utils;
  94. string key = utils.get_env("ENV_AccessKeyId");
  95. string secret = utils.get_env("ENV_AccessKeySecret");
  96. InitializeSdk();
  97. ClientConfiguration configuration("cn-hangzhou");
  98. configuration.setConnectTimeout(1);
  99. configuration.setReadTimeout(123);
  100. EcsClient client(key, secret, configuration);
  101. Model::DescribeInstancesRequest request;
  102. request.setPageSize(10);
  103. auto outcome = client.describeInstances(request);
  104. EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
  105. EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 1ms, readTimeout: 123ms) when connect or read") == 0);
  106. ShutdownSdk();
  107. }
  108. TEST(ecs, describeInstancesRequestTimeout) {
  109. utUtils utils;
  110. string key = utils.get_env("ENV_AccessKeyId");
  111. string secret = utils.get_env("ENV_AccessKeySecret");
  112. InitializeSdk();
  113. ClientConfiguration configuration("cn-hangzhou");
  114. EcsClient client(key, secret, configuration);
  115. Model::DescribeInstancesRequest request;
  116. request.setPageSize(10);
  117. request.setConnectTimeout(11);
  118. request.setReadTimeout(213);
  119. auto outcome = client.describeInstances(request);
  120. EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
  121. EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 11ms, readTimeout: 213ms) when connect or read") == 0);
  122. ShutdownSdk();
  123. }
  124. TEST(ecs, describeInstancesClientRequestTimeout) {
  125. utUtils utils;
  126. string key = utils.get_env("ENV_AccessKeyId");
  127. string secret = utils.get_env("ENV_AccessKeySecret");
  128. InitializeSdk();
  129. ClientConfiguration configuration("cn-hangzhou");
  130. configuration.setConnectTimeout(1);
  131. configuration.setReadTimeout(123);
  132. EcsClient client(key, secret, configuration);
  133. Model::DescribeInstancesRequest request;
  134. request.setPageSize(10);
  135. request.setConnectTimeout(11);
  136. request.setReadTimeout(213);
  137. auto outcome = client.describeInstances(request);
  138. EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
  139. EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 11ms, readTimeout: 213ms) when connect or read") == 0);
  140. ShutdownSdk();
  141. }
  142. }