cfgtest
This commit is contained in:
parent
863ad191d5
commit
48a2d415d1
|
@ -66,7 +66,7 @@ typedef struct SConfigItem {
|
||||||
ECfgType stype;
|
ECfgType stype;
|
||||||
ECfgUnitType utype;
|
ECfgUnitType utype;
|
||||||
ECfgDataType dtype;
|
ECfgDataType dtype;
|
||||||
const char *name;
|
char *name;
|
||||||
union {
|
union {
|
||||||
bool boolVal;
|
bool boolVal;
|
||||||
uint8_t uint8Val;
|
uint8_t uint8Val;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
aux_source_directory(src CONFIG_SRC)
|
aux_source_directory(src CONFIG_SRC)
|
||||||
add_library(config ${CONFIG_SRC})
|
add_library(config STATIC ${CONFIG_SRC})
|
||||||
target_include_directories(
|
target_include_directories(
|
||||||
config
|
config
|
||||||
PUBLIC "${CMAKE_SOURCE_DIR}/include/libs/config"
|
PUBLIC "${CMAKE_SOURCE_DIR}/include/libs/config"
|
||||||
|
|
|
@ -18,6 +18,18 @@
|
||||||
|
|
||||||
SConfig *cfgInit() {
|
SConfig *cfgInit() {
|
||||||
SConfig *pConfig = calloc(1, sizeof(SConfig));
|
SConfig *pConfig = calloc(1, sizeof(SConfig));
|
||||||
|
if (pConfig == NULL) {
|
||||||
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
pConfig->hash = taosHashInit(64, MurmurHash3_32, false, HASH_NO_LOCK);
|
||||||
|
if (pConfig->hash == NULL) {
|
||||||
|
free(pConfig);
|
||||||
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return pConfig;
|
return pConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +74,19 @@ static int32_t cfgAddItem(SConfig *pConfig, SConfigItem *pItem, const char *name
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosHashPut(pConfig->hash, name, strlen(name) + 1, pItem, sizeof(SConfigItem)) != 0) {
|
if (taosHashPut(pConfig->hash, name, strlen(name) + 1, pItem, sizeof(SConfigItem)) != 0) {
|
||||||
|
if (pItem->dtype == CFG_DTYPE_STRING) {
|
||||||
|
free(pItem->strVal);
|
||||||
|
} else if (pItem->dtype == CFG_DTYPE_FQDN) {
|
||||||
|
free(pItem->fqdnVal);
|
||||||
|
} else if (pItem->dtype == CFG_DTYPE_IPSTR) {
|
||||||
|
free(pItem->ipstrVal);
|
||||||
|
} else if (pItem->dtype == CFG_DTYPE_DIR) {
|
||||||
|
free(pItem->dirVal);
|
||||||
|
} else if (pItem->dtype == CFG_DTYPE_FILE) {
|
||||||
|
free(pItem->fileVal);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
free(pItem->name);
|
||||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,9 +21,207 @@ class CfgTest : public ::testing::Test {
|
||||||
void SetUp() override {}
|
void SetUp() override {}
|
||||||
void TearDown() override {}
|
void TearDown() override {}
|
||||||
|
|
||||||
|
void InitializeConfig(SConfig *pConfig);
|
||||||
|
|
||||||
static const char *pConfig;
|
static const char *pConfig;
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *CfgTest::pConfig;
|
const char *CfgTest::pConfig;
|
||||||
|
|
||||||
TEST_F(CfgTest, 01_Taos_File) {}
|
TEST_F(CfgTest, 01_Basic) {
|
||||||
|
SConfig *pConfig = cfgInit();
|
||||||
|
cfgAddBool(pConfig, "test_bool", 0, CFG_UTYPE_NONE);
|
||||||
|
cfgAddInt8(pConfig, "test_int8", 1, CFG_UTYPE_GB);
|
||||||
|
cfgAddUInt8(pConfig, "test_uint8", 2, CFG_UTYPE_MB);
|
||||||
|
cfgAddInt16(pConfig, "test_int16", 3, CFG_UTYPE_BYTE);
|
||||||
|
cfgAddUInt16(pConfig, "test_uint16", 4, CFG_UTYPE_SECOND);
|
||||||
|
cfgAddInt32(pConfig, "test_int32", 5, CFG_UTYPE_MS);
|
||||||
|
cfgAddUInt32(pConfig, "test_uint32", 6, CFG_UTYPE_PERCENT);
|
||||||
|
cfgAddInt64(pConfig, "test_int64", 7, CFG_UTYPE_NONE);
|
||||||
|
cfgAddUInt64(pConfig, "test_uint64", 8, CFG_UTYPE_NONE);
|
||||||
|
cfgAddFloat(pConfig, "test_float", 9, CFG_UTYPE_NONE);
|
||||||
|
cfgAddDouble(pConfig, "test_double", 10, CFG_UTYPE_NONE);
|
||||||
|
cfgAddString(pConfig, "test_string", "11", CFG_UTYPE_NONE);
|
||||||
|
cfgAddFqdn(pConfig, "test_fqdn", "localhost", CFG_UTYPE_NONE);
|
||||||
|
cfgAddIpStr(pConfig, "test_ipstr", "192.168.0.1", CFG_UTYPE_NONE);
|
||||||
|
cfgAddDir(pConfig, "test_dir", "/tmp", CFG_UTYPE_NONE);
|
||||||
|
cfgAddFile(pConfig, "test_file", "/tmp/file1", CFG_UTYPE_NONE);
|
||||||
|
|
||||||
|
EXPECT_EQ(cfgGetSize(pConfig), 16);
|
||||||
|
|
||||||
|
int32_t size = 0;
|
||||||
|
SConfigItem *pItem = cfgIterate(pConfig, NULL);
|
||||||
|
while (pItem != NULL) {
|
||||||
|
pItem = cfgIterate(pConfig, pItem);
|
||||||
|
switch (pItem->dtype) {
|
||||||
|
case CFG_DTYPE_BOOL:
|
||||||
|
printf("cfg:%s, value:%d\n", pItem->name, pItem->boolVal);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_INT8:
|
||||||
|
printf("cfg:%s, value:%d\n", pItem->name, pItem->uint8Val);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_UINT8:
|
||||||
|
printf("cfg:%s, value:%d\n", pItem->name, pItem->int8Val);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_INT16:
|
||||||
|
printf("cfg:%s, value:%d\n", pItem->name, pItem->uint16Val);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_UINT16:
|
||||||
|
printf("cfg:%s, value:%d\n", pItem->name, pItem->int16Val);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_INT32:
|
||||||
|
printf("cfg:%s, value:%d\n", pItem->name, pItem->uint32Val);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_UINT32:
|
||||||
|
printf("cfg:%s, value:%d\n", pItem->name, pItem->int32Val);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_INT64:
|
||||||
|
printf("cfg:%s, value:%" PRIu64, pItem->name, pItem->uint64Val);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_UINT64:
|
||||||
|
printf("cfg:%s, value:%" PRId64, pItem->name, pItem->int64Val);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_FLOAT:
|
||||||
|
printf("cfg:%s, value:%f\n", pItem->name, pItem->floatVal);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_DOUBLE:
|
||||||
|
printf("cfg:%s, value:%f\n", pItem->name, pItem->doubleVal);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_STRING:
|
||||||
|
printf("cfg:%s, value:%s\n", pItem->name, pItem->strVal);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_FQDN:
|
||||||
|
printf("cfg:%s, value:%s\n", pItem->name, pItem->fqdnVal);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_IPSTR:
|
||||||
|
printf("cfg:%s, value:%s\n", pItem->name, pItem->ipstrVal);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_DIR:
|
||||||
|
printf("cfg:%s, value:%s\n", pItem->name, pItem->dirVal);
|
||||||
|
break;
|
||||||
|
CFG_DTYPE_FILE:
|
||||||
|
printf("cfg:%s, value:%s\n", pItem->name, pItem->fileVal);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
size++;
|
||||||
|
}
|
||||||
|
cfgCancelIterate(pConfig, pItem);
|
||||||
|
|
||||||
|
EXPECT_EQ(cfgGetSize(pConfig), 16);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_bool");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_NONE);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_BOOL);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_bool");
|
||||||
|
EXPECT_EQ(pItem->boolVal, 0);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_int8");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_GB);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_INT8);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_int8");
|
||||||
|
EXPECT_EQ(pItem->int8Val, 1);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_uint8");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_MB);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_UINT8);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_uint8");
|
||||||
|
EXPECT_EQ(pItem->uint8Val, 2);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_int16");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_BYTE);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_INT16);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_int16");
|
||||||
|
EXPECT_EQ(pItem->int16Val, 3);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_uint16");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_SECOND);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_UINT16);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_uint16");
|
||||||
|
EXPECT_EQ(pItem->uint16Val, 4);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_int32");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_MS);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_INT32);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_int32");
|
||||||
|
EXPECT_EQ(pItem->int32Val, 5);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_uint32");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_PERCENT);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_UINT32);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_uint32");
|
||||||
|
EXPECT_EQ(pItem->uint32Val, 6);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_int64");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_SECOND);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_UTYPE_NONE);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_int64");
|
||||||
|
EXPECT_EQ(pItem->int64Val, 7);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_uint64");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_NONE);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_UINT64);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_uint64");
|
||||||
|
EXPECT_EQ(pItem->uint64Val, 8);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_float");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_NONE);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_FLOAT);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_float");
|
||||||
|
EXPECT_EQ(pItem->floatVal, 9);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_double");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_NONE);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_DOUBLE);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_double");
|
||||||
|
EXPECT_EQ(pItem->doubleVal, 10);
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_string");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_NONE);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_STRING);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_string");
|
||||||
|
EXPECT_STREQ(pItem->strVal, "11");
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_fqdn");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_NONE);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_FQDN);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_fqdn");
|
||||||
|
EXPECT_STREQ(pItem->strVal, "localhost");
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_ipstr");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_NONE);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_IPSTR);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_ipstr");
|
||||||
|
EXPECT_STREQ(pItem->ipstrVal, "192.168.0.1");
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_dir");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_NONE);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_DIR);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_dir");
|
||||||
|
EXPECT_STREQ(pItem->dirVal, "/tmp");
|
||||||
|
|
||||||
|
pItem = cfgGetItem(pConfig, "test_file");
|
||||||
|
EXPECT_EQ(pItem->stype, CFG_TYPE_DEFAULT);
|
||||||
|
EXPECT_EQ(pItem->utype, CFG_UTYPE_NONE);
|
||||||
|
EXPECT_EQ(pItem->dtype, CFG_DTYPE_FILE);
|
||||||
|
EXPECT_STREQ(pItem->name, "test_file");
|
||||||
|
EXPECT_STREQ(pItem->fileVal, "/tmp/file1");
|
||||||
|
|
||||||
|
cfgCleanup(pConfig);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue