timeout support when create client or make request

This commit is contained in:
zhangzifa
2019-03-13 14:51:01 +08:00
committed by Jackson Tian
parent 8c9353a007
commit 619a7827de
29 changed files with 1005 additions and 97 deletions

View 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)

View 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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}