提交 f8b19dea 编写于 作者: wmmhello's avatar wmmhello

[TD-5992] modify return msg

上级 04a0fb05
......@@ -439,30 +439,49 @@ int taos_options(TSDB_OPTION option, const void *arg, ...) {
}
#include "cJSON.h"
static int taos_set_config_imp(const char *config){
static setConfRet taos_set_config_imp(const char *config){
setConfRet ret = {0};
static bool setConfFlag = false;
if (setConfFlag) {
return 0;
ret.retCode = -5;
strcpy(ret.retMsg, "configuration can only set once");
return ret;
}
taosInitGlobalCfg();
cJSON *root = cJSON_Parse(config);
if (root == NULL || !cJSON_IsObject(root) || cJSON_GetArraySize(root) == 0) {
return -1;
if (root == NULL){
ret.retCode = -4;
strcpy(ret.retMsg, "parse json error");
return ret;
}
if(!cJSON_IsObject(root) || cJSON_GetArraySize(root) == 0) {
ret.retCode = -3;
strcpy(ret.retMsg, "json content is invalid, must be not empty object");
return ret;
}
int ret = 0;
int size = cJSON_GetArraySize(root);
for(int i = 0; i < size; i++){
cJSON *item = cJSON_GetArrayItem(root, i);
if(item && !taosReadConfigOption(item->string, item->valuestring, NULL, NULL, TAOS_CFG_CSTATUS_OPTION, TSDB_CFG_CTYPE_B_CLIENT)){
ret = -2;
if(!item) {
ret.retCode = -2;
strcpy(ret.retMsg, "inner error");
return ret;
}
if(!taosReadConfigOption(item->string, item->valuestring, NULL, NULL, TAOS_CFG_CSTATUS_OPTION, TSDB_CFG_CTYPE_B_CLIENT)){
ret.retCode = -1;
if (strlen(ret.retMsg) == 0){
sprintf(ret.retMsg, "part error|%s", item->string);
}else{
sprintf(ret.retMsg, "%s|%s", ret.retMsg, item->string);
}
}
}
setConfFlag = true;
return ret;
}
int taos_set_config(const char *config){
setConfRet taos_set_config(const char *config){
static int32_t lock = 0;
for (int i = 1; atomic_val_compare_exchange_32(&lock, 0, 1) != 0; ++i) {
......@@ -471,7 +490,7 @@ int taos_set_config(const char *config){
sched_yield();
}
}
int ret = taos_set_config_imp(config);
setConfRet ret = taos_set_config_imp(config);
atomic_store_32(&lock, 0);
return ret;
}
......@@ -8,10 +8,14 @@
/* test set config function */
TEST(testCase, set_config_test1) {
const char *config = "{\"debugFlag\":\"131\"}";
taos_set_config(config);
setConfRet ret = taos_set_config(config);
ASSERT_EQ(ret.retCode, 0);
printf("msg:%d->%s", ret.retCode, ret.retMsg);
const char *config2 = "{\"debugFlag\":\"199\"}";
taos_set_config(config2); // not take effect
ret = taos_set_config(config2); // not take effect
ASSERT_EQ(ret.retCode, -5)
printf("msg:%d->%s", ret.retCode, ret.retMsg);
bool readResult = taosReadGlobalCfg(); // load file config, debugFlag not take effect
ASSERT_TRUE(readResult);
......@@ -37,3 +41,24 @@ TEST(testCase, set_config_test2) {
int32_t result = *(int32_t*)cfg->ptr;
ASSERT_NE(result, 10); // numOfCommitThreads not type of TSDB_CFG_CTYPE_B_CLIENT
}
TEST(testCase, set_config_test3) {
const char *config = "{\"numOfCoitThreads\":\"10\", \"esdfa\":\"10\"}";
setConfRet ret = taos_set_config(config);
ASSERT_EQ(ret.retCode, -1);
printf("msg:%d->%s", ret.retCode, ret.retMsg);
}
TEST(testCase, set_config_test4) {
const char *config = "{null}";
setConfRet ret = taos_set_config(config);
ASSERT_EQ(ret.retCode, -4);
printf("msg:%d->%s", ret.retCode, ret.retMsg);
}
TEST(testCase, set_config_test5) {
const char *config = "ddd";
setConfRet ret = taos_set_config(config);
ASSERT_EQ(ret.retCode, -3);
printf("msg:%d->%s", ret.retCode, ret.retMsg);
}
......@@ -62,6 +62,11 @@ typedef struct taosField {
int16_t bytes;
} TAOS_FIELD;
typedef struct setConfRet {
char retMsg[1024];
int8_t retCode;
} setConfRet;
#ifdef _TD_GO_DLL_
#define DLL_EXPORT __declspec(dllexport)
#else
......@@ -71,7 +76,7 @@ typedef struct taosField {
DLL_EXPORT int taos_init();
DLL_EXPORT void taos_cleanup(void);
DLL_EXPORT int taos_options(TSDB_OPTION option, const void *arg, ...);
DLL_EXPORT int taos_set_config(const char *config);
DLL_EXPORT setConfRet taos_set_config(const char *config);
DLL_EXPORT TAOS *taos_connect(const char *ip, const char *user, const char *pass, const char *db, uint16_t port);
DLL_EXPORT TAOS *taos_connect_auth(const char *ip, const char *user, const char *auth, const char *db, uint16_t port);
DLL_EXPORT void taos_close(TAOS *taos);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册