timeout_ut.cc 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include "gtest/gtest.h"
  4. #include "alibabacloud/core/Utils.h"
  5. #include "alibabacloud/core/Config.h"
  6. #include "alibabacloud/core/AlibabaCloud.h"
  7. #include "alibabacloud/core/CommonClient.h"
  8. #include "alibabacloud/core/CommonResponse.h"
  9. #include "alibabacloud/core/CommonRequest.h"
  10. #include "alibabacloud/core/SimpleCredentialsProvider.h"
  11. #include "alibabacloud/core/RoaServiceClient.h"
  12. #include "alibabacloud/core/RpcServiceClient.h"
  13. using namespace std;
  14. using namespace AlibabaCloud;
  15. const std::string unreachableDomain = "192.168.111.111";
  16. const std::string timeoutErrorCode = "OperationTimeoutError";
  17. const std::string defaultErrorMessage =
  18. "Timeout (connectTimeout: 5000ms, readTimeout: 10000ms) when connect or read data: GET http://192.168.111.111/";
  19. long kClientConnectTimeout = 12;
  20. long kClientReadTimeout = 234;
  21. const std::string clientErrorMessage =
  22. "Timeout (connectTimeout: 12ms, readTimeout: 234ms) when connect or read data: GET http://192.168.111.111/";
  23. long kRequestConnectTimeout = 33;
  24. long kRequestReadTimeout = 724;
  25. const std::string requestErrorMessage =
  26. "Timeout (connectTimeout: 33ms, readTimeout: 724ms) when connect or read data: GET http://192.168.111.111/";
  27. TEST(timeout, DefaultCommonClientROA) {
  28. ClientConfiguration configuration("cn-hangzhou");
  29. CommonClient client("key", "secret", configuration);
  30. CommonRequest request(CommonRequest::RoaPattern);
  31. request.setScheme("http");
  32. request.setDomain(unreachableDomain);
  33. auto out = client.commonResponse(request);
  34. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  35. EXPECT_TRUE(out.error().errorMessage() == defaultErrorMessage);
  36. }
  37. TEST(timeout, DefaultCommonClientRPC) {
  38. ClientConfiguration configuration("cn-hangzhou");
  39. CommonClient client("key", "secret", configuration);
  40. CommonRequest request(CommonRequest::RpcPattern);
  41. request.setScheme("http");
  42. request.setDomain(unreachableDomain);
  43. auto out = client.commonResponse(request);
  44. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  45. EXPECT_TRUE(out.error().errorMessage().find(defaultErrorMessage) == 0);
  46. }
  47. TEST(timeout, clientCommonClientROA) {
  48. ClientConfiguration configuration("cn-hangzhou");
  49. configuration.setConnectTimeout(kClientConnectTimeout);
  50. configuration.setReadTimeout(kClientReadTimeout);
  51. CommonClient client("key", "secret", configuration);
  52. CommonRequest request(CommonRequest::RoaPattern);
  53. request.setScheme("http");
  54. request.setDomain(unreachableDomain);
  55. auto out = client.commonResponse(request);
  56. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  57. EXPECT_TRUE(out.error().errorMessage() == clientErrorMessage);
  58. }
  59. TEST(timeout, clientCommonClientRPC) {
  60. ClientConfiguration configuration("cn-hangzhou");
  61. configuration.setConnectTimeout(kClientConnectTimeout);
  62. configuration.setReadTimeout(kClientReadTimeout);
  63. CommonClient client("key", "secret", configuration);
  64. CommonRequest request(CommonRequest::RpcPattern);
  65. request.setScheme("http");
  66. request.setDomain(unreachableDomain);
  67. auto out = client.commonResponse(request);
  68. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  69. EXPECT_TRUE(out.error().errorMessage().find(clientErrorMessage) == 0);
  70. }
  71. TEST(timeout, requestCommonClientROA) {
  72. ClientConfiguration configuration("cn-hangzhou");
  73. CommonClient client("key", "secret", configuration);
  74. CommonRequest request(CommonRequest::RoaPattern);
  75. request.setScheme("http");
  76. request.setDomain(unreachableDomain);
  77. request.setConnectTimeout(kRequestConnectTimeout);
  78. request.setReadTimeout(kRequestReadTimeout);
  79. auto out = client.commonResponse(request);
  80. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  81. EXPECT_TRUE(out.error().errorMessage() == requestErrorMessage);
  82. }
  83. TEST(timeout, requestCommonClientRPC) {
  84. ClientConfiguration configuration("cn-hangzhou");
  85. CommonClient client("key", "secret", configuration);
  86. CommonRequest request(CommonRequest::RpcPattern);
  87. request.setScheme("http");
  88. request.setDomain(unreachableDomain);
  89. request.setConnectTimeout(kRequestConnectTimeout);
  90. request.setReadTimeout(kRequestReadTimeout);
  91. auto out = client.commonResponse(request);
  92. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  93. EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
  94. }
  95. TEST(timeout, clientRequestCommonClientROA) {
  96. ClientConfiguration configuration("cn-hangzhou");
  97. configuration.setConnectTimeout(kClientConnectTimeout);
  98. configuration.setReadTimeout(kClientReadTimeout);
  99. CommonClient client("key", "secret", configuration);
  100. CommonRequest request(CommonRequest::RoaPattern);
  101. request.setScheme("http");
  102. request.setDomain(unreachableDomain);
  103. request.setConnectTimeout(kRequestConnectTimeout);
  104. request.setReadTimeout(kRequestReadTimeout);
  105. auto out = client.commonResponse(request);
  106. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  107. EXPECT_TRUE(out.error().errorMessage() == requestErrorMessage);
  108. }
  109. TEST(timeout, clientRequestCommonClientRPC) {
  110. ClientConfiguration configuration("cn-hangzhou");
  111. configuration.setConnectTimeout(kClientConnectTimeout);
  112. configuration.setReadTimeout(kClientReadTimeout);
  113. CommonClient client("key", "secret", configuration);
  114. CommonRequest request(CommonRequest::RpcPattern);
  115. request.setConnectTimeout(kRequestConnectTimeout);
  116. request.setReadTimeout(kRequestReadTimeout);
  117. request.setScheme("http");
  118. request.setDomain(unreachableDomain);
  119. auto out = client.commonResponse(request);
  120. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  121. EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
  122. }
  123. class TestRoaClient : public RoaServiceClient {
  124. public:
  125. TestRoaClient(const std::string & servicename, const std::shared_ptr<CredentialsProvider> &credentialsProvider,
  126. const ClientConfiguration &configuration,
  127. const std::shared_ptr<Signer> &signer = std::make_shared<HmacSha1Signer>()):
  128. RoaServiceClient(servicename, credentialsProvider, configuration, signer)
  129. {}
  130. JsonOutcome makeRequest(const std::string &endpoint, const RoaServiceRequest &msg, HttpRequest::Method method = HttpRequest::Method::Get)const {
  131. return RoaServiceClient::makeRequest(endpoint, msg, method);
  132. }
  133. };
  134. TEST(timeout, roaClientDefault) {
  135. ClientConfiguration configuration("cn-hangzhou");
  136. const Credentials credentials("key", "secret");
  137. TestRoaClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
  138. RoaServiceRequest request("product", "version");
  139. request.setScheme("http");
  140. auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
  141. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  142. EXPECT_TRUE(out.error().errorMessage().find(defaultErrorMessage) == 0);
  143. }
  144. TEST(timeout, roaClientclient) {
  145. ClientConfiguration configuration("cn-hangzhou");
  146. configuration.setConnectTimeout(kClientConnectTimeout);
  147. configuration.setReadTimeout(kClientReadTimeout);
  148. const Credentials credentials("key", "secret");
  149. TestRoaClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
  150. RoaServiceRequest request("product", "version");
  151. request.setScheme("http");
  152. auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
  153. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  154. EXPECT_TRUE(out.error().errorMessage().find(clientErrorMessage) == 0);
  155. }
  156. TEST(timeout, roaClientrequest) {
  157. ClientConfiguration configuration("cn-hangzhou");
  158. const Credentials credentials("key", "secret");
  159. TestRoaClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
  160. RoaServiceRequest request("product", "version");
  161. request.setScheme("http");
  162. request.setConnectTimeout(kRequestConnectTimeout);
  163. request.setReadTimeout(kRequestReadTimeout);
  164. auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
  165. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  166. EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
  167. }
  168. TEST(timeout, roaClientclientrequest) {
  169. ClientConfiguration configuration("cn-hangzhou");
  170. configuration.setConnectTimeout(kClientConnectTimeout);
  171. configuration.setReadTimeout(kClientReadTimeout);
  172. const Credentials credentials("key", "secret");
  173. TestRoaClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
  174. RoaServiceRequest request("product", "version");
  175. request.setScheme("http");
  176. request.setConnectTimeout(kRequestConnectTimeout);
  177. request.setReadTimeout(kRequestReadTimeout);
  178. auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
  179. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  180. EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
  181. }
  182. class TestRpcClient : public RpcServiceClient {
  183. public:
  184. TestRpcClient(const std::string & servicename, const std::shared_ptr<CredentialsProvider> &credentialsProvider,
  185. const ClientConfiguration &configuration,
  186. const std::shared_ptr<Signer> &signer = std::make_shared<HmacSha1Signer>()):
  187. RpcServiceClient(servicename, credentialsProvider, configuration, signer)
  188. {}
  189. JsonOutcome makeRequest(const std::string &endpoint, const RpcServiceRequest &msg, HttpRequest::Method method = HttpRequest::Method::Get)const {
  190. return RpcServiceClient::makeRequest(endpoint, msg, method);
  191. }
  192. };
  193. TEST(timeout, rpcClientDefault) {
  194. ClientConfiguration configuration("cn-hangzhou");
  195. const Credentials credentials("key", "secret");
  196. TestRpcClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
  197. RpcServiceRequest request("product", "version", "aciton");
  198. request.setScheme("http");
  199. auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
  200. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  201. EXPECT_TRUE(out.error().errorMessage().find(defaultErrorMessage) == 0);
  202. }
  203. TEST(timeout, rpcClientclient) {
  204. ClientConfiguration configuration("cn-hangzhou");
  205. configuration.setConnectTimeout(kClientConnectTimeout);
  206. configuration.setReadTimeout(kClientReadTimeout);
  207. const Credentials credentials("key", "secret");
  208. TestRpcClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
  209. RpcServiceRequest request("product", "version", "aciton");
  210. request.setScheme("http");
  211. auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
  212. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  213. EXPECT_TRUE(out.error().errorMessage().find(clientErrorMessage) == 0);
  214. }
  215. TEST(timeout, rpcClientrequest) {
  216. ClientConfiguration configuration("cn-hangzhou");
  217. const Credentials credentials("key", "secret");
  218. TestRpcClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
  219. RpcServiceRequest request("product", "version", "aciton");
  220. request.setScheme("http");
  221. request.setConnectTimeout(kRequestConnectTimeout);
  222. request.setReadTimeout(kRequestReadTimeout);
  223. auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
  224. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  225. EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
  226. }
  227. TEST(timeout, rpcClientclientrequest) {
  228. ClientConfiguration configuration("cn-hangzhou");
  229. configuration.setConnectTimeout(kClientConnectTimeout);
  230. configuration.setReadTimeout(kClientReadTimeout);
  231. const Credentials credentials("key", "secret");
  232. TestRpcClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
  233. RpcServiceRequest request("product", "version", "aciton");
  234. request.setScheme("http");
  235. request.setConnectTimeout(kRequestConnectTimeout);
  236. request.setReadTimeout(kRequestReadTimeout);
  237. auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
  238. EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
  239. EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
  240. }