Fix read cfg from dnode err and add some cases.
This commit is contained in:
parent
bcabfa3382
commit
0d8d61f7ca
|
@ -1870,7 +1870,8 @@ _exit:
|
||||||
|
|
||||||
static int32_t taosCheckGlobalCfg() {
|
static int32_t taosCheckGlobalCfg() {
|
||||||
uint32_t ipv4 = 0;
|
uint32_t ipv4 = 0;
|
||||||
int32_t code = taosGetIpv4FromFqdn(tsLocalFqdn, &ipv4);
|
uInfo("start to check global tsLocalFqdn:%s, tsServerPort:%u", tsLocalFqdn, tsServerPort);
|
||||||
|
int32_t code = taosGetIpv4FromFqdn(tsLocalFqdn, &ipv4);
|
||||||
if (code) {
|
if (code) {
|
||||||
uError("failed to get ip from fqdn:%s since %s, dnode can not be initialized", tsLocalFqdn, tstrerror(code));
|
uError("failed to get ip from fqdn:%s since %s, dnode can not be initialized", tsLocalFqdn, tstrerror(code));
|
||||||
TAOS_RETURN(TSDB_CODE_RPC_FQDN_ERROR);
|
TAOS_RETURN(TSDB_CODE_RPC_FQDN_ERROR);
|
||||||
|
@ -1933,6 +1934,9 @@ int32_t cfgDeserialize(SArray *array, char *buf, bool isGlobal) {
|
||||||
if (pItem == NULL) {
|
if (pItem == NULL) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (strstr(item->name, "supportVnodes")) {
|
||||||
|
uDebug("supportVnodes:%d", pItem->valueint);
|
||||||
|
}
|
||||||
switch (item->dtype) {
|
switch (item->dtype) {
|
||||||
{
|
{
|
||||||
case CFG_DTYPE_NONE:
|
case CFG_DTYPE_NONE:
|
||||||
|
@ -1955,7 +1959,7 @@ int32_t cfgDeserialize(SArray *array, char *buf, bool isGlobal) {
|
||||||
case CFG_DTYPE_LOCALE:
|
case CFG_DTYPE_LOCALE:
|
||||||
case CFG_DTYPE_CHARSET:
|
case CFG_DTYPE_CHARSET:
|
||||||
case CFG_DTYPE_TIMEZONE:
|
case CFG_DTYPE_TIMEZONE:
|
||||||
tstrncpy(item->str, pItem->valuestring, strlen(pItem->valuestring));
|
item->str = taosStrdup(pItem->valuestring);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1969,10 +1973,10 @@ int32_t readCfgFile(const char *path, bool isGlobal) {
|
||||||
SArray *array = NULL;
|
SArray *array = NULL;
|
||||||
if (isGlobal) {
|
if (isGlobal) {
|
||||||
array = taosGetGlobalCfg(tsCfg);
|
array = taosGetGlobalCfg(tsCfg);
|
||||||
snprintf(filename, sizeof(filename), "%s%sconfig%sglobal.json", path, TD_DIRSEP, TD_DIRSEP);
|
snprintf(filename, sizeof(filename), "%s%sdnode%sconfig%sglobal.json", path, TD_DIRSEP, TD_DIRSEP, TD_DIRSEP);
|
||||||
} else {
|
} else {
|
||||||
array = taosGetLocalCfg(tsCfg);
|
array = taosGetLocalCfg(tsCfg);
|
||||||
snprintf(filename, sizeof(filename), "%s%sconfig%slocal.json", path, TD_DIRSEP, TD_DIRSEP);
|
snprintf(filename, sizeof(filename), "%s%sdnode%sconfig%slocal.json", path, TD_DIRSEP, TD_DIRSEP, TD_DIRSEP);
|
||||||
}
|
}
|
||||||
uInfo("start to read config file:%s", filename);
|
uInfo("start to read config file:%s", filename);
|
||||||
|
|
||||||
|
@ -1983,6 +1987,7 @@ int32_t readCfgFile(const char *path, bool isGlobal) {
|
||||||
code = terrno;
|
code = terrno;
|
||||||
uTrace("failed to stat file:%s , since %s", filename, tstrerror(code));
|
uTrace("failed to stat file:%s , since %s", filename, tstrerror(code));
|
||||||
}
|
}
|
||||||
|
uInfo("config file:%s does not exist", filename);
|
||||||
TAOS_RETURN(TSDB_CODE_SUCCESS);
|
TAOS_RETURN(TSDB_CODE_SUCCESS);
|
||||||
}
|
}
|
||||||
TdFilePtr pFile = taosOpenFile(filename, TD_FILE_READ);
|
TdFilePtr pFile = taosOpenFile(filename, TD_FILE_READ);
|
||||||
|
@ -2067,13 +2072,17 @@ int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile
|
||||||
tsCfg = NULL;
|
tsCfg = NULL;
|
||||||
TAOS_RETURN(code);
|
TAOS_RETURN(code);
|
||||||
}
|
}
|
||||||
TAOS_CHECK_GOTO(tryLoadCfgFromDataDir(tsCfg), &lino, _exit);
|
|
||||||
|
if (!tsc) {
|
||||||
|
TAOS_CHECK_GOTO(taosSetTfsCfg(tsCfg), &lino, _exit);
|
||||||
|
TAOS_CHECK_GOTO(taosUpdateServerCfg(tsCfg), &lino, _exit);
|
||||||
|
TAOS_CHECK_GOTO(tryLoadCfgFromDataDir(tsCfg), &lino, _exit);
|
||||||
|
}
|
||||||
|
|
||||||
if (tsc) {
|
if (tsc) {
|
||||||
TAOS_CHECK_GOTO(taosSetClientCfg(tsCfg), &lino, _exit);
|
TAOS_CHECK_GOTO(taosSetClientCfg(tsCfg), &lino, _exit);
|
||||||
} else {
|
} else {
|
||||||
TAOS_CHECK_GOTO(taosSetClientCfg(tsCfg), &lino, _exit);
|
TAOS_CHECK_GOTO(taosSetClientCfg(tsCfg), &lino, _exit);
|
||||||
TAOS_CHECK_GOTO(taosUpdateServerCfg(tsCfg), &lino, _exit);
|
|
||||||
TAOS_CHECK_GOTO(taosSetServerCfg(tsCfg), &lino, _exit);
|
TAOS_CHECK_GOTO(taosSetServerCfg(tsCfg), &lino, _exit);
|
||||||
TAOS_CHECK_GOTO(taosSetReleaseCfg(tsCfg), &lino, _exit);
|
TAOS_CHECK_GOTO(taosSetReleaseCfg(tsCfg), &lino, _exit);
|
||||||
TAOS_CHECK_GOTO(taosSetTfsCfg(tsCfg), &lino, _exit);
|
TAOS_CHECK_GOTO(taosSetTfsCfg(tsCfg), &lino, _exit);
|
||||||
|
@ -2716,6 +2725,8 @@ int32_t globalConfigSerialize(int32_t version, SArray *array, char **serialized)
|
||||||
cJSON *cField = cJSON_CreateObject();
|
cJSON *cField = cJSON_CreateObject();
|
||||||
if (cField == NULL) goto _exit;
|
if (cField == NULL) goto _exit;
|
||||||
|
|
||||||
|
if (!cJSON_AddItemToObject(json, "configs", cField)) goto _exit;
|
||||||
|
|
||||||
// cjson only support int32_t or double
|
// cjson only support int32_t or double
|
||||||
// string are used to prohibit the loss of precision
|
// string are used to prohibit the loss of precision
|
||||||
for (int i = 0; i < sz; i++) {
|
for (int i = 0; i < sz; i++) {
|
||||||
|
@ -2749,7 +2760,6 @@ int32_t globalConfigSerialize(int32_t version, SArray *array, char **serialized)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!cJSON_AddItemToObject(json, "configs", cField)) goto _exit;
|
|
||||||
char *pSerialized = cJSON_Print(json);
|
char *pSerialized = cJSON_Print(json);
|
||||||
_exit:
|
_exit:
|
||||||
if (terrno != TSDB_CODE_SUCCESS) {
|
if (terrno != TSDB_CODE_SUCCESS) {
|
||||||
|
@ -2769,6 +2779,9 @@ int32_t localConfigSerialize(SArray *array, char **serialized) {
|
||||||
|
|
||||||
cJSON *cField = cJSON_CreateObject();
|
cJSON *cField = cJSON_CreateObject();
|
||||||
if (cField == NULL) goto _exit;
|
if (cField == NULL) goto _exit;
|
||||||
|
|
||||||
|
if (!cJSON_AddItemToObject(json, "configs", cField)) goto _exit;
|
||||||
|
|
||||||
// cjson only support int32_t or double
|
// cjson only support int32_t or double
|
||||||
// string are used to prohibit the loss of precision
|
// string are used to prohibit the loss of precision
|
||||||
for (int i = 0; i < sz; i++) {
|
for (int i = 0; i < sz; i++) {
|
||||||
|
@ -2802,7 +2815,6 @@ int32_t localConfigSerialize(SArray *array, char **serialized) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!cJSON_AddItemToObject(json, "configs", cField)) goto _exit;
|
|
||||||
char *pSerialized = cJSON_Print(json);
|
char *pSerialized = cJSON_Print(json);
|
||||||
_exit:
|
_exit:
|
||||||
if (terrno != TSDB_CODE_SUCCESS) {
|
if (terrno != TSDB_CODE_SUCCESS) {
|
||||||
|
|
|
@ -0,0 +1,105 @@
|
||||||
|
import sys
|
||||||
|
import taos
|
||||||
|
import os
|
||||||
|
from util.log import tdLog
|
||||||
|
from util.cases import tdCases
|
||||||
|
from util.sql import tdSql
|
||||||
|
from util.dnodes import tdDnodes
|
||||||
|
|
||||||
|
class TDTestCase:
|
||||||
|
updatecfgDict = {
|
||||||
|
"supportVnodes":"1000",
|
||||||
|
"tmqMaxTopicNum":"30",
|
||||||
|
"maxShellConns":"1000",
|
||||||
|
"monitorFqdn":"localhost:9033",
|
||||||
|
"tmqRowSize":"1000",
|
||||||
|
"ttlChangeOnWrite":"1",
|
||||||
|
"compressor":"1",
|
||||||
|
"statusInterval":"4",
|
||||||
|
}
|
||||||
|
|
||||||
|
def getBuildPath(self):
|
||||||
|
selfPath = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
|
if ("community" in selfPath):
|
||||||
|
projPath = selfPath[:selfPath.find("community")]
|
||||||
|
else:
|
||||||
|
projPath = selfPath[:selfPath.find("tests")]
|
||||||
|
|
||||||
|
for root, dirs, files in os.walk(projPath):
|
||||||
|
if ("taosd" in files or "taosd.exe" in files):
|
||||||
|
rootRealPath = os.path.dirname(os.path.realpath(root))
|
||||||
|
if ("packaging" not in rootRealPath):
|
||||||
|
buildPath = root[:len(root) - len("/build/bin")]
|
||||||
|
break
|
||||||
|
return buildPath
|
||||||
|
|
||||||
|
def init(self, conn, logSql, replicaVar=1):
|
||||||
|
self.replicaVar = int(replicaVar)
|
||||||
|
self.index = 1
|
||||||
|
tdLog.debug(f"start to excute {__file__}")
|
||||||
|
tdSql.init(conn.cursor())
|
||||||
|
|
||||||
|
def cli_get_param_value(self, config_name):
|
||||||
|
tdSql.query("show dnode 1 variables;")
|
||||||
|
for row in tdSql.queryResult:
|
||||||
|
if config_name == row[1]:
|
||||||
|
tdLog.debug("Found variable '{}'".format(row[0]))
|
||||||
|
return row[2]
|
||||||
|
|
||||||
|
def cfg(self, option, value):
|
||||||
|
cmd = "echo '%s %s' >> %s" % (option, value, self.cfgPath)
|
||||||
|
if os.system(cmd) != 0 :
|
||||||
|
tdLog.exit(cmd)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
buildPath = self.getBuildPath()
|
||||||
|
if (buildPath == ""):
|
||||||
|
tdLog.exit("taosd not found!")
|
||||||
|
else:
|
||||||
|
tdLog.info("taosd found in %s" % buildPath)
|
||||||
|
|
||||||
|
cfgPath = buildPath + "/../sim/dnode%d/cfg" % (self.index)
|
||||||
|
self.cfgPath = cfgPath
|
||||||
|
|
||||||
|
dataPath = buildPath + "/../sim/dnode%d/data" % (self.index)
|
||||||
|
self.dataPath = dataPath
|
||||||
|
|
||||||
|
logPath = buildPath + "/../sim/dnode%d/log" % (self.index)
|
||||||
|
self.logPath = logPath
|
||||||
|
|
||||||
|
tdLog.info("start to check cfg value load from cfg file {0}".format(cfgPath))
|
||||||
|
|
||||||
|
for name,expValue in self.updatecfgDict.items():
|
||||||
|
actValue = self.cli_get_param_value(name)
|
||||||
|
tdLog.debug("Get {} value: {} Expect value: {}".format(name, actValue,expValue))
|
||||||
|
assert str(actValue) == str(expValue)
|
||||||
|
|
||||||
|
tdLog.info("rm -rf {0}".format(cfgPath))
|
||||||
|
os.system("rm -rf {0}/*".format(cfgPath))
|
||||||
|
|
||||||
|
tdLog.info("rebuilt cfg file {0}".format(cfgPath))
|
||||||
|
cfgName = cfgPath+"/taos.cfg"
|
||||||
|
os.system("touch {0}".format(cfgName))
|
||||||
|
os.system("echo 'fqdn localhost' >> {0}".format(cfgName))
|
||||||
|
os.system("echo 'dataDir {0}' >> {1}".format(dataPath, cfgName))
|
||||||
|
os.system("echo 'logDir {0}' >> {1}".format(logPath, cfgName))
|
||||||
|
|
||||||
|
tdDnodes.stop(1)
|
||||||
|
tdLog.info("restart taosd")
|
||||||
|
tdDnodes.start(1)
|
||||||
|
|
||||||
|
tdLog.info("start to check cfg value load from mnd sdb")
|
||||||
|
|
||||||
|
for name,expValue in self.updatecfgDict.items():
|
||||||
|
actValue = self.cli_get_param_value(name)
|
||||||
|
tdLog.debug("Get {} value: {} Expect value: {}".format(name, actValue,expValue))
|
||||||
|
assert str(actValue) == str(expValue)
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
tdSql.close()
|
||||||
|
# tdLog.success(f"{__file__} successfully executed")
|
||||||
|
|
||||||
|
tdCases.addLinux(__file__, TDTestCase())
|
||||||
|
tdCases.addWindows(__file__, TDTestCase())
|
||||||
|
|
Loading…
Reference in New Issue