timeout support when create client or make request
This commit is contained in:
@@ -77,7 +77,8 @@ add_executable(core_ut
|
||||
sts_model_assumerole_result_ut.cc
|
||||
sts_model_getcalleridentity_request_ut.cc
|
||||
sts_model_getcalleridentity_result_ut.cc
|
||||
)
|
||||
timeout_ut.cc
|
||||
)
|
||||
|
||||
set_target_properties(core_ut
|
||||
PROPERTIES
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "gtest/gtest.h"
|
||||
#include "alibabacloud/core/ClientConfiguration.h"
|
||||
#include "alibabacloud/core/AlibabaCloud.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace AlibabaCloud;
|
||||
@@ -28,4 +29,11 @@ TEST(ClientConfiguration, basic) {
|
||||
EXPECT_TRUE(config.proxy().port() == port);
|
||||
EXPECT_TRUE(config.proxy().user() == user);
|
||||
EXPECT_TRUE(config.proxy().password() == password);
|
||||
|
||||
EXPECT_TRUE(config.connectTimeout() == kDefaultConnectTimeout);
|
||||
EXPECT_TRUE(config.readTimeout() == kDefaultReadTimeout);
|
||||
config.setConnectTimeout(1222);
|
||||
config.setReadTimeout(23333);
|
||||
EXPECT_TRUE(config.connectTimeout() == 1222);
|
||||
EXPECT_TRUE(config.readTimeout() == 23333);
|
||||
}
|
||||
|
||||
@@ -10,10 +10,6 @@
|
||||
#include "../src/CurlHttpClient.h"
|
||||
|
||||
using namespace std;
|
||||
using ::testing::Return;
|
||||
using ::testing::DoAll;
|
||||
using ::testing::SetArgReferee;
|
||||
using ::testing::ReturnPointee;
|
||||
using ::testing::_;
|
||||
using ::testing::NiceMock;
|
||||
using ::testing::DefaultValue;
|
||||
@@ -27,6 +23,64 @@ class mockCurlHttpClient : public CurlHttpClient {
|
||||
MOCK_METHOD1(makeRequest, HttpResponseOutcome (const HttpRequest &request));
|
||||
};
|
||||
|
||||
TEST(CurlHttpClient, connectTimeout) {
|
||||
CurlHttpClient client;
|
||||
HttpRequest request;
|
||||
|
||||
Url url;
|
||||
url.setScheme("http");
|
||||
url.setHost("192.168.100.100");
|
||||
|
||||
request.setMethod(HttpRequest::Method::Get);
|
||||
request.setUrl(url);
|
||||
request.setConnectTimeout(100);
|
||||
request.setReadTimeout(1000);
|
||||
request.setHeader("Content-Type", "text/html");
|
||||
HttpClient::HttpResponseOutcome out = client.makeRequest(request);
|
||||
string errmsg = "Timeout (connectTimeout: 100ms, readTimeout: 1000ms) when connect or read data: GET http://192.168.100.100/";
|
||||
EXPECT_TRUE(out.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(out.error().errorMessage() == errmsg);
|
||||
}
|
||||
|
||||
TEST(CurlHttpClient, defaultTimeout) {
|
||||
CurlHttpClient client;
|
||||
HttpRequest request;
|
||||
|
||||
Url url;
|
||||
url.setScheme("http");
|
||||
url.setHost("192.168.100.100");
|
||||
|
||||
request.setMethod(HttpRequest::Method::Get);
|
||||
request.setUrl(url);
|
||||
request.setHeader("Content-Type", "text/html");
|
||||
HttpClient::HttpResponseOutcome out = client.makeRequest(request);
|
||||
string errmsg = "Timeout (connectTimeout: 5000ms, readTimeout: 10000ms) when connect or read data: GET http://192.168.100.100/";
|
||||
EXPECT_TRUE(out.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(out.error().errorMessage() == errmsg);
|
||||
}
|
||||
|
||||
TEST(CurlHttpClient, readTimeout) {
|
||||
CurlHttpClient client;
|
||||
HttpRequest request;
|
||||
|
||||
Url url;
|
||||
url.setScheme("http");
|
||||
url.setHost("127.0.0.1");
|
||||
url.setPort(8021);
|
||||
url.setPath("/readTimeoutTest");
|
||||
url.setQuery("timeout=500");
|
||||
|
||||
request.setMethod(HttpRequest::Method::Get);
|
||||
request.setUrl(url);
|
||||
request.setConnectTimeout(233);
|
||||
request.setReadTimeout(500);
|
||||
request.setHeader("Content-Type", "text/html");
|
||||
HttpClient::HttpResponseOutcome out = client.makeRequest(request);
|
||||
string errmsg = "Timeout (connectTimeout: 233ms, readTimeout: 500ms) when connect or read data: GET http://127.0.0.1:8021/readTimeoutTest?timeout=500";
|
||||
|
||||
EXPECT_TRUE(out.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(out.error().errorMessage() == errmsg);
|
||||
}
|
||||
|
||||
TEST(CurlHttpClient, http_get) {
|
||||
CurlHttpClient client;
|
||||
|
||||
@@ -18,13 +18,20 @@ TEST(HttpRequest, basic) {
|
||||
url.setQuery("key=value&key2=value2");
|
||||
url.setFragment("fragid1");
|
||||
|
||||
HttpRequest http_request(url, HttpRequest::Method::Post);
|
||||
HttpRequest req(url, HttpRequest::Method::Post);
|
||||
|
||||
EXPECT_TRUE(http_request.method() == HttpRequest::Method::Post);
|
||||
http_request.setMethod(HttpRequest::Method::Get);
|
||||
EXPECT_TRUE(http_request.method() == HttpRequest::Method::Get);
|
||||
EXPECT_TRUE(req.method() == HttpRequest::Method::Post);
|
||||
req.setMethod(HttpRequest::Method::Get);
|
||||
EXPECT_TRUE(req.method() == HttpRequest::Method::Get);
|
||||
|
||||
http_request.setUrl(url);
|
||||
Url rUrl = http_request.url();
|
||||
req.setUrl(url);
|
||||
Url rUrl = req.url();
|
||||
EXPECT_TRUE(rUrl.toString() == src);
|
||||
|
||||
EXPECT_TRUE(req.connectTimeout() == 5000);
|
||||
EXPECT_TRUE(req.readTimeout() == 10000);
|
||||
req.setConnectTimeout(12345);
|
||||
req.setReadTimeout(3335);
|
||||
EXPECT_TRUE(req.connectTimeout() == 12345);
|
||||
EXPECT_TRUE(req.readTimeout() == 3335);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <string.h>
|
||||
#include "gtest/gtest.h"
|
||||
#include "alibabacloud/core/ServiceRequest.h"
|
||||
#include "alibabacloud/core/AlibabaCloud.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace AlibabaCloud;
|
||||
@@ -30,6 +31,7 @@ namespace {
|
||||
using ServiceRequest::setResourcePath;
|
||||
using ServiceRequest::setProduct;
|
||||
using ServiceRequest::setVersion;
|
||||
|
||||
};
|
||||
|
||||
TEST(ServiceRequest, basic) {
|
||||
@@ -81,5 +83,12 @@ namespace {
|
||||
ServiceRequest::ParameterCollection pc = sr1.parameters();
|
||||
EXPECT_TRUE(pc.at("km") == "vm");
|
||||
EXPECT_TRUE(pc.at("kn") == "vn");
|
||||
|
||||
EXPECT_TRUE(sr1.connectTimeout() == kInvalidTimeout);
|
||||
EXPECT_TRUE(sr1.readTimeout() == kInvalidTimeout);
|
||||
sr1.setConnectTimeout(1234);
|
||||
sr1.setReadTimeout(22233);
|
||||
EXPECT_TRUE(sr1.connectTimeout() == 1234);
|
||||
EXPECT_TRUE(sr1.readTimeout() == 22233);
|
||||
}
|
||||
}
|
||||
|
||||
277
test/core/timeout_ut.cc
Normal file
277
test/core/timeout_ut.cc
Normal file
@@ -0,0 +1,277 @@
|
||||
|
||||
#include <iostream>
|
||||
#include <stdio.h>
|
||||
#include "gtest/gtest.h"
|
||||
#include "../../core/src/Utils.h"
|
||||
#include "alibabacloud/core/Config.h"
|
||||
#include "alibabacloud/core/AlibabaCloud.h"
|
||||
#include "alibabacloud/core/CommonClient.h"
|
||||
#include "alibabacloud/core/CommonResponse.h"
|
||||
#include "alibabacloud/core/CommonRequest.h"
|
||||
#include "alibabacloud/core/SimpleCredentialsProvider.h"
|
||||
|
||||
|
||||
#include "alibabacloud/core/RoaServiceClient.h"
|
||||
#include "alibabacloud/core/RpcServiceClient.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace AlibabaCloud;
|
||||
|
||||
const std::string unreachableDomain = "192.168.111.111";
|
||||
const std::string timeoutErrorCode = "OperationTimeoutError";
|
||||
|
||||
const std::string defaultErrorMessage =
|
||||
"Timeout (connectTimeout: 5000ms, readTimeout: 10000ms) when connect or read data: GET http://192.168.111.111/";
|
||||
|
||||
long kClientConnectTimeout = 12;
|
||||
long kClientReadTimeout = 234;
|
||||
const std::string clientErrorMessage =
|
||||
"Timeout (connectTimeout: 12ms, readTimeout: 234ms) when connect or read data: GET http://192.168.111.111/";
|
||||
|
||||
long kRequestConnectTimeout = 33;
|
||||
long kRequestReadTimeout = 724;
|
||||
const std::string requestErrorMessage =
|
||||
"Timeout (connectTimeout: 33ms, readTimeout: 724ms) when connect or read data: GET http://192.168.111.111/";
|
||||
|
||||
TEST(timeout, DefaultCommonClientROA) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
CommonClient client("key", "secret", configuration);
|
||||
CommonRequest request(CommonRequest::RoaPattern);
|
||||
request.setScheme("http");
|
||||
request.setDomain(unreachableDomain);
|
||||
auto out = client.commonResponse(request);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage() == defaultErrorMessage);
|
||||
}
|
||||
|
||||
TEST(timeout, DefaultCommonClientRPC) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
CommonClient client("key", "secret", configuration);
|
||||
CommonRequest request(CommonRequest::RpcPattern);
|
||||
request.setScheme("http");
|
||||
request.setDomain(unreachableDomain);
|
||||
auto out = client.commonResponse(request);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(defaultErrorMessage) == 0);
|
||||
}
|
||||
|
||||
|
||||
TEST(timeout, clientCommonClientROA) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(kClientConnectTimeout);
|
||||
configuration.setReadTimeout(kClientReadTimeout);
|
||||
CommonClient client("key", "secret", configuration);
|
||||
|
||||
CommonRequest request(CommonRequest::RoaPattern);
|
||||
request.setScheme("http");
|
||||
request.setDomain(unreachableDomain);
|
||||
auto out = client.commonResponse(request);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage() == clientErrorMessage);
|
||||
}
|
||||
|
||||
TEST(timeout, clientCommonClientRPC) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(kClientConnectTimeout);
|
||||
configuration.setReadTimeout(kClientReadTimeout);
|
||||
CommonClient client("key", "secret", configuration);
|
||||
|
||||
CommonRequest request(CommonRequest::RpcPattern);
|
||||
request.setScheme("http");
|
||||
request.setDomain(unreachableDomain);
|
||||
auto out = client.commonResponse(request);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(clientErrorMessage) == 0);
|
||||
}
|
||||
|
||||
TEST(timeout, requestCommonClientROA) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
CommonClient client("key", "secret", configuration);
|
||||
|
||||
CommonRequest request(CommonRequest::RoaPattern);
|
||||
request.setScheme("http");
|
||||
request.setDomain(unreachableDomain);
|
||||
request.setConnectTimeout(kRequestConnectTimeout);
|
||||
request.setReadTimeout(kRequestReadTimeout);
|
||||
auto out = client.commonResponse(request);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage() == requestErrorMessage);
|
||||
}
|
||||
|
||||
TEST(timeout, requestCommonClientRPC) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
CommonClient client("key", "secret", configuration);
|
||||
|
||||
CommonRequest request(CommonRequest::RpcPattern);
|
||||
request.setScheme("http");
|
||||
request.setDomain(unreachableDomain);
|
||||
request.setConnectTimeout(kRequestConnectTimeout);
|
||||
request.setReadTimeout(kRequestReadTimeout);
|
||||
auto out = client.commonResponse(request);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
|
||||
}
|
||||
|
||||
TEST(timeout, clientRequestCommonClientROA) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(kClientConnectTimeout);
|
||||
configuration.setReadTimeout(kClientReadTimeout);
|
||||
CommonClient client("key", "secret", configuration);
|
||||
|
||||
CommonRequest request(CommonRequest::RoaPattern);
|
||||
request.setScheme("http");
|
||||
request.setDomain(unreachableDomain);
|
||||
request.setConnectTimeout(kRequestConnectTimeout);
|
||||
request.setReadTimeout(kRequestReadTimeout);
|
||||
auto out = client.commonResponse(request);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage() == requestErrorMessage);
|
||||
}
|
||||
|
||||
TEST(timeout, clientRequestCommonClientRPC) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(kClientConnectTimeout);
|
||||
configuration.setReadTimeout(kClientReadTimeout);
|
||||
CommonClient client("key", "secret", configuration);
|
||||
|
||||
CommonRequest request(CommonRequest::RpcPattern);
|
||||
request.setConnectTimeout(kRequestConnectTimeout);
|
||||
request.setReadTimeout(kRequestReadTimeout);
|
||||
|
||||
request.setScheme("http");
|
||||
request.setDomain(unreachableDomain);
|
||||
auto out = client.commonResponse(request);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
|
||||
}
|
||||
|
||||
class TestRoaClient : public RoaServiceClient {
|
||||
public:
|
||||
TestRoaClient(const std::string & servicename, const std::shared_ptr<CredentialsProvider> &credentialsProvider,
|
||||
const ClientConfiguration &configuration,
|
||||
const std::shared_ptr<Signer> &signer = std::make_shared<HmacSha1Signer>()):
|
||||
RoaServiceClient(servicename, credentialsProvider, configuration, signer)
|
||||
{}
|
||||
|
||||
JsonOutcome makeRequest(const std::string &endpoint, const RoaServiceRequest &msg, HttpRequest::Method method = HttpRequest::Method::Get)const {
|
||||
return RoaServiceClient::makeRequest(endpoint, msg, method);
|
||||
}
|
||||
};
|
||||
|
||||
TEST(timeout, roaClientDefault) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
const Credentials credentials("key", "secret");
|
||||
TestRoaClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
|
||||
RoaServiceRequest request("product", "version");
|
||||
request.setScheme("http");
|
||||
auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(defaultErrorMessage) == 0);
|
||||
}
|
||||
|
||||
TEST(timeout, roaClientclient) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(kClientConnectTimeout);
|
||||
configuration.setReadTimeout(kClientReadTimeout);
|
||||
const Credentials credentials("key", "secret");
|
||||
TestRoaClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
|
||||
RoaServiceRequest request("product", "version");
|
||||
request.setScheme("http");
|
||||
auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(clientErrorMessage) == 0);
|
||||
}
|
||||
|
||||
TEST(timeout, roaClientrequest) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
const Credentials credentials("key", "secret");
|
||||
TestRoaClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
|
||||
RoaServiceRequest request("product", "version");
|
||||
request.setScheme("http");
|
||||
request.setConnectTimeout(kRequestConnectTimeout);
|
||||
request.setReadTimeout(kRequestReadTimeout);
|
||||
auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
|
||||
}
|
||||
|
||||
TEST(timeout, roaClientclientrequest) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(kClientConnectTimeout);
|
||||
configuration.setReadTimeout(kClientReadTimeout);
|
||||
const Credentials credentials("key", "secret");
|
||||
TestRoaClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
|
||||
RoaServiceRequest request("product", "version");
|
||||
request.setScheme("http");
|
||||
request.setConnectTimeout(kRequestConnectTimeout);
|
||||
request.setReadTimeout(kRequestReadTimeout);
|
||||
auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
|
||||
}
|
||||
|
||||
|
||||
class TestRpcClient : public RpcServiceClient {
|
||||
public:
|
||||
TestRpcClient(const std::string & servicename, const std::shared_ptr<CredentialsProvider> &credentialsProvider,
|
||||
const ClientConfiguration &configuration,
|
||||
const std::shared_ptr<Signer> &signer = std::make_shared<HmacSha1Signer>()):
|
||||
RpcServiceClient(servicename, credentialsProvider, configuration, signer)
|
||||
{}
|
||||
|
||||
JsonOutcome makeRequest(const std::string &endpoint, const RpcServiceRequest &msg, HttpRequest::Method method = HttpRequest::Method::Get)const {
|
||||
return RpcServiceClient::makeRequest(endpoint, msg, method);
|
||||
}
|
||||
};
|
||||
|
||||
TEST(timeout, rpcClientDefault) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
const Credentials credentials("key", "secret");
|
||||
TestRpcClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
|
||||
RpcServiceRequest request("product", "version", "aciton");
|
||||
request.setScheme("http");
|
||||
auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(defaultErrorMessage) == 0);
|
||||
}
|
||||
|
||||
TEST(timeout, rpcClientclient) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(kClientConnectTimeout);
|
||||
configuration.setReadTimeout(kClientReadTimeout);
|
||||
const Credentials credentials("key", "secret");
|
||||
TestRpcClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
|
||||
RpcServiceRequest request("product", "version", "aciton");
|
||||
request.setScheme("http");
|
||||
auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(clientErrorMessage) == 0);
|
||||
}
|
||||
|
||||
TEST(timeout, rpcClientrequest) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
const Credentials credentials("key", "secret");
|
||||
TestRpcClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
|
||||
RpcServiceRequest request("product", "version", "aciton");
|
||||
request.setScheme("http");
|
||||
request.setConnectTimeout(kRequestConnectTimeout);
|
||||
request.setReadTimeout(kRequestReadTimeout);
|
||||
auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
|
||||
}
|
||||
|
||||
TEST(timeout, rpcClientclientrequest) {
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(kClientConnectTimeout);
|
||||
configuration.setReadTimeout(kClientReadTimeout);
|
||||
const Credentials credentials("key", "secret");
|
||||
TestRpcClient client("any-service", std::make_shared<SimpleCredentialsProvider>(credentials), configuration);
|
||||
RpcServiceRequest request("product", "version", "aciton");
|
||||
request.setScheme("http");
|
||||
request.setConnectTimeout(kRequestConnectTimeout);
|
||||
request.setReadTimeout(kRequestReadTimeout);
|
||||
auto out = client.makeRequest(unreachableDomain, request, HttpRequest::Method::Get);
|
||||
EXPECT_TRUE(out.error().errorCode() == timeoutErrorCode);
|
||||
EXPECT_TRUE(out.error().errorMessage().find(requestErrorMessage) == 0);
|
||||
}
|
||||
26
test/function_test/cs/CMakeLists.txt
Normal file
26
test/function_test/cs/CMakeLists.txt
Normal file
@@ -0,0 +1,26 @@
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
project(demo)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
if(CMAKE_HOST_WIN32)
|
||||
include_directories("C:\\Program Files (x86)\\alibabacloud-sdk\\include")
|
||||
link_directories("C:\\Program Files (x86)\\alibabacloud-sdk\\lib")
|
||||
endif()
|
||||
|
||||
# note ft_build is the dir you build sdk
|
||||
|
||||
include_directories("../../../core/include/")
|
||||
include_directories("../../../cs/include/")
|
||||
link_directories(${CMAKE_SOURCE_DIR}/ft_build/lib)
|
||||
|
||||
|
||||
add_executable(cs_ft cs_describetemplates_ut.cc)
|
||||
target_link_libraries(cs_ft alibabacloud-sdk-core alibabacloud-sdk-cs)
|
||||
|
||||
target_link_libraries(cs_ft core gtest gmock_main)
|
||||
|
||||
set_target_properties(cs_ft
|
||||
PROPERTIES
|
||||
OUTPUT_NAME ${TARGET_OUTPUT_NAME_PREFIX}cs_ft
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
|
||||
add_test(NAME cs_ft COMMAND cs_ft)
|
||||
88
test/function_test/cs/cs_describetemplates_ut.cc
Normal file
88
test/function_test/cs/cs_describetemplates_ut.cc
Normal file
@@ -0,0 +1,88 @@
|
||||
#include <iostream>
|
||||
#include "../utils.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "alibabacloud/core/AlibabaCloud.h"
|
||||
#include "alibabacloud/cs/CSClient.h"
|
||||
#include "alibabacloud/cs/model/CreateTemplateRequest.h"
|
||||
// #include "alibabacloud/core/CommonClient.h"
|
||||
// #include "alibabacloud/core/CommonRequest.h"
|
||||
#include "alibabacloud/core/sts/StsClient.h"
|
||||
#include "alibabacloud/core/StsAssumeRoleCredentialsProvider.h"
|
||||
|
||||
|
||||
using namespace std;
|
||||
using namespace AlibabaCloud;
|
||||
using namespace AlibabaCloud::CS;
|
||||
|
||||
namespace {
|
||||
TEST(cs, describeTemplatesError) {
|
||||
utUtils utils;
|
||||
string key = utils.get_env("ENV_AccessKeyId");
|
||||
string secret = utils.get_env("ENV_AccessKeySecret");
|
||||
|
||||
InitializeSdk();
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
CSClient client(key, secret, configuration);
|
||||
Model::DescribeTemplatesRequest request;
|
||||
auto outcome = client.describeTemplates(request);
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "InvalidAction.NotFound");
|
||||
EXPECT_TRUE(outcome.error().errorMessage() == "Specified api is not found, please check your url and method.");
|
||||
ShutdownSdk();
|
||||
}
|
||||
|
||||
|
||||
TEST(cs, describeTemplatesClientTimeout) {
|
||||
utUtils utils;
|
||||
string key = utils.get_env("ENV_AccessKeyId");
|
||||
string secret = utils.get_env("ENV_AccessKeySecret");
|
||||
|
||||
InitializeSdk();
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(1);
|
||||
configuration.setReadTimeout(123);
|
||||
|
||||
CSClient client(key, secret, configuration);
|
||||
Model::DescribeTemplatesRequest request;
|
||||
auto outcome = client.describeTemplates(request);
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 1ms, readTimeout: 123ms) when connect or read") == 0);
|
||||
ShutdownSdk();
|
||||
}
|
||||
|
||||
TEST(cs, describeTemplatesRequstTimeout) {
|
||||
utUtils utils;
|
||||
string key = utils.get_env("ENV_AccessKeyId");
|
||||
string secret = utils.get_env("ENV_AccessKeySecret");
|
||||
|
||||
InitializeSdk();
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
CSClient client(key, secret, configuration);
|
||||
Model::DescribeTemplatesRequest request;
|
||||
request.setConnectTimeout(11);
|
||||
request.setReadTimeout(213);
|
||||
auto outcome = client.describeTemplates(request);
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 11ms, readTimeout: 213ms) when connect or read") == 0);
|
||||
ShutdownSdk();
|
||||
}
|
||||
|
||||
TEST(cs, describeTemplatesClientRequstTimeout) {
|
||||
utUtils utils;
|
||||
string key = utils.get_env("ENV_AccessKeyId");
|
||||
string secret = utils.get_env("ENV_AccessKeySecret");
|
||||
|
||||
InitializeSdk();
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(1);
|
||||
configuration.setReadTimeout(123);
|
||||
|
||||
CSClient client(key, secret, configuration);
|
||||
Model::DescribeTemplatesRequest request;
|
||||
request.setConnectTimeout(11);
|
||||
request.setReadTimeout(213);
|
||||
auto outcome = client.describeTemplates(request);
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 11ms, readTimeout: 213ms) when connect or read") == 0);
|
||||
ShutdownSdk();
|
||||
}
|
||||
}
|
||||
@@ -47,8 +47,8 @@ namespace {
|
||||
|
||||
auto outcome = client.deleteInstance(delReq);
|
||||
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "InvalidInstanceId.NotFound");
|
||||
EXPECT_TRUE(outcome.error().errorMessage() == "The specified InstanceId does not exist.");
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "InvalidParameter");
|
||||
EXPECT_TRUE(outcome.error().errorMessage() == "The specified parameter \"Force\" is not valid.");
|
||||
ShutdownSdk();
|
||||
}
|
||||
|
||||
@@ -111,4 +111,63 @@ namespace {
|
||||
EXPECT_TRUE(outcome.result().payload().find("\"Instances\":") != string::npos);
|
||||
ShutdownSdk();
|
||||
}
|
||||
|
||||
|
||||
TEST(ecs, describeInstancesClientTimeout) {
|
||||
utUtils utils;
|
||||
string key = utils.get_env("ENV_AccessKeyId");
|
||||
string secret = utils.get_env("ENV_AccessKeySecret");
|
||||
|
||||
InitializeSdk();
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(1);
|
||||
configuration.setReadTimeout(123);
|
||||
EcsClient client(key, secret, configuration);
|
||||
Model::DescribeInstancesRequest request;
|
||||
request.setPageSize(10);
|
||||
|
||||
auto outcome = client.describeInstances(request);
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 1ms, readTimeout: 123ms) when connect or read") == 0);
|
||||
ShutdownSdk();
|
||||
}
|
||||
|
||||
TEST(ecs, describeInstancesRequestTimeout) {
|
||||
utUtils utils;
|
||||
string key = utils.get_env("ENV_AccessKeyId");
|
||||
string secret = utils.get_env("ENV_AccessKeySecret");
|
||||
|
||||
InitializeSdk();
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
EcsClient client(key, secret, configuration);
|
||||
Model::DescribeInstancesRequest request;
|
||||
request.setPageSize(10);
|
||||
request.setConnectTimeout(11);
|
||||
request.setReadTimeout(213);
|
||||
auto outcome = client.describeInstances(request);
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 11ms, readTimeout: 213ms) when connect or read") == 0);
|
||||
ShutdownSdk();
|
||||
}
|
||||
|
||||
|
||||
TEST(ecs, describeInstancesClientRequestTimeout) {
|
||||
utUtils utils;
|
||||
string key = utils.get_env("ENV_AccessKeyId");
|
||||
string secret = utils.get_env("ENV_AccessKeySecret");
|
||||
|
||||
InitializeSdk();
|
||||
ClientConfiguration configuration("cn-hangzhou");
|
||||
configuration.setConnectTimeout(1);
|
||||
configuration.setReadTimeout(123);
|
||||
EcsClient client(key, secret, configuration);
|
||||
Model::DescribeInstancesRequest request;
|
||||
request.setPageSize(10);
|
||||
request.setConnectTimeout(11);
|
||||
request.setReadTimeout(213);
|
||||
auto outcome = client.describeInstances(request);
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 11ms, readTimeout: 213ms) when connect or read") == 0);
|
||||
ShutdownSdk();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ namespace {
|
||||
request.setContent(data, strlen(data));
|
||||
request.setHeaderParameter("Content-Type", "application/json;chrset=utf-8");
|
||||
request.setVersion("2018-04-08");
|
||||
|
||||
auto outcome = client.commonResponse(request);
|
||||
EXPECT_TRUE(outcome.error().errorCode().empty());
|
||||
const std::string expected = "{\"data\":[{\"id\":0,\"word\":\"Iphone\"},{\"id\":1,\"word\":\" \"},{\"id\":2,\"word\":\"is\"},{\"id\":3,\"word\":\" \"},{\"id\":4,\"word\":\"a\"},{\"id\":5,\"word\":\" \"},{\"id\":6,\"word\":\"good\"},{\"id\":7,\"word\":\" \"},{\"id\":8,\"word\":\"choice\"},{\"id\":9,\"word\":\" \"},{\"id\":10,\"word\":\"专用\"},{\"id\":11,\"word\":\"数据线\"}]}";
|
||||
@@ -56,10 +55,94 @@ namespace {
|
||||
request.setContent(data, strlen(data));
|
||||
request.setHeaderParameter("Content-Type", "application/json;chrset=utf-8");
|
||||
request.setVersion("2018-04-08");
|
||||
|
||||
auto outcome = client.commonResponse(request);
|
||||
const string error = "{\"errorCode\":10007,\"errorMsg\":\"body json format invalid\"}";
|
||||
EXPECT_TRUE(outcome.error().detail() == error);
|
||||
AlibabaCloud::ShutdownSdk();
|
||||
}
|
||||
|
||||
TEST(nlp, wordsegmentClientTimeout) {
|
||||
utUtils utils;
|
||||
string key = utils.get_env("ENV_AccessKeyId");
|
||||
string secret = utils.get_env("ENV_AccessKeySecret");
|
||||
|
||||
AlibabaCloud::InitializeSdk();
|
||||
ClientConfiguration configuration("cn-shanghai");
|
||||
configuration.setConnectTimeout(1);
|
||||
configuration.setReadTimeout(123);
|
||||
CommonClient client(key, secret, configuration);
|
||||
// create request and assign parameters
|
||||
CommonRequest request(CommonRequest::RoaPattern);
|
||||
request.setScheme("http");
|
||||
request.setDomain("nlp.cn-shanghai.aliyuncs.com");
|
||||
request.setResourcePath("/nlp/api/wordsegment/general");
|
||||
request.setHttpMethod(HttpRequest::Post);
|
||||
const char * data = "{\"lang\":\"ZH\",\"text\":\"Iphone is a good choice 专用数据线\"}";
|
||||
request.setContent(data, strlen(data));
|
||||
request.setHeaderParameter("Content-Type", "application/json;chrset=utf-8");
|
||||
request.setVersion("2018-04-08");
|
||||
|
||||
auto outcome = client.commonResponse(request);
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 1ms, readTimeout: 123ms) when connect or read") == 0);
|
||||
AlibabaCloud::ShutdownSdk();
|
||||
}
|
||||
|
||||
|
||||
TEST(nlp, wordsegmentRequestTimeout) {
|
||||
utUtils utils;
|
||||
string key = utils.get_env("ENV_AccessKeyId");
|
||||
string secret = utils.get_env("ENV_AccessKeySecret");
|
||||
|
||||
AlibabaCloud::InitializeSdk();
|
||||
ClientConfiguration configuration("cn-shanghai");
|
||||
|
||||
CommonClient client(key, secret, configuration);
|
||||
// create request and assign parameters
|
||||
CommonRequest request(CommonRequest::RoaPattern);
|
||||
request.setScheme("http");
|
||||
request.setDomain("nlp.cn-shanghai.aliyuncs.com");
|
||||
request.setConnectTimeout(11);
|
||||
request.setReadTimeout(213);
|
||||
request.setResourcePath("/nlp/api/wordsegment/general");
|
||||
request.setHttpMethod(HttpRequest::Post);
|
||||
const char * data = "{\"lang\":\"ZH\",\"text\":\"Iphone is a good choice 专用数据线\"}";
|
||||
request.setContent(data, strlen(data));
|
||||
request.setHeaderParameter("Content-Type", "application/json;chrset=utf-8");
|
||||
request.setVersion("2018-04-08");
|
||||
|
||||
auto outcome = client.commonResponse(request);
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 11ms, readTimeout: 213ms) when connect or read") == 0);
|
||||
AlibabaCloud::ShutdownSdk();
|
||||
}
|
||||
|
||||
TEST(nlp, wordsegmentClientRequestTimeout) {
|
||||
utUtils utils;
|
||||
string key = utils.get_env("ENV_AccessKeyId");
|
||||
string secret = utils.get_env("ENV_AccessKeySecret");
|
||||
|
||||
AlibabaCloud::InitializeSdk();
|
||||
ClientConfiguration configuration("cn-shanghai");
|
||||
configuration.setConnectTimeout(1);
|
||||
configuration.setReadTimeout(123);
|
||||
CommonClient client(key, secret, configuration);
|
||||
// create request and assign parameters
|
||||
CommonRequest request(CommonRequest::RoaPattern);
|
||||
request.setScheme("http");
|
||||
request.setDomain("nlp.cn-shanghai.aliyuncs.com");
|
||||
request.setConnectTimeout(11);
|
||||
request.setReadTimeout(213);
|
||||
request.setResourcePath("/nlp/api/wordsegment/general");
|
||||
request.setHttpMethod(HttpRequest::Post);
|
||||
const char * data = "{\"lang\":\"ZH\",\"text\":\"Iphone is a good choice 专用数据线\"}";
|
||||
request.setContent(data, strlen(data));
|
||||
request.setHeaderParameter("Content-Type", "application/json;chrset=utf-8");
|
||||
request.setVersion("2018-04-08");
|
||||
|
||||
auto outcome = client.commonResponse(request);
|
||||
EXPECT_TRUE(outcome.error().errorCode() == "OperationTimeoutError");
|
||||
EXPECT_TRUE(outcome.error().errorMessage().find("Timeout (connectTimeout: 11ms, readTimeout: 213ms) when connect or read") == 0);
|
||||
AlibabaCloud::ShutdownSdk();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,13 @@ app.use(bodyParser.json({ type: 'application/*+json' }))
|
||||
app.get('*', function (req, res) {
|
||||
console.log('GET req.params: ', req.params);
|
||||
console.log('GET req.query: ', req.query);
|
||||
res.send(JSON.stringify(req.query));
|
||||
if (req.params[0] === '/readTimeoutTest') {
|
||||
setTimeout(function() {
|
||||
res.send("something");
|
||||
}, Number(req.query.timeout) + 100);
|
||||
} else {
|
||||
res.send(JSON.stringify(req.query));
|
||||
}
|
||||
});
|
||||
|
||||
app.post('*', function (req, res) {
|
||||
|
||||
Reference in New Issue
Block a user