TDengine/source/libs/catalog/test/catalogTests.cpp

3275 lines
92 KiB
C++
Raw Normal View History

/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
2021-12-16 08:23:25 +00:00
#include <gtest/gtest.h>
#include <iostream>
2022-01-21 10:19:40 +00:00
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wwrite-strings"
#pragma GCC diagnostic ignored "-Wunused-function"
#pragma GCC diagnostic ignored "-Wunused-variable"
#pragma GCC diagnostic ignored "-Wsign-compare"
2022-01-21 10:19:40 +00:00
#pragma GCC diagnostic ignored "-Wformat"
#include <addr_any.h>
2022-04-22 01:54:27 +00:00
#ifdef WINDOWS
#define TD_USE_WINSOCK
#endif
#include "catalog.h"
2023-04-10 02:53:29 +00:00
#include "catalogInt.h"
2022-10-13 05:41:36 +00:00
#include "os.h"
2022-01-21 10:19:40 +00:00
#include "stub.h"
2021-12-16 08:23:25 +00:00
#include "taos.h"
2022-03-04 05:25:39 +00:00
#include "tdatablock.h"
#include "tdef.h"
2022-10-13 05:41:36 +00:00
#include "tglobal.h"
2021-12-16 10:50:21 +00:00
#include "trpc.h"
2022-01-21 10:19:40 +00:00
#include "tvariant.h"
#include "ttimer.h"
2021-12-16 08:23:25 +00:00
namespace {
2022-10-13 05:41:36 +00:00
extern "C" int32_t ctgdGetClusterCacheNum(struct SCatalog *pCatalog, int32_t type);
2022-03-26 10:10:26 +00:00
extern "C" int32_t ctgdGetStatNum(char *option, void *res);
2021-12-31 03:23:44 +00:00
2022-02-12 12:03:42 +00:00
void ctgTestSetRspTableMeta();
void ctgTestSetRspCTableMeta();
void ctgTestSetRspSTableMeta();
void ctgTestSetRspMultiSTableMeta();
2023-04-10 02:53:29 +00:00
extern int32_t clientConnRefPool;
2022-11-02 07:18:32 +00:00
2022-02-12 12:03:42 +00:00
enum {
CTGT_RSP_VGINFO = 1,
CTGT_RSP_TBMETA,
CTGT_RSP_CTBMETA,
CTGT_RSP_STBMETA,
CTGT_RSP_MSTBMETA,
2022-10-26 11:25:12 +00:00
CTGT_RSP_INDEXINFO_E,
2022-10-27 11:33:00 +00:00
CTGT_RSP_USERAUTH,
CTGT_RSP_TBLCFG,
CTGT_RSP_TBLINDEX,
2022-10-28 03:44:06 +00:00
CTGT_RSP_DBCFG,
CTGT_RSP_QNODELIST,
CTGT_RSP_UDF,
CTGT_RSP_SVRVER,
2022-10-29 10:34:42 +00:00
CTGT_RSP_DNODElIST,
2022-03-03 01:09:11 +00:00
CTGT_RSP_TBMETA_NOT_EXIST,
2022-02-12 12:03:42 +00:00
};
2021-12-25 04:27:46 +00:00
2022-01-21 10:19:40 +00:00
bool ctgTestStop = false;
bool ctgTestEnableSleep = false;
2022-03-03 01:09:11 +00:00
bool ctgTestEnableLog = true;
2022-01-21 10:19:40 +00:00
bool ctgTestDeadLoop = false;
2022-03-03 01:09:11 +00:00
int32_t ctgTestPrintNum = 10000;
2022-02-09 03:28:38 +00:00
int32_t ctgTestMTRunSec = 5;
2022-01-06 07:30:32 +00:00
2022-02-12 09:14:33 +00:00
int32_t ctgTestCurrentVgVersion = 0;
int32_t ctgTestVgVersion = 1;
int32_t ctgTestVgNum = 10;
int32_t ctgTestColNum = 2;
int32_t ctgTestTagNum = 1;
2022-10-28 03:44:06 +00:00
int32_t ctgTestQnodeNum = 3;
2022-10-27 11:33:00 +00:00
int32_t ctgTestIndexNum = 3;
2022-10-28 03:44:06 +00:00
int32_t ctgTestFuncNum = 2;
int32_t ctgTestFuncType = 3;
2022-02-12 09:14:33 +00:00
int32_t ctgTestSVersion = 1;
int32_t ctgTestTVersion = 1;
int32_t ctgTestSuid = 2;
2022-01-24 06:31:57 +00:00
uint64_t ctgTestDbId = 33;
2022-03-03 01:09:11 +00:00
uint64_t ctgTestNormalTblUid = 1;
2021-12-25 04:27:46 +00:00
uint64_t ctgTestClusterId = 0x1;
2022-01-21 10:19:40 +00:00
char *ctgTestDbname = "1.db1";
char *ctgTestTablename = "table1";
char *ctgTestCTablename = "ctable1";
char *ctgTestSTablename = "stable1";
2022-10-27 11:33:00 +00:00
char *ctgTestUsername = "user1";
2022-03-03 01:09:11 +00:00
char *ctgTestCurrentCTableName = NULL;
char *ctgTestCurrentTableName = NULL;
char *ctgTestCurrentSTableName = NULL;
2021-12-24 11:01:48 +00:00
2022-03-03 01:09:11 +00:00
int32_t ctgTestRspFunc[100] = {0};
2022-02-12 12:03:42 +00:00
int32_t ctgTestRspIdx = 0;
2021-12-16 10:50:21 +00:00
void sendCreateDbMsg(void *shandle, SEpSet *pEpSet) {
2022-02-12 09:14:33 +00:00
SCreateDbReq createReq = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(createReq.db, "1.db1");
2022-02-12 09:14:33 +00:00
createReq.numOfVgroups = 2;
2022-04-25 13:12:03 +00:00
createReq.buffer = -1;
createReq.pageSize = -1;
createReq.pages = -1;
2022-04-28 07:30:23 +00:00
createReq.daysPerFile = 10;
createReq.daysToKeep0 = 3650;
createReq.daysToKeep1 = 3650;
createReq.daysToKeep2 = 3650;
2022-02-12 09:14:33 +00:00
createReq.minRows = 100;
createReq.maxRows = 4096;
createReq.walFsyncPeriod = 3000;
2022-02-12 09:14:33 +00:00
createReq.walLevel = 1;
createReq.precision = 0;
createReq.compression = 2;
createReq.replications = 1;
2022-04-20 01:47:38 +00:00
createReq.strict = 1;
createReq.cacheLast = 0;
2022-02-12 09:14:33 +00:00
createReq.ignoreExist = 1;
int32_t contLen = tSerializeSCreateDbReq(NULL, 0, &createReq);
2024-07-19 05:46:35 +00:00
ASSERT(contLen > 0);
2022-02-12 09:14:33 +00:00
void *pReq = rpcMallocCont(contLen);
2024-07-19 05:46:35 +00:00
ASSERT(pReq != NULL);
contLen = tSerializeSCreateDbReq(pReq, contLen, &createReq);
ASSERT(contLen > 0);
2021-12-16 10:50:21 +00:00
SRpcMsg rpcMsg = {0};
rpcMsg.pCont = pReq;
2022-02-12 09:14:33 +00:00
rpcMsg.contLen = contLen;
2021-12-24 07:00:51 +00:00
rpcMsg.msgType = TDMT_MND_CREATE_DB;
2021-12-16 10:50:21 +00:00
SRpcMsg rpcRsp = {0};
2024-07-19 05:46:35 +00:00
ASSERT(0 == rpcSendRecv(shandle, pEpSet, &rpcMsg, &rpcRsp));
2021-12-16 10:50:21 +00:00
ASSERT_EQ(rpcRsp.code, 0);
}
2021-12-31 03:23:44 +00:00
void ctgTestInitLogFile() {
2022-03-03 01:09:11 +00:00
if (!ctgTestEnableLog) {
return;
}
2022-10-13 05:41:36 +00:00
2024-12-26 01:52:36 +00:00
const char *defaultLogFileNamePrefix = "catalogTest";
2022-01-21 10:19:40 +00:00
const int32_t maxLogFileNum = 10;
2021-12-31 03:23:44 +00:00
tsAsyncLog = 0;
2022-02-09 02:56:22 +00:00
qDebugFlag = 159;
tmrDebugFlag = 159;
2024-12-26 01:52:36 +00:00
tsNumOfLogLines = 1000000000;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(tsLogDir, TD_LOG_DIR_PATH);
2021-12-31 03:23:44 +00:00
2024-07-19 05:46:35 +00:00
(void)ctgdEnableDebug("api", true);
(void)ctgdEnableDebug("meta", true);
(void)ctgdEnableDebug("cache", true);
(void)ctgdEnableDebug("lock", true);
2022-10-13 05:41:36 +00:00
2024-12-18 10:55:14 +00:00
if (taosInitLog(defaultLogFileNamePrefix, 1, false) < 0) {
2024-07-19 05:46:35 +00:00
(void)printf("failed to open log file in directory:%s\n", tsLogDir);
ASSERT(0);
2021-12-31 03:23:44 +00:00
}
}
int32_t ctgTestGetVgNumFromVgVersion(int32_t vgVersion) {
return ((vgVersion % 2) == 0) ? ctgTestVgNum - 2 : ctgTestVgNum;
}
void ctgTestBuildCTableMetaOutput(STableMetaOutput *output) {
2022-10-13 05:41:36 +00:00
SName cn = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(cn.dbname, "db1");
TAOS_STRCPY(cn.tname, ctgTestCTablename);
2021-12-31 03:23:44 +00:00
2022-10-13 05:41:36 +00:00
SName sn = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(sn.dbname, "db1");
TAOS_STRCPY(sn.tname, ctgTestSTablename);
2021-12-31 03:23:44 +00:00
2022-02-05 04:21:21 +00:00
char db[TSDB_DB_FNAME_LEN] = {0};
2024-07-19 05:46:35 +00:00
(void)tNameGetFullDbName(&cn, db);
2022-02-05 04:21:21 +00:00
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(output->dbFName, db);
2022-01-07 01:56:11 +00:00
SET_META_TYPE_BOTH_TABLE(output->metaType);
2021-12-31 03:23:44 +00:00
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(output->ctbName, cn.tname);
TAOS_STRCPY(output->tbName, sn.tname);
2021-12-31 03:23:44 +00:00
output->ctbMeta.vgId = 9;
output->ctbMeta.tableType = TSDB_CHILD_TABLE;
output->ctbMeta.uid = 3;
output->ctbMeta.suid = 2;
2022-10-13 05:41:36 +00:00
output->tbMeta =
(STableMeta *)taosMemoryCalloc(1, sizeof(STableMeta) + sizeof(SSchema) * (ctgTestColNum + ctgTestColNum));
2024-07-19 05:46:35 +00:00
ASSERT(NULL != output->tbMeta);
2021-12-31 03:23:44 +00:00
output->tbMeta->vgId = 9;
output->tbMeta->tableType = TSDB_SUPER_TABLE;
output->tbMeta->uid = 2;
output->tbMeta->suid = 2;
output->tbMeta->tableInfo.numOfColumns = ctgTestColNum;
output->tbMeta->tableInfo.numOfTags = ctgTestTagNum;
2022-01-21 10:19:40 +00:00
2021-12-31 03:23:44 +00:00
output->tbMeta->sversion = ctgTestSVersion;
output->tbMeta->tversion = ctgTestTVersion;
2022-01-21 10:19:40 +00:00
output->vctbMeta = NULL;
2021-12-31 03:23:44 +00:00
SSchema *s = NULL;
s = &output->tbMeta->schema[0];
s->type = TSDB_DATA_TYPE_TIMESTAMP;
s->colId = 1;
s->bytes = 8;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "ts");
2021-12-31 03:23:44 +00:00
s = &output->tbMeta->schema[1];
s->type = TSDB_DATA_TYPE_INT;
s->colId = 2;
s->bytes = 4;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "col1s");
2021-12-31 03:23:44 +00:00
s = &output->tbMeta->schema[2];
s->type = TSDB_DATA_TYPE_BINARY;
s->colId = 3;
s->bytes = 12;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "tag1s");
2021-12-31 03:23:44 +00:00
}
2022-02-11 11:52:07 +00:00
void ctgTestBuildDBVgroup(SDBVgInfo **pdbVgroup) {
2021-12-31 03:23:44 +00:00
static int32_t vgVersion = ctgTestVgVersion + 1;
2022-01-21 10:19:40 +00:00
int32_t vgNum = 0;
SVgroupInfo vgInfo = {0};
2022-10-13 05:41:36 +00:00
SDBVgInfo *dbVgroup = (SDBVgInfo *)taosMemoryCalloc(1, sizeof(SDBVgInfo));
2024-07-19 05:46:35 +00:00
ASSERT(NULL != dbVgroup);
2021-12-31 03:23:44 +00:00
dbVgroup->vgVersion = vgVersion++;
2022-01-21 10:19:40 +00:00
2021-12-31 03:23:44 +00:00
ctgTestCurrentVgVersion = dbVgroup->vgVersion;
2022-01-21 10:19:40 +00:00
2021-12-31 03:23:44 +00:00
dbVgroup->hashMethod = 0;
dbVgroup->hashPrefix = 0;
dbVgroup->hashSuffix = 0;
2022-01-28 09:50:16 +00:00
dbVgroup->vgHash = taosHashInit(ctgTestVgNum, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), true, HASH_ENTRY_LOCK);
2024-07-19 05:46:35 +00:00
ASSERT(NULL != dbVgroup->vgHash);
2021-12-31 03:23:44 +00:00
vgNum = ctgTestGetVgNumFromVgVersion(dbVgroup->vgVersion);
uint32_t hashUnit = UINT32_MAX / vgNum;
for (int32_t i = 0; i < vgNum; ++i) {
vgInfo.vgId = i + 1;
vgInfo.hashBegin = i * hashUnit;
vgInfo.hashEnd = hashUnit * (i + 1) - 1;
2022-03-08 09:22:21 +00:00
vgInfo.epSet.numOfEps = i % TSDB_MAX_REPLICA + 1;
vgInfo.epSet.inUse = i % vgInfo.epSet.numOfEps;
for (int32_t n = 0; n < vgInfo.epSet.numOfEps; ++n) {
SEp *addr = &vgInfo.epSet.eps[n];
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(addr->fqdn, "a0");
2022-02-15 07:24:27 +00:00
addr->port = n + 22;
2021-12-31 03:23:44 +00:00
}
2024-07-19 05:46:35 +00:00
ASSERT(0 == taosHashPut(dbVgroup->vgHash, &vgInfo.vgId, sizeof(vgInfo.vgId), &vgInfo, sizeof(vgInfo)));
2021-12-31 03:23:44 +00:00
}
2022-02-05 04:21:21 +00:00
*pdbVgroup = dbVgroup;
2021-12-31 03:23:44 +00:00
}
2022-02-08 08:53:00 +00:00
void ctgTestBuildSTableMetaRsp(STableMetaRsp *rspMsg) {
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(rspMsg->dbFName, ctgTestDbname);
(void)sprintf(rspMsg->tbName, "%s", ctgTestSTablename);
(void)sprintf(rspMsg->stbName, "%s", ctgTestSTablename);
2022-02-08 08:53:00 +00:00
rspMsg->numOfTags = ctgTestTagNum;
rspMsg->numOfColumns = ctgTestColNum;
rspMsg->precision = 1 + 1;
rspMsg->tableType = TSDB_SUPER_TABLE;
rspMsg->sversion = ctgTestSVersion + 1;
rspMsg->tversion = ctgTestTVersion + 1;
2022-10-25 08:21:39 +00:00
rspMsg->suid = ctgTestSuid;
rspMsg->tuid = ctgTestSuid;
2022-02-08 08:53:00 +00:00
rspMsg->vgId = 1;
2022-10-13 05:41:36 +00:00
2022-03-25 16:29:53 +00:00
rspMsg->pSchemas = (SSchema *)taosMemoryCalloc(rspMsg->numOfTags + rspMsg->numOfColumns, sizeof(SSchema));
2024-07-19 05:46:35 +00:00
ASSERT(NULL != rspMsg->pSchemas);
2022-02-08 08:53:00 +00:00
SSchema *s = NULL;
2022-02-15 07:24:27 +00:00
s = &rspMsg->pSchemas[0];
2022-02-08 08:53:00 +00:00
s->type = TSDB_DATA_TYPE_TIMESTAMP;
s->colId = 1;
s->bytes = 8;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "ts");
2022-02-08 08:53:00 +00:00
2022-02-15 07:24:27 +00:00
s = &rspMsg->pSchemas[1];
2022-02-08 08:53:00 +00:00
s->type = TSDB_DATA_TYPE_INT;
s->colId = 2;
s->bytes = 4;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "col1s");
2022-02-08 08:53:00 +00:00
2022-02-15 07:24:27 +00:00
s = &rspMsg->pSchemas[2];
2022-02-08 08:53:00 +00:00
s->type = TSDB_DATA_TYPE_BINARY;
s->colId = 3;
s->bytes = 12 + 1;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "tag1s");
2022-02-08 08:53:00 +00:00
return;
}
2024-07-19 05:46:35 +00:00
int32_t ctgTestRspDbVgroups(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
2023-04-10 02:53:29 +00:00
2022-02-14 07:27:38 +00:00
SUseDbRsp usedbRsp = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(usedbRsp.db, ctgTestDbname);
2022-02-14 07:27:38 +00:00
usedbRsp.vgVersion = ctgTestVgVersion;
2021-12-31 03:23:44 +00:00
ctgTestCurrentVgVersion = ctgTestVgVersion;
2022-02-14 07:27:38 +00:00
usedbRsp.vgNum = ctgTestVgNum;
usedbRsp.hashMethod = 0;
usedbRsp.uid = ctgTestDbId;
usedbRsp.pVgroupInfos = taosArrayInit(usedbRsp.vgNum, sizeof(SVgroupInfo));
2024-07-19 05:46:35 +00:00
ASSERT(NULL != usedbRsp.pVgroupInfos);
2022-02-14 07:27:38 +00:00
uint32_t hashUnit = UINT32_MAX / ctgTestVgNum;
2021-12-24 11:01:48 +00:00
for (int32_t i = 0; i < ctgTestVgNum; ++i) {
2022-02-14 07:27:38 +00:00
SVgroupInfo vg = {0};
vg.vgId = i + 1;
vg.hashBegin = i * hashUnit;
vg.hashEnd = hashUnit * (i + 1) - 1;
if (i == ctgTestVgNum - 1) {
vg.hashEnd = htonl(UINT32_MAX);
}
2022-03-08 09:22:21 +00:00
vg.epSet.numOfEps = i % TSDB_MAX_REPLICA + 1;
vg.epSet.inUse = i % vg.epSet.numOfEps;
for (int32_t n = 0; n < vg.epSet.numOfEps; ++n) {
SEp *addr = &vg.epSet.eps[n];
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(addr->fqdn, "a0");
2022-02-14 07:27:38 +00:00
addr->port = n + 22;
2021-12-24 11:01:48 +00:00
}
2022-10-27 11:33:00 +00:00
vg.numOfTable = i % 2;
2022-02-14 07:27:38 +00:00
2024-07-19 05:46:35 +00:00
ASSERT(NULL != taosArrayPush(usedbRsp.pVgroupInfos, &vg));
2021-12-24 11:01:48 +00:00
}
2022-02-14 07:27:38 +00:00
int32_t contLen = tSerializeSUseDbRsp(NULL, 0, &usedbRsp);
2024-07-19 05:46:35 +00:00
ASSERT(contLen > 0);
2022-02-14 07:27:38 +00:00
void *pReq = rpcMallocCont(contLen);
2024-07-19 05:46:35 +00:00
ASSERT(pReq != NULL);
contLen = tSerializeSUseDbRsp(pReq, contLen, &usedbRsp);
ASSERT(contLen > 0);
2021-12-25 04:27:46 +00:00
2022-02-14 07:27:38 +00:00
pRsp->code = 0;
pRsp->contLen = contLen;
pRsp->pCont = pReq;
taosArrayDestroy(usedbRsp.pVgroupInfos);
2024-07-19 05:46:35 +00:00
return 0;
2021-12-25 04:27:46 +00:00
}
2024-07-19 05:46:35 +00:00
int32_t ctgTestRspTableMeta(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
2023-04-10 02:53:29 +00:00
2022-02-15 07:24:27 +00:00
STableMetaRsp metaRsp = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(metaRsp.dbFName, ctgTestDbname);
TAOS_STRCPY(metaRsp.tbName, ctgTestTablename);
2022-02-15 07:24:27 +00:00
metaRsp.numOfTags = 0;
metaRsp.numOfColumns = ctgTestColNum;
metaRsp.precision = 1;
metaRsp.tableType = TSDB_NORMAL_TABLE;
metaRsp.sversion = ctgTestSVersion;
metaRsp.tversion = ctgTestTVersion;
metaRsp.suid = 0;
2022-03-03 01:09:11 +00:00
metaRsp.tuid = ctgTestNormalTblUid++;
2022-02-15 07:24:27 +00:00
metaRsp.vgId = 8;
2022-03-25 16:29:53 +00:00
metaRsp.pSchemas = (SSchema *)taosMemoryMalloc((metaRsp.numOfTags + metaRsp.numOfColumns) * sizeof(SSchema));
2024-07-19 05:46:35 +00:00
ASSERT(NULL != metaRsp.pSchemas);
2021-12-25 04:27:46 +00:00
2024-07-19 05:46:35 +00:00
metaRsp.pSchemaExt = (SSchemaExt *)taosMemoryMalloc((metaRsp.numOfTags + metaRsp.numOfColumns) * sizeof(SSchemaExt));
ASSERT(NULL != metaRsp.pSchemaExt);
2021-12-25 04:27:46 +00:00
SSchema *s = NULL;
2022-02-15 07:24:27 +00:00
s = &metaRsp.pSchemas[0];
2021-12-25 04:27:46 +00:00
s->type = TSDB_DATA_TYPE_TIMESTAMP;
2022-02-15 07:24:27 +00:00
s->colId = 1;
s->bytes = 8;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "ts");
2021-12-25 04:27:46 +00:00
2022-02-15 07:24:27 +00:00
s = &metaRsp.pSchemas[1];
2021-12-25 04:27:46 +00:00
s->type = TSDB_DATA_TYPE_INT;
2022-02-15 07:24:27 +00:00
s->colId = 2;
s->bytes = 4;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "col1");
2022-01-21 10:19:40 +00:00
2022-02-15 07:24:27 +00:00
int32_t contLen = tSerializeSTableMetaRsp(NULL, 0, &metaRsp);
2024-07-19 05:46:35 +00:00
ASSERT(contLen > 0);
2022-02-15 07:24:27 +00:00
void *pReq = rpcMallocCont(contLen);
2024-07-19 05:46:35 +00:00
ASSERT(pReq != NULL);
contLen = tSerializeSTableMetaRsp(pReq, contLen, &metaRsp);
ASSERT(contLen > 0);
2022-02-15 07:24:27 +00:00
pRsp->code = 0;
pRsp->contLen = contLen;
pRsp->pCont = pReq;
tFreeSTableMetaRsp(&metaRsp);
2024-07-19 05:46:35 +00:00
return 0;
2021-12-25 04:27:46 +00:00
}
2022-03-03 01:09:11 +00:00
void ctgTestRspTableMetaNotExist(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
2023-04-10 02:53:29 +00:00
2022-03-03 01:09:11 +00:00
pRsp->code = CTG_ERR_CODE_TABLE_NOT_EXIST;
}
2024-07-19 05:46:35 +00:00
int32_t ctgTestRspCTableMeta(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
2023-04-10 02:53:29 +00:00
2022-02-15 07:24:27 +00:00
STableMetaRsp metaRsp = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(metaRsp.dbFName, ctgTestDbname);
TAOS_STRCPY(metaRsp.tbName, ctgTestCurrentCTableName ? ctgTestCurrentCTableName : ctgTestCTablename);
TAOS_STRCPY(metaRsp.stbName, ctgTestSTablename);
2022-02-15 07:24:27 +00:00
metaRsp.numOfTags = ctgTestTagNum;
metaRsp.numOfColumns = ctgTestColNum;
metaRsp.precision = 1;
metaRsp.tableType = TSDB_CHILD_TABLE;
metaRsp.sversion = ctgTestSVersion;
metaRsp.tversion = ctgTestTVersion;
metaRsp.suid = 0x0000000000000002;
metaRsp.tuid = 0x0000000000000003;
metaRsp.vgId = 9;
2022-03-25 16:29:53 +00:00
metaRsp.pSchemas = (SSchema *)taosMemoryMalloc((metaRsp.numOfTags + metaRsp.numOfColumns) * sizeof(SSchema));
2024-07-19 05:46:35 +00:00
ASSERT(NULL != metaRsp.pSchemas);
2021-12-25 04:27:46 +00:00
2024-07-19 05:46:35 +00:00
metaRsp.pSchemaExt = (SSchemaExt *)taosMemoryMalloc((metaRsp.numOfTags + metaRsp.numOfColumns) * sizeof(SSchemaExt));
ASSERT(NULL != metaRsp.pSchemaExt);
2021-12-25 04:27:46 +00:00
SSchema *s = NULL;
2022-02-15 07:24:27 +00:00
s = &metaRsp.pSchemas[0];
2021-12-25 04:27:46 +00:00
s->type = TSDB_DATA_TYPE_TIMESTAMP;
2022-02-15 07:24:27 +00:00
s->colId = 1;
s->bytes = 8;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "ts");
2021-12-25 04:27:46 +00:00
2022-02-15 07:24:27 +00:00
s = &metaRsp.pSchemas[1];
2021-12-25 04:27:46 +00:00
s->type = TSDB_DATA_TYPE_INT;
2022-02-15 07:24:27 +00:00
s->colId = 2;
s->bytes = 4;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "col1s");
2021-12-25 04:27:46 +00:00
2022-02-15 07:24:27 +00:00
s = &metaRsp.pSchemas[2];
2021-12-25 04:27:46 +00:00
s->type = TSDB_DATA_TYPE_BINARY;
2022-02-15 07:24:27 +00:00
s->colId = 3;
s->bytes = 12;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "tag1s");
2021-12-25 04:27:46 +00:00
2022-02-15 07:24:27 +00:00
int32_t contLen = tSerializeSTableMetaRsp(NULL, 0, &metaRsp);
2024-07-19 05:46:35 +00:00
ASSERT(contLen > 0);
2022-02-15 07:24:27 +00:00
void *pReq = rpcMallocCont(contLen);
2024-07-19 05:46:35 +00:00
ASSERT(pReq != NULL);
contLen = tSerializeSTableMetaRsp(pReq, contLen, &metaRsp);
ASSERT(contLen > 0);
2022-02-15 07:24:27 +00:00
pRsp->code = 0;
pRsp->contLen = contLen;
pRsp->pCont = pReq;
tFreeSTableMetaRsp(&metaRsp);
2024-07-19 05:46:35 +00:00
return 0;
2021-12-25 04:27:46 +00:00
}
2024-07-19 05:46:35 +00:00
int32_t ctgTestRspSTableMeta(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
2023-04-10 02:53:29 +00:00
2022-02-15 07:24:27 +00:00
STableMetaRsp metaRsp = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(metaRsp.dbFName, ctgTestDbname);
TAOS_STRCPY(metaRsp.tbName, ctgTestCurrentSTableName ? ctgTestCurrentSTableName : ctgTestSTablename);
TAOS_STRCPY(metaRsp.stbName, ctgTestSTablename);
2022-02-15 07:24:27 +00:00
metaRsp.numOfTags = ctgTestTagNum;
metaRsp.numOfColumns = ctgTestColNum;
metaRsp.precision = 1;
metaRsp.tableType = TSDB_SUPER_TABLE;
metaRsp.sversion = ctgTestSVersion;
metaRsp.tversion = ctgTestTVersion;
metaRsp.suid = ctgTestSuid;
2023-04-10 02:53:29 +00:00
metaRsp.tuid = ctgTestSuid + 1;
2022-02-15 07:24:27 +00:00
metaRsp.vgId = 0;
2022-03-25 16:29:53 +00:00
metaRsp.pSchemas = (SSchema *)taosMemoryMalloc((metaRsp.numOfTags + metaRsp.numOfColumns) * sizeof(SSchema));
2024-07-19 05:46:35 +00:00
ASSERT(NULL != metaRsp.pSchemas);
metaRsp.pSchemaExt = (SSchemaExt *)taosMemoryMalloc((metaRsp.numOfTags + metaRsp.numOfColumns) * sizeof(SSchemaExt));
ASSERT(NULL != metaRsp.pSchemaExt);
2021-12-25 04:27:46 +00:00
SSchema *s = NULL;
2022-02-15 07:24:27 +00:00
s = &metaRsp.pSchemas[0];
2021-12-25 04:27:46 +00:00
s->type = TSDB_DATA_TYPE_TIMESTAMP;
2022-02-15 07:24:27 +00:00
s->colId = 1;
s->bytes = 8;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "ts");
2021-12-25 04:27:46 +00:00
2022-02-15 07:24:27 +00:00
s = &metaRsp.pSchemas[1];
2021-12-25 04:27:46 +00:00
s->type = TSDB_DATA_TYPE_INT;
2022-02-15 07:24:27 +00:00
s->colId = 2;
s->bytes = 4;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "col1s");
2021-12-25 04:27:46 +00:00
2022-02-15 07:24:27 +00:00
s = &metaRsp.pSchemas[2];
2021-12-25 04:27:46 +00:00
s->type = TSDB_DATA_TYPE_BINARY;
2022-02-15 07:24:27 +00:00
s->colId = 3;
s->bytes = 12;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "tag1s");
2021-12-25 04:27:46 +00:00
2022-02-15 07:24:27 +00:00
int32_t contLen = tSerializeSTableMetaRsp(NULL, 0, &metaRsp);
2024-07-19 05:46:35 +00:00
ASSERT(contLen > 0);
2022-02-15 07:24:27 +00:00
void *pReq = rpcMallocCont(contLen);
2024-07-19 05:46:35 +00:00
ASSERT(pReq != NULL);
contLen = tSerializeSTableMetaRsp(pReq, contLen, &metaRsp);
ASSERT(contLen > 0);
2022-02-15 07:24:27 +00:00
pRsp->code = 0;
pRsp->contLen = contLen;
pRsp->pCont = pReq;
tFreeSTableMetaRsp(&metaRsp);
2024-07-19 05:46:35 +00:00
return 0;
2021-12-25 04:27:46 +00:00
}
2024-07-19 05:46:35 +00:00
int32_t ctgTestRspMultiSTableMeta(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
2023-04-10 02:53:29 +00:00
2022-01-07 06:38:05 +00:00
static int32_t idx = 1;
2022-02-15 07:24:27 +00:00
STableMetaRsp metaRsp = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(metaRsp.dbFName, ctgTestDbname);
(void)sprintf(metaRsp.tbName, "%s_%d", ctgTestSTablename, idx);
(void)sprintf(metaRsp.stbName, "%s_%d", ctgTestSTablename, idx);
2022-02-15 07:24:27 +00:00
metaRsp.numOfTags = ctgTestTagNum;
metaRsp.numOfColumns = ctgTestColNum;
metaRsp.precision = 1;
metaRsp.tableType = TSDB_SUPER_TABLE;
metaRsp.sversion = ctgTestSVersion;
metaRsp.tversion = ctgTestTVersion;
metaRsp.suid = ctgTestSuid + idx;
metaRsp.tuid = ctgTestSuid + idx;
metaRsp.vgId = 0;
2022-03-25 16:29:53 +00:00
metaRsp.pSchemas = (SSchema *)taosMemoryMalloc((metaRsp.numOfTags + metaRsp.numOfColumns) * sizeof(SSchema));
2024-07-19 05:46:35 +00:00
ASSERT(NULL != metaRsp.pSchemas);
metaRsp.pSchemaExt = (SSchemaExt *)taosMemoryMalloc((metaRsp.numOfTags + metaRsp.numOfColumns) * sizeof(SSchemaExt));
ASSERT(NULL != metaRsp.pSchemaExt);
2022-01-07 06:38:05 +00:00
SSchema *s = NULL;
2022-02-15 07:24:27 +00:00
s = &metaRsp.pSchemas[0];
2022-01-07 06:38:05 +00:00
s->type = TSDB_DATA_TYPE_TIMESTAMP;
2022-02-15 07:24:27 +00:00
s->colId = 1;
s->bytes = 8;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "ts");
2022-01-07 06:38:05 +00:00
2022-02-15 07:24:27 +00:00
s = &metaRsp.pSchemas[1];
2022-01-07 06:38:05 +00:00
s->type = TSDB_DATA_TYPE_INT;
2022-02-15 07:24:27 +00:00
s->colId = 2;
s->bytes = 4;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "col1s");
2022-01-07 06:38:05 +00:00
2022-02-15 07:24:27 +00:00
s = &metaRsp.pSchemas[2];
2022-01-07 06:38:05 +00:00
s->type = TSDB_DATA_TYPE_BINARY;
2022-02-15 07:24:27 +00:00
s->colId = 3;
s->bytes = 12;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "tag1s");
2022-01-07 06:38:05 +00:00
++idx;
2022-01-21 10:19:40 +00:00
2022-02-15 07:24:27 +00:00
int32_t contLen = tSerializeSTableMetaRsp(NULL, 0, &metaRsp);
2024-07-19 05:46:35 +00:00
ASSERT(contLen > 0);
2022-02-15 07:24:27 +00:00
void *pReq = rpcMallocCont(contLen);
2024-07-19 05:46:35 +00:00
ASSERT(pReq != NULL);
contLen = tSerializeSTableMetaRsp(pReq, contLen, &metaRsp);
ASSERT(contLen > 0);
2022-02-15 07:24:27 +00:00
pRsp->code = 0;
pRsp->contLen = contLen;
pRsp->pCont = pReq;
2022-01-07 06:38:05 +00:00
2022-02-15 07:24:27 +00:00
tFreeSTableMetaRsp(&metaRsp);
2024-07-19 05:46:35 +00:00
return 0;
2022-02-15 07:24:27 +00:00
}
2022-01-21 10:19:40 +00:00
2022-10-26 11:25:12 +00:00
void ctgTestRspErrIndexInfo(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
2023-04-10 02:53:29 +00:00
2022-10-26 11:25:12 +00:00
pRsp->code = TSDB_CODE_MND_DB_INDEX_NOT_EXIST;
pRsp->contLen = 0;
pRsp->pCont = NULL;
}
2022-10-27 11:33:00 +00:00
void ctgTestRspUserAuth(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
SGetUserAuthRsp userRsp = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(userRsp.user, ctgTestUsername);
2022-10-27 11:33:00 +00:00
userRsp.version = 1;
userRsp.superAuth = 1;
2023-04-10 02:53:29 +00:00
userRsp.enable = 1;
2022-10-27 11:33:00 +00:00
int32_t contLen = tSerializeSGetUserAuthRsp(NULL, 0, &userRsp);
2024-07-19 05:46:35 +00:00
ASSERT(contLen > 0);
2022-10-27 11:33:00 +00:00
void *pReq = rpcMallocCont(contLen);
2024-07-19 05:46:35 +00:00
ASSERT(pReq != NULL);
contLen = tSerializeSGetUserAuthRsp(pReq, contLen, &userRsp);
ASSERT(contLen > 0);
2022-10-27 11:33:00 +00:00
pRsp->code = 0;
pRsp->contLen = contLen;
pRsp->pCont = pReq;
}
void ctgTestRspTableCfg(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
2023-04-10 02:53:29 +00:00
2022-10-27 11:33:00 +00:00
static int32_t idx = 1;
STableCfgRsp tblRsp = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(tblRsp.tbName, ctgTestTablename);
2022-10-27 11:33:00 +00:00
tblRsp.numOfColumns = ctgTestColNum;
tblRsp.pSchemas = (SSchema *)taosMemoryMalloc((tblRsp.numOfTags + tblRsp.numOfColumns) * sizeof(SSchema));
2024-07-19 05:46:35 +00:00
ASSERT(tblRsp.pSchemas != NULL);
tblRsp.pSchemaExt = (SSchemaExt *)taosMemoryMalloc((tblRsp.numOfTags + tblRsp.numOfColumns) * sizeof(SSchemaExt));
ASSERT(NULL != tblRsp.pSchemaExt);
2022-10-27 11:33:00 +00:00
SSchema *s = NULL;
s = &tblRsp.pSchemas[0];
s->type = TSDB_DATA_TYPE_TIMESTAMP;
s->colId = 1;
s->bytes = 8;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "ts");
2022-10-27 11:33:00 +00:00
s = &tblRsp.pSchemas[1];
s->type = TSDB_DATA_TYPE_INT;
s->colId = 2;
s->bytes = 4;
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(s->name, "col1");
2022-10-27 11:33:00 +00:00
int32_t contLen = tSerializeSTableCfgRsp(NULL, 0, &tblRsp);
2024-07-19 05:46:35 +00:00
ASSERT(contLen > 0);
2022-10-27 11:33:00 +00:00
void *pReq = rpcMallocCont(contLen);
2024-07-19 05:46:35 +00:00
ASSERT(pReq != NULL);
contLen = tSerializeSTableCfgRsp(pReq, contLen, &tblRsp);
ASSERT(contLen > 0);
2022-10-27 11:33:00 +00:00
pRsp->code = 0;
pRsp->contLen = contLen;
pRsp->pCont = pReq;
tFreeSTableCfgRsp(&tblRsp);
}
void ctgTestRspTableIndex(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
2023-04-10 02:53:29 +00:00
2022-10-27 11:33:00 +00:00
static int32_t idx = 1;
STableIndexRsp tblRsp = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(tblRsp.tbName, ctgTestSTablename);
2022-10-27 11:33:00 +00:00
tblRsp.pIndex = taosArrayInit(ctgTestIndexNum, sizeof(STableIndexInfo));
2024-07-19 05:46:35 +00:00
ASSERT(NULL != tblRsp.pIndex);
2022-10-27 11:33:00 +00:00
STableIndexInfo info = {0};
for (int32_t i = 0; i < ctgTestIndexNum; ++i) {
info.interval = 1 + i;
2023-04-10 02:53:29 +00:00
info.expr = (char *)taosMemoryCalloc(1, 10);
2024-07-19 05:46:35 +00:00
ASSERT(NULL != taosArrayPush(tblRsp.pIndex, &info));
2022-10-27 11:33:00 +00:00
}
2023-04-10 02:53:29 +00:00
2022-10-27 11:33:00 +00:00
int32_t contLen = tSerializeSTableIndexRsp(NULL, 0, &tblRsp);
2024-07-19 05:46:35 +00:00
ASSERT(contLen > 0);
2022-10-27 11:33:00 +00:00
void *pReq = rpcMallocCont(contLen);
2024-07-19 05:46:35 +00:00
ASSERT(pReq != NULL);
contLen = tSerializeSTableIndexRsp(pReq, contLen, &tblRsp);
ASSERT(contLen > 0);
2022-10-27 11:33:00 +00:00
pRsp->code = 0;
pRsp->contLen = contLen;
pRsp->pCont = pReq;
tFreeSTableIndexRsp(&tblRsp);
}
2022-10-28 03:44:06 +00:00
void ctgTestRspDBCfg(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
2023-04-10 02:53:29 +00:00
2022-10-28 03:44:06 +00:00
static int32_t idx = 1;
SDbCfgRsp dbRsp = {0};
dbRsp.numOfVgroups = ctgTestVgNum;
2023-04-10 02:53:29 +00:00
2022-10-28 03:44:06 +00:00
int32_t contLen = tSerializeSDbCfgRsp(NULL, 0, &dbRsp);
2024-07-19 05:46:35 +00:00
ASSERT(contLen > 0);
2022-10-28 03:44:06 +00:00
void *pReq = rpcMallocCont(contLen);
2024-07-19 05:46:35 +00:00
ASSERT(pReq != NULL);
contLen = tSerializeSDbCfgRsp(pReq, contLen, &dbRsp);
ASSERT(contLen > 0);
2022-10-28 03:44:06 +00:00
pRsp->code = 0;
pRsp->contLen = contLen;
pRsp->pCont = pReq;
}
void ctgTestRspQnodeList(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
SQnodeListRsp qlistRsp = {0};
qlistRsp.qnodeList = taosArrayInit(10, sizeof(SQueryNodeLoad));
for (int32_t i = 0; i < ctgTestQnodeNum; ++i) {
SQueryNodeLoad nodeLoad = {0};
nodeLoad.addr.nodeId = i;
2023-04-10 02:53:29 +00:00
2024-07-19 05:46:35 +00:00
ASSERT(NULL != taosArrayPush(qlistRsp.qnodeList, &nodeLoad));
2022-10-28 03:44:06 +00:00
}
2024-07-19 05:46:35 +00:00
int32_t contLen = tSerializeSQnodeListRsp(NULL, 0, &qlistRsp);
ASSERT(contLen > 0);
void *pReq = rpcMallocCont(contLen);
ASSERT(pReq != NULL);
contLen = tSerializeSQnodeListRsp(pReq, contLen, &qlistRsp);
ASSERT(contLen > 0);
2022-10-28 03:44:06 +00:00
pRsp->code = 0;
2024-07-19 05:46:35 +00:00
pRsp->contLen = contLen;
2022-10-28 03:44:06 +00:00
pRsp->pCont = pReq;
tFreeSQnodeListRsp(&qlistRsp);
}
void ctgTestRspUdfInfo(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
SRetrieveFuncRsp funcRsp = {0};
funcRsp.numOfFuncs = 1;
funcRsp.pFuncInfos = taosArrayInit(1, sizeof(SFuncInfo));
funcRsp.pFuncExtraInfos = taosArrayInit(1, sizeof(SFuncExtraInfo));
2022-10-28 03:44:06 +00:00
SFuncInfo funcInfo = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(funcInfo.name, "func1");
2022-10-28 03:44:06 +00:00
funcInfo.funcType = ctgTestFuncType;
2023-04-10 02:53:29 +00:00
2024-07-19 05:46:35 +00:00
ASSERT(NULL != taosArrayPush(funcRsp.pFuncInfos, &funcInfo));
2023-04-09 22:45:26 +00:00
SFuncExtraInfo extraInfo = {0};
extraInfo.funcVersion = 0;
extraInfo.funcCreatedTime = taosGetTimestampMs();
2024-07-19 05:46:35 +00:00
ASSERT(NULL != taosArrayPush(funcRsp.pFuncExtraInfos, &extraInfo));
2024-07-19 05:46:35 +00:00
int32_t contLen = tSerializeSRetrieveFuncRsp(NULL, 0, &funcRsp);
ASSERT(contLen > 0);
void *pReq = rpcMallocCont(contLen);
ASSERT(pReq != NULL);
contLen = tSerializeSRetrieveFuncRsp(pReq, contLen, &funcRsp);
ASSERT(contLen > 0);
2022-10-28 03:44:06 +00:00
pRsp->code = 0;
2024-07-19 05:46:35 +00:00
pRsp->contLen = contLen;
2022-10-28 03:44:06 +00:00
pRsp->pCont = pReq;
tFreeSRetrieveFuncRsp(&funcRsp);
}
void ctgTestRspSvrVer(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
SServerVerRsp verRsp = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(verRsp.ver, "1.0");
2023-04-10 02:53:29 +00:00
2024-07-19 05:46:35 +00:00
int32_t contLen = tSerializeSServerVerRsp(NULL, 0, &verRsp);
ASSERT(contLen > 0);
void *pReq = rpcMallocCont(contLen);
ASSERT(pReq != NULL);
contLen = tSerializeSServerVerRsp(pReq, contLen, &verRsp);
ASSERT(contLen > 0);
2022-10-28 03:44:06 +00:00
pRsp->code = 0;
2024-07-19 05:46:35 +00:00
pRsp->contLen = contLen;
2022-10-28 03:44:06 +00:00
pRsp->pCont = pReq;
}
2022-10-29 10:34:42 +00:00
void ctgTestRspDndeList(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
rpcFreeCont(pMsg->pCont);
SDnodeListRsp dRsp = {0};
dRsp.dnodeList = taosArrayInit(1, sizeof(SEpSet));
2024-07-19 05:46:35 +00:00
ASSERT(dRsp.dnodeList != NULL);
2022-10-29 10:34:42 +00:00
SEpSet epSet = {0};
epSet.numOfEps = 1;
tstrncpy(epSet.eps[0].fqdn, "localhost", TSDB_FQDN_LEN);
epSet.eps[0].port = 6030;
2023-04-10 02:53:29 +00:00
2024-07-19 05:46:35 +00:00
ASSERT(NULL != taosArrayPush(dRsp.dnodeList, &epSet));
2023-04-10 02:53:29 +00:00
2024-07-19 05:46:35 +00:00
int32_t contLen = tSerializeSDnodeListRsp(NULL, 0, &dRsp);
ASSERT(contLen > 0);
void *pReq = rpcMallocCont(contLen);
ASSERT(pReq != NULL);
contLen = tSerializeSDnodeListRsp(pReq, contLen, &dRsp);
ASSERT(contLen > 0);
2022-10-29 10:34:42 +00:00
pRsp->code = 0;
2024-07-19 05:46:35 +00:00
pRsp->contLen = contLen;
2022-10-29 10:34:42 +00:00
pRsp->pCont = pReq;
tFreeSDnodeListRsp(&dRsp);
}
2022-10-27 11:33:00 +00:00
void ctgTestRspAuto(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
switch (pMsg->msgType) {
case TDMT_MND_USE_DB:
ctgTestRspDbVgroups(shandle, pEpSet, pMsg, pRsp);
break;
case TDMT_VND_TABLE_CFG:
case TDMT_MND_TABLE_CFG:
ctgTestRspTableCfg(shandle, pEpSet, pMsg, pRsp);
break;
case TDMT_MND_GET_TABLE_INDEX:
ctgTestRspTableIndex(shandle, pEpSet, pMsg, pRsp);
break;
2022-10-28 03:44:06 +00:00
case TDMT_MND_GET_DB_CFG:
ctgTestRspDBCfg(shandle, pEpSet, pMsg, pRsp);
break;
case TDMT_MND_QNODE_LIST:
2023-04-10 02:53:29 +00:00
ctgTestRspQnodeList(shandle, pEpSet, pMsg, pRsp);
2022-10-28 03:44:06 +00:00
break;
case TDMT_MND_RETRIEVE_FUNC:
ctgTestRspUdfInfo(shandle, pEpSet, pMsg, pRsp);
break;
case TDMT_MND_SERVER_VERSION:
ctgTestRspSvrVer(shandle, pEpSet, pMsg, pRsp);
break;
2022-10-29 10:34:42 +00:00
case TDMT_MND_DNODE_LIST:
ctgTestRspDndeList(shandle, pEpSet, pMsg, pRsp);
break;
2022-10-27 11:33:00 +00:00
default:
break;
}
return;
}
2024-07-19 05:46:35 +00:00
int32_t ctgTestRspByIdx(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
2022-02-12 12:03:42 +00:00
switch (ctgTestRspFunc[ctgTestRspIdx]) {
case CTGT_RSP_VGINFO:
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgTestRspDbVgroups(shandle, pEpSet, pMsg, pRsp));
2022-02-12 12:03:42 +00:00
break;
case CTGT_RSP_TBMETA:
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgTestRspTableMeta(shandle, pEpSet, pMsg, pRsp));
2022-02-12 12:03:42 +00:00
break;
case CTGT_RSP_CTBMETA:
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgTestRspCTableMeta(shandle, pEpSet, pMsg, pRsp));
2022-02-12 12:03:42 +00:00
break;
case CTGT_RSP_STBMETA:
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgTestRspSTableMeta(shandle, pEpSet, pMsg, pRsp));
2022-02-12 12:03:42 +00:00
break;
case CTGT_RSP_MSTBMETA:
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgTestRspMultiSTableMeta(shandle, pEpSet, pMsg, pRsp));
2022-02-12 12:03:42 +00:00
break;
2022-10-26 11:25:12 +00:00
case CTGT_RSP_INDEXINFO_E:
ctgTestRspErrIndexInfo(shandle, pEpSet, pMsg, pRsp);
break;
2022-10-27 11:33:00 +00:00
case CTGT_RSP_USERAUTH:
ctgTestRspUserAuth(shandle, pEpSet, pMsg, pRsp);
break;
case CTGT_RSP_TBLCFG:
ctgTestRspTableCfg(shandle, pEpSet, pMsg, pRsp);
break;
2022-03-03 01:09:11 +00:00
case CTGT_RSP_TBMETA_NOT_EXIST:
ctgTestRspTableMetaNotExist(shandle, pEpSet, pMsg, pRsp);
break;
2022-10-27 11:33:00 +00:00
case CTGT_RSP_TBLINDEX:
ctgTestRspTableIndex(shandle, pEpSet, pMsg, pRsp);
break;
2022-10-28 03:44:06 +00:00
case CTGT_RSP_DBCFG:
ctgTestRspDBCfg(shandle, pEpSet, pMsg, pRsp);
break;
case CTGT_RSP_QNODELIST:
ctgTestRspQnodeList(shandle, pEpSet, pMsg, pRsp);
break;
case CTGT_RSP_UDF:
ctgTestRspUdfInfo(shandle, pEpSet, pMsg, pRsp);
break;
case CTGT_RSP_SVRVER:
ctgTestRspSvrVer(shandle, pEpSet, pMsg, pRsp);
break;
2022-10-29 10:34:42 +00:00
case CTGT_RSP_DNODElIST:
ctgTestRspDndeList(shandle, pEpSet, pMsg, pRsp);
break;
2022-02-12 12:03:42 +00:00
default:
2022-10-27 11:33:00 +00:00
ctgTestRspAuto(shandle, pEpSet, pMsg, pRsp);
2022-02-12 12:03:42 +00:00
break;
}
ctgTestRspIdx++;
2022-01-21 10:19:40 +00:00
2024-07-19 05:46:35 +00:00
return 0;
2021-12-25 13:29:42 +00:00
}
2024-07-19 05:46:35 +00:00
int32_t ctgTestRspDbVgroupsAndNormalMeta(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
ASSERT(0 == ctgTestRspDbVgroups(shandle, pEpSet, pMsg, pRsp));
2022-02-12 12:03:42 +00:00
ctgTestSetRspTableMeta();
2022-01-21 10:19:40 +00:00
2024-07-19 05:46:35 +00:00
return 0;
2021-12-25 13:29:42 +00:00
}
2024-07-19 05:46:35 +00:00
int32_t ctgTestRspDbVgroupsAndChildMeta(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
ASSERT(0 == ctgTestRspDbVgroups(shandle, pEpSet, pMsg, pRsp));
2022-01-21 10:19:40 +00:00
2022-02-12 12:03:42 +00:00
ctgTestSetRspCTableMeta();
2022-01-21 10:19:40 +00:00
2024-07-19 05:46:35 +00:00
return 0;
2021-12-25 13:29:42 +00:00
}
2024-07-19 05:46:35 +00:00
int32_t ctgTestRspDbVgroupsAndSuperMeta(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
ASSERT(0 == ctgTestRspDbVgroups(shandle, pEpSet, pMsg, pRsp));
2022-01-21 10:19:40 +00:00
2022-02-12 12:03:42 +00:00
ctgTestSetRspSTableMeta();
2022-01-21 10:19:40 +00:00
2024-07-19 05:46:35 +00:00
return 0;
2022-01-07 06:38:05 +00:00
}
2024-07-19 05:46:35 +00:00
int32_t ctgTestRspDbVgroupsAndMultiSuperMeta(void *shandle, SEpSet *pEpSet, SRpcMsg *pMsg, SRpcMsg *pRsp) {
ASSERT(0 == ctgTestRspDbVgroups(shandle, pEpSet, pMsg, pRsp));
2022-01-21 10:19:40 +00:00
2022-02-12 12:03:42 +00:00
ctgTestSetRspMultiSTableMeta();
2022-01-21 10:19:40 +00:00
2024-07-19 05:46:35 +00:00
return 0;
2022-01-07 06:38:05 +00:00
}
2022-02-12 12:03:42 +00:00
void ctgTestSetRspDbVgroups() {
2021-12-25 04:27:46 +00:00
static Stub stub;
2022-02-12 12:03:42 +00:00
stub.set(rpcSendRecv, ctgTestRspDbVgroups);
stub.set(rpcSendRecvWithTimeout, ctgTestRspDbVgroups);
2021-12-25 04:27:46 +00:00
{
2022-04-22 01:54:27 +00:00
#ifdef WINDOWS
2022-10-13 05:41:36 +00:00
AddrAny any;
std::map<std::string, void *> result;
2022-04-22 01:54:27 +00:00
any.get_func_addr("rpcSendRecv", result);
any.get_func_addr("rpcSendRecvWithTimeout", result);
2022-04-22 01:54:27 +00:00
#endif
#ifdef LINUX
2022-01-21 10:19:40 +00:00
AddrAny any("libtransport.so");
std::map<std::string, void *> result;
2021-12-25 04:27:46 +00:00
any.get_global_func_addr_dynsym("^rpcSendRecv$", result);
any.get_global_func_addr_dynsym("^rpcSendRecvWithTimeout$", result);
2022-04-22 01:54:27 +00:00
#endif
2022-01-21 10:19:40 +00:00
for (const auto &f : result) {
2022-02-12 12:03:42 +00:00
stub.set(f.second, ctgTestRspDbVgroups);
2021-12-25 04:27:46 +00:00
}
}
}
2022-02-12 12:03:42 +00:00
void ctgTestSetRspTableMeta() {
2021-12-25 04:27:46 +00:00
static Stub stub;
2022-02-12 12:03:42 +00:00
stub.set(rpcSendRecv, ctgTestRspTableMeta);
stub.set(rpcSendRecvWithTimeout, ctgTestRspTableMeta);
2021-12-25 04:27:46 +00:00
{
2022-04-22 01:54:27 +00:00
#ifdef WINDOWS
2022-10-13 05:41:36 +00:00
AddrAny any;
std::map<std::string, void *> result;
2022-04-22 01:54:27 +00:00
any.get_func_addr("rpcSendRecv", result);
any.get_func_addr("rpcSendRecvWithTimeout", result);
2022-04-22 01:54:27 +00:00
#endif
#ifdef LINUX
2022-01-21 10:19:40 +00:00
AddrAny any("libtransport.so");
std::map<std::string, void *> result;
2021-12-25 04:27:46 +00:00
any.get_global_func_addr_dynsym("^rpcSendRecv$", result);
any.get_global_func_addr_dynsym("^rpcSendRecvWithTimeout$", result);
2022-04-22 01:54:27 +00:00
#endif
2022-01-21 10:19:40 +00:00
for (const auto &f : result) {
2022-02-12 12:03:42 +00:00
stub.set(f.second, ctgTestRspTableMeta);
2021-12-25 04:27:46 +00:00
}
}
}
2022-02-12 12:03:42 +00:00
void ctgTestSetRspCTableMeta() {
2021-12-25 04:27:46 +00:00
static Stub stub;
2022-02-12 12:03:42 +00:00
stub.set(rpcSendRecv, ctgTestRspCTableMeta);
stub.set(rpcSendRecvWithTimeout, ctgTestRspCTableMeta);
2021-12-25 04:27:46 +00:00
{
2022-04-22 01:54:27 +00:00
#ifdef WINDOWS
2022-10-13 05:41:36 +00:00
AddrAny any;
std::map<std::string, void *> result;
2022-04-22 01:54:27 +00:00
any.get_func_addr("rpcSendRecv", result);
any.get_func_addr("rpcSendRecvWithTimeout", result);
2022-04-22 01:54:27 +00:00
#endif
#ifdef LINUX
2022-01-21 10:19:40 +00:00
AddrAny any("libtransport.so");
std::map<std::string, void *> result;
2021-12-25 04:27:46 +00:00
any.get_global_func_addr_dynsym("^rpcSendRecv$", result);
any.get_global_func_addr_dynsym("^rpcSendRecvWithTimeout$", result);
2022-04-22 01:54:27 +00:00
#endif
2022-01-21 10:19:40 +00:00
for (const auto &f : result) {
2022-02-12 12:03:42 +00:00
stub.set(f.second, ctgTestRspCTableMeta);
2021-12-25 04:27:46 +00:00
}
}
}
2022-02-12 12:03:42 +00:00
void ctgTestSetRspSTableMeta() {
2021-12-25 04:27:46 +00:00
static Stub stub;
2022-02-12 12:03:42 +00:00
stub.set(rpcSendRecv, ctgTestRspSTableMeta);
stub.set(rpcSendRecvWithTimeout, ctgTestRspSTableMeta);
2021-12-25 04:27:46 +00:00
{
2022-04-22 01:54:27 +00:00
#ifdef WINDOWS
2022-10-13 05:41:36 +00:00
AddrAny any;
std::map<std::string, void *> result;
2022-04-22 01:54:27 +00:00
any.get_func_addr("rpcSendRecv", result);
any.get_func_addr("rpcSendRecvWithTimeout", result);
2022-04-22 01:54:27 +00:00
#endif
#ifdef LINUX
2022-01-21 10:19:40 +00:00
AddrAny any("libtransport.so");
std::map<std::string, void *> result;
2021-12-25 04:27:46 +00:00
any.get_global_func_addr_dynsym("^rpcSendRecv$", result);
any.get_global_func_addr_dynsym("^rpcSendRecvWithTimeout$", result);
2022-04-22 01:54:27 +00:00
#endif
2022-01-21 10:19:40 +00:00
for (const auto &f : result) {
2022-02-12 12:03:42 +00:00
stub.set(f.second, ctgTestRspSTableMeta);
2021-12-25 04:27:46 +00:00
}
}
}
2022-02-12 12:03:42 +00:00
void ctgTestSetRspMultiSTableMeta() {
2022-01-07 06:38:05 +00:00
static Stub stub;
2022-02-12 12:03:42 +00:00
stub.set(rpcSendRecv, ctgTestRspMultiSTableMeta);
stub.set(rpcSendRecvWithTimeout, ctgTestRspMultiSTableMeta);
2022-01-07 06:38:05 +00:00
{
2022-04-22 01:54:27 +00:00
#ifdef WINDOWS
2022-10-13 05:41:36 +00:00
AddrAny any;
std::map<std::string, void *> result;
2022-04-22 01:54:27 +00:00
any.get_func_addr("rpcSendRecv", result);
any.get_func_addr("rpcSendRecvWithTimeout", result);
2022-04-22 01:54:27 +00:00
#endif
#ifdef LINUX
2022-01-21 10:19:40 +00:00
AddrAny any("libtransport.so");
std::map<std::string, void *> result;
2022-01-07 06:38:05 +00:00
any.get_global_func_addr_dynsym("^rpcSendRecv$", result);
any.get_global_func_addr_dynsym("^rpcSendRecvWithTimeout$", result);
2022-04-22 01:54:27 +00:00
#endif
2022-01-21 10:19:40 +00:00
for (const auto &f : result) {
2022-02-12 12:03:42 +00:00
stub.set(f.second, ctgTestRspMultiSTableMeta);
2022-01-07 06:38:05 +00:00
}
}
}
2022-02-12 12:03:42 +00:00
void ctgTestSetRspByIdx() {
2022-01-07 06:38:05 +00:00
static Stub stub;
2022-02-12 12:03:42 +00:00
stub.set(rpcSendRecv, ctgTestRspByIdx);
stub.set(rpcSendRecvWithTimeout, ctgTestRspByIdx);
2022-01-07 06:38:05 +00:00
{
2022-04-22 01:54:27 +00:00
#ifdef WINDOWS
2022-10-13 05:41:36 +00:00
AddrAny any;
std::map<std::string, void *> result;
2022-04-22 01:54:27 +00:00
any.get_func_addr("rpcSendRecv", result);
any.get_func_addr("rpcSendRecvWithTimeout", result);
2022-04-22 01:54:27 +00:00
#endif
#ifdef LINUX
2022-01-21 10:19:40 +00:00
AddrAny any("libtransport.so");
std::map<std::string, void *> result;
2022-01-07 06:38:05 +00:00
any.get_global_func_addr_dynsym("^rpcSendRecv$", result);
any.get_global_func_addr_dynsym("^rpcSendRecvWithTimeout$", result);
2022-04-22 01:54:27 +00:00
#endif
2022-01-21 10:19:40 +00:00
for (const auto &f : result) {
2022-02-12 12:03:42 +00:00
stub.set(f.second, ctgTestRspByIdx);
2022-01-07 06:38:05 +00:00
}
}
}
2022-02-12 12:03:42 +00:00
void ctgTestSetRspDbVgroupsAndNormalMeta() {
2021-12-25 13:29:42 +00:00
static Stub stub;
2022-02-12 12:03:42 +00:00
stub.set(rpcSendRecv, ctgTestRspDbVgroupsAndNormalMeta);
stub.set(rpcSendRecvWithTimeout, ctgTestRspDbVgroupsAndNormalMeta);
2021-12-25 13:29:42 +00:00
{
2022-04-22 01:54:27 +00:00
#ifdef WINDOWS
2022-10-13 05:41:36 +00:00
AddrAny any;
std::map<std::string, void *> result;
2022-04-22 01:54:27 +00:00
any.get_func_addr("rpcSendRecv", result);
any.get_func_addr("rpcSendRecvWithTimeout", result);
2022-04-22 01:54:27 +00:00
#endif
#ifdef LINUX
2022-01-21 10:19:40 +00:00
AddrAny any("libtransport.so");
std::map<std::string, void *> result;
2021-12-25 13:29:42 +00:00
any.get_global_func_addr_dynsym("^rpcSendRecv$", result);
any.get_global_func_addr_dynsym("^rpcSendRecvWithTimeout$", result);
2022-04-22 01:54:27 +00:00
#endif
2022-01-21 10:19:40 +00:00
for (const auto &f : result) {
2022-02-12 12:03:42 +00:00
stub.set(f.second, ctgTestRspDbVgroupsAndNormalMeta);
2021-12-25 13:29:42 +00:00
}
}
}
2022-02-12 12:03:42 +00:00
void ctgTestSetRspDbVgroupsAndChildMeta() {
2021-12-23 09:42:40 +00:00
static Stub stub;
2022-02-12 12:03:42 +00:00
stub.set(rpcSendRecv, ctgTestRspDbVgroupsAndChildMeta);
stub.set(rpcSendRecvWithTimeout, ctgTestRspDbVgroupsAndChildMeta);
2021-12-23 09:42:40 +00:00
{
2022-04-22 01:54:27 +00:00
#ifdef WINDOWS
2022-10-13 05:41:36 +00:00
AddrAny any;
std::map<std::string, void *> result;
2022-04-22 01:54:27 +00:00
any.get_func_addr("rpcSendRecv", result);
any.get_func_addr("rpcSendRecvWithTimeout", result);
2022-04-22 01:54:27 +00:00
#endif
#ifdef LINUX
2022-01-21 10:19:40 +00:00
AddrAny any("libtransport.so");
std::map<std::string, void *> result;
2021-12-23 09:42:40 +00:00
any.get_global_func_addr_dynsym("^rpcSendRecv$", result);
any.get_global_func_addr_dynsym("^rpcSendRecvWithTimeout$", result);
2022-04-22 01:54:27 +00:00
#endif
2022-01-21 10:19:40 +00:00
for (const auto &f : result) {
2022-02-12 12:03:42 +00:00
stub.set(f.second, ctgTestRspDbVgroupsAndChildMeta);
2021-12-25 04:27:46 +00:00
}
}
}
2022-02-12 12:03:42 +00:00
void ctgTestSetRspDbVgroupsAndSuperMeta() {
2021-12-25 04:27:46 +00:00
static Stub stub;
2022-02-12 12:03:42 +00:00
stub.set(rpcSendRecv, ctgTestRspDbVgroupsAndSuperMeta);
stub.set(rpcSendRecvWithTimeout, ctgTestRspDbVgroupsAndSuperMeta);
2021-12-25 04:27:46 +00:00
{
2022-04-22 01:54:27 +00:00
#ifdef WINDOWS
2022-10-13 05:41:36 +00:00
AddrAny any;
std::map<std::string, void *> result;
2022-04-22 01:54:27 +00:00
any.get_func_addr("rpcSendRecv", result);
any.get_func_addr("rpcSendRecvWithTimeout", result);
2022-04-22 01:54:27 +00:00
#endif
#ifdef LINUX
2022-01-21 10:19:40 +00:00
AddrAny any("libtransport.so");
std::map<std::string, void *> result;
2021-12-25 04:27:46 +00:00
any.get_global_func_addr_dynsym("^rpcSendRecv$", result);
any.get_global_func_addr_dynsym("^rpcSendRecvWithTimeout$", result);
2022-04-22 01:54:27 +00:00
#endif
2022-01-21 10:19:40 +00:00
for (const auto &f : result) {
2022-02-12 12:03:42 +00:00
stub.set(f.second, ctgTestRspDbVgroupsAndSuperMeta);
2021-12-23 09:42:40 +00:00
}
}
}
2022-02-12 12:03:42 +00:00
void ctgTestSetRspDbVgroupsAndMultiSuperMeta() {
2022-01-07 06:38:05 +00:00
static Stub stub;
2022-02-12 12:03:42 +00:00
stub.set(rpcSendRecv, ctgTestRspDbVgroupsAndMultiSuperMeta);
stub.set(rpcSendRecvWithTimeout, ctgTestRspDbVgroupsAndMultiSuperMeta);
2022-01-07 06:38:05 +00:00
{
2022-04-22 01:54:27 +00:00
#ifdef WINDOWS
2022-10-13 05:41:36 +00:00
AddrAny any;
std::map<std::string, void *> result;
2022-04-22 01:54:27 +00:00
any.get_func_addr("rpcSendRecv", result);
any.get_func_addr("rpcSendRecvWithTimeout", result);
2022-04-22 01:54:27 +00:00
#endif
#ifdef LINUX
2022-01-21 10:19:40 +00:00
AddrAny any("libtransport.so");
std::map<std::string, void *> result;
2022-01-07 06:38:05 +00:00
any.get_global_func_addr_dynsym("^rpcSendRecv$", result);
any.get_global_func_addr_dynsym("^rpcSendRecvWithTimeout$", result);
2022-04-22 01:54:27 +00:00
#endif
2022-01-21 10:19:40 +00:00
for (const auto &f : result) {
2022-02-12 12:03:42 +00:00
stub.set(f.second, ctgTestRspDbVgroupsAndMultiSuperMeta);
2022-01-07 06:38:05 +00:00
}
}
}
2022-01-21 10:19:40 +00:00
} // namespace
2021-12-31 03:23:44 +00:00
void *ctgTestGetDbVgroupThread(void *param) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = (struct SCatalog *)param;
int32_t code = 0;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SArray *vgList = NULL;
int32_t n = 0;
2022-01-21 10:19:40 +00:00
2021-12-31 03:23:44 +00:00
while (!ctgTestStop) {
code = catalogGetDBVgList(pCtg, mockPointer, ctgTestDbname, &vgList);
2021-12-31 03:23:44 +00:00
if (code) {
2024-07-19 05:46:35 +00:00
(void)printf("code:%x\n", code);
TD_ALWAYS_ASSERT(0);
2021-12-31 03:23:44 +00:00
}
if (vgList) {
taosArrayDestroy(vgList);
}
if (ctgTestEnableSleep) {
2022-03-10 03:56:11 +00:00
taosUsleep(taosRand() % 5);
2021-12-31 03:23:44 +00:00
}
2022-01-06 07:30:32 +00:00
if (++n % ctgTestPrintNum == 0) {
2024-07-19 05:46:35 +00:00
(void)printf("Get:%d\n", n);
2021-12-31 03:23:44 +00:00
}
}
return NULL;
}
2022-02-09 02:56:22 +00:00
void *ctgTestSetSameDbVgroupThread(void *param) {
2022-01-21 10:19:40 +00:00
struct SCatalog *pCtg = (struct SCatalog *)param;
int32_t code = 0;
2022-02-11 11:52:07 +00:00
SDBVgInfo *dbVgroup = NULL;
2022-01-21 10:19:40 +00:00
int32_t n = 0;
2021-12-31 03:23:44 +00:00
while (!ctgTestStop) {
ctgTestBuildDBVgroup(&dbVgroup);
2022-02-11 11:52:07 +00:00
code = catalogUpdateDBVgInfo(pCtg, ctgTestDbname, ctgTestDbId, dbVgroup);
2021-12-31 03:23:44 +00:00
if (code) {
TD_ALWAYS_ASSERT(0);
2021-12-31 03:23:44 +00:00
}
2022-01-21 10:19:40 +00:00
if (ctgTestEnableSleep) {
2022-03-10 03:56:11 +00:00
taosUsleep(taosRand() % 5);
2021-12-31 03:23:44 +00:00
}
2022-01-06 07:30:32 +00:00
if (++n % ctgTestPrintNum == 0) {
2024-07-19 05:46:35 +00:00
(void)printf("Set:%d\n", n);
2021-12-31 03:23:44 +00:00
}
}
return NULL;
}
2022-02-09 02:56:22 +00:00
void *ctgTestSetDiffDbVgroupThread(void *param) {
struct SCatalog *pCtg = (struct SCatalog *)param;
int32_t code = 0;
2022-10-13 05:41:36 +00:00
SDBVgInfo *dbVgroup = NULL;
2022-02-09 02:56:22 +00:00
int32_t n = 0;
while (!ctgTestStop) {
ctgTestBuildDBVgroup(&dbVgroup);
2022-02-11 11:52:07 +00:00
code = catalogUpdateDBVgInfo(pCtg, ctgTestDbname, ctgTestDbId++, dbVgroup);
2022-02-09 02:56:22 +00:00
if (code) {
TD_ALWAYS_ASSERT(0);
2022-02-09 02:56:22 +00:00
}
if (ctgTestEnableSleep) {
2022-03-10 03:56:11 +00:00
taosUsleep(taosRand() % 5);
2022-02-09 02:56:22 +00:00
}
if (++n % ctgTestPrintNum == 0) {
2024-07-19 05:46:35 +00:00
(void)printf("Set:%d\n", n);
2022-02-09 02:56:22 +00:00
}
}
return NULL;
}
2021-12-31 03:23:44 +00:00
void *ctgTestGetCtableMetaThread(void *param) {
2022-01-21 10:19:40 +00:00
struct SCatalog *pCtg = (struct SCatalog *)param;
int32_t code = 0;
int32_t n = 0;
STableMeta *tbMeta = NULL;
2022-03-28 05:49:21 +00:00
bool inCache = false;
2021-12-31 03:23:44 +00:00
2022-10-13 05:41:36 +00:00
SName cn = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(cn.dbname, "db1");
TAOS_STRCPY(cn.tname, ctgTestCTablename);
2022-01-21 10:19:40 +00:00
2022-05-20 01:53:30 +00:00
SCtgTbMetaCtx ctx = {0};
ctx.pName = &cn;
ctx.flag = CTG_FLAG_UNKNOWN_STB;
2021-12-31 03:23:44 +00:00
while (!ctgTestStop) {
2022-05-20 01:53:30 +00:00
code = ctgReadTbMetaFromCache(pCtg, &ctx, &tbMeta);
2022-10-25 08:21:39 +00:00
if (code || NULL == tbMeta) {
TD_ALWAYS_ASSERT(0);
2021-12-31 03:23:44 +00:00
}
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tbMeta);
2021-12-31 06:26:05 +00:00
2021-12-31 03:23:44 +00:00
if (ctgTestEnableSleep) {
2022-03-10 03:56:11 +00:00
taosUsleep(taosRand() % 5);
2021-12-31 03:23:44 +00:00
}
2022-01-21 10:19:40 +00:00
2022-01-06 07:30:32 +00:00
if (++n % ctgTestPrintNum == 0) {
2024-07-19 05:46:35 +00:00
(void)printf("Get:%d\n", n);
2021-12-31 03:23:44 +00:00
}
}
return NULL;
}
void *ctgTestSetCtableMetaThread(void *param) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = (struct SCatalog *)param;
int32_t code = 0;
SDBVgInfo dbVgroup = {0};
int32_t n = 0;
2022-02-12 12:03:42 +00:00
STableMetaOutput *output = NULL;
2021-12-31 03:23:44 +00:00
2022-05-27 14:38:02 +00:00
SCtgCacheOperation operation = {0};
2022-10-13 05:41:36 +00:00
2022-05-27 14:38:02 +00:00
operation.opId = CTG_OP_UPDATE_TB_META;
2022-01-21 10:19:40 +00:00
2021-12-31 03:23:44 +00:00
while (!ctgTestStop) {
2022-03-25 16:29:53 +00:00
output = (STableMetaOutput *)taosMemoryMalloc(sizeof(STableMetaOutput));
2024-07-19 05:46:35 +00:00
ASSERT(NULL != output);
2022-02-12 12:03:42 +00:00
ctgTestBuildCTableMetaOutput(output);
2022-06-11 12:39:16 +00:00
SCtgUpdateTbMetaMsg *msg = (SCtgUpdateTbMetaMsg *)taosMemoryMalloc(sizeof(SCtgUpdateTbMetaMsg));
2024-07-19 05:46:35 +00:00
ASSERT(NULL != msg);
2022-02-11 11:52:07 +00:00
msg->pCtg = pCtg;
2022-06-11 12:39:16 +00:00
msg->pMeta = output;
2022-05-27 14:38:02 +00:00
operation.data = msg;
2022-02-11 11:52:07 +00:00
2022-05-27 14:38:02 +00:00
code = ctgOpUpdateTbMeta(&operation);
2021-12-31 03:23:44 +00:00
if (code) {
TD_ALWAYS_ASSERT(0);
2021-12-31 03:23:44 +00:00
}
2022-01-21 10:19:40 +00:00
if (ctgTestEnableSleep) {
2022-03-10 03:56:11 +00:00
taosUsleep(taosRand() % 5);
2021-12-31 03:23:44 +00:00
}
2022-01-06 07:30:32 +00:00
if (++n % ctgTestPrintNum == 0) {
2024-07-19 05:46:35 +00:00
(void)printf("Set:%d\n", n);
2021-12-31 03:23:44 +00:00
}
}
return NULL;
}
2022-11-02 07:18:32 +00:00
void ctgTestFetchRows(TAOS_RES *result, int32_t *rows) {
TAOS_ROW row;
int num_fields = taos_num_fields(result);
TAOS_FIELD *fields = taos_fetch_fields(result);
char temp[256];
// fetch the records row by row
while ((row = taos_fetch_row(result))) {
(*rows)++;
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(temp, 0, sizeof(temp));
(void)taos_print_row(temp, row, fields, num_fields);
(void)printf("\t[%s]\n", temp);
2022-11-02 07:18:32 +00:00
}
}
2023-04-10 02:53:29 +00:00
void ctgTestExecQuery(TAOS *taos, char *sql, bool fetch, int32_t *rows) {
2022-11-02 07:18:32 +00:00
TAOS_RES *result = taos_query(taos, sql);
2024-07-19 05:46:35 +00:00
ASSERT(NULL != result);
2023-04-10 02:53:29 +00:00
int code = taos_errno(result);
2022-11-02 07:18:32 +00:00
ASSERT_EQ(code, 0);
if (fetch) {
ctgTestFetchRows(result, rows);
}
2023-04-10 02:53:29 +00:00
2022-11-02 07:18:32 +00:00
taos_free_result(result);
}
2021-12-25 13:29:42 +00:00
TEST(tableMeta, normalTable) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
SVgroupInfo vgInfo = {0};
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-02-09 02:56:22 +00:00
ctgTestInitLogFile();
2022-02-12 12:03:42 +00:00
ctgTestSetRspDbVgroups();
2021-12-24 11:01:48 +00:00
initQueryModuleMsgHandle();
2021-12-16 10:50:21 +00:00
2022-01-21 10:19:40 +00:00
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
2021-12-16 08:23:25 +00:00
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
2021-12-24 11:01:48 +00:00
code = catalogGetHandle(ctgTestClusterId, &pCtg);
2021-12-16 08:23:25 +00:00
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2021-12-29 07:01:12 +00:00
2022-06-10 09:07:24 +00:00
code = catalogGetTableHashVgroup(pCtg, mockPointer, &n, &vgInfo);
2021-12-16 08:23:25 +00:00
ASSERT_EQ(code, 0);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(vgInfo.vgId, 8);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo.epSet.numOfEps, 3);
2021-12-25 04:27:46 +00:00
2022-10-27 11:33:00 +00:00
while (true) {
uint64_t n = 0;
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n));
2022-10-27 11:33:00 +00:00
if (n != 1) {
taosMsleep(50);
} else {
break;
}
2022-02-12 12:03:42 +00:00
}
2022-10-13 05:41:36 +00:00
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(&vgInfo, 0, sizeof(vgInfo));
2022-10-27 11:33:00 +00:00
bool exists = false;
2022-11-02 07:18:32 +00:00
code = catalogGetCachedTableHashVgroup(pCtg, &n, &vgInfo, &exists);
2022-10-27 11:33:00 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(vgInfo.vgId, 8);
ASSERT_EQ(vgInfo.epSet.numOfEps, 3);
ASSERT_EQ(exists, true);
2022-02-12 12:03:42 +00:00
ctgTestSetRspTableMeta();
2021-12-25 04:27:46 +00:00
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 8);
ASSERT_EQ(tableMeta->tableType, TSDB_NORMAL_TABLE);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestNormalTblUid - 1);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, 0);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
taosMemoryFree(tableMeta);
2022-02-14 05:08:29 +00:00
while (true) {
2022-03-26 10:10:26 +00:00
uint32_t n = ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM);
2022-02-14 05:08:29 +00:00
if (0 == n) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-02-14 05:08:29 +00:00
} else {
break;
}
2022-02-12 12:03:42 +00:00
}
2021-12-25 04:27:46 +00:00
tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 8);
ASSERT_EQ(tableMeta->tableType, TSDB_NORMAL_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, 0);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
taosMemoryFree(tableMeta);
2022-10-27 11:33:00 +00:00
tableMeta = NULL;
2024-07-19 05:46:35 +00:00
code = catalogGetCachedTableMeta(pCtg, &n, &tableMeta);
2022-10-27 11:33:00 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 8);
ASSERT_EQ(tableMeta->tableType, TSDB_NORMAL_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, 0);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2023-04-13 02:54:57 +00:00
SDbCacheInfo *dbs = NULL;
2022-06-13 02:38:45 +00:00
SSTableVersion *stb = NULL;
2022-10-13 05:41:36 +00:00
uint32_t dbNum = 0, stbNum = 0, allDbNum = 0, allStbNum = 0;
int32_t i = 0;
2022-01-06 07:30:32 +00:00
while (i < 5) {
++i;
code = catalogGetExpiredDBs(pCtg, &dbs, &dbNum);
ASSERT_EQ(code, 0);
code = catalogGetExpiredSTables(pCtg, &stb, &stbNum);
ASSERT_EQ(code, 0);
2022-01-21 10:19:40 +00:00
2022-01-06 07:30:32 +00:00
if (dbNum) {
2024-07-19 05:46:35 +00:00
(void)printf("got expired db,dbId:%" PRId64 "\n", dbs->dbId);
2022-03-25 16:29:53 +00:00
taosMemoryFree(dbs);
2022-01-06 07:30:32 +00:00
dbs = NULL;
} else {
2024-07-19 05:46:35 +00:00
(void)printf("no expired db\n");
2022-01-06 07:30:32 +00:00
}
if (stbNum) {
2024-07-19 05:46:35 +00:00
(void)printf("got expired stb,suid:%" PRId64 ",dbFName:%s, stbName:%s\n", stb->suid, stb->dbFName, stb->stbName);
2022-03-25 16:29:53 +00:00
taosMemoryFree(stb);
2022-01-06 07:30:32 +00:00
stb = NULL;
} else {
2024-07-19 05:46:35 +00:00
(void)printf("no expired stb\n");
2022-01-06 07:30:32 +00:00
}
allDbNum += dbNum;
allStbNum += stbNum;
2022-03-10 03:56:11 +00:00
taosSsleep(2);
2022-01-06 07:30:32 +00:00
}
2022-01-21 10:19:40 +00:00
2022-01-06 07:30:32 +00:00
ASSERT_EQ(allDbNum, 1);
ASSERT_EQ(allStbNum, 0);
2021-12-25 04:27:46 +00:00
catalogDestroy();
}
2021-12-25 13:29:42 +00:00
TEST(tableMeta, childTableCase) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
2021-12-25 04:27:46 +00:00
2022-02-09 03:28:38 +00:00
ctgTestInitLogFile();
2022-02-12 12:03:42 +00:00
ctgTestSetRspDbVgroupsAndChildMeta();
2021-12-25 04:27:46 +00:00
initQueryModuleMsgHandle();
2022-01-21 10:19:40 +00:00
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
2021-12-31 03:23:44 +00:00
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
2022-01-21 10:19:40 +00:00
2021-12-31 03:23:44 +00:00
code = catalogGetHandle(ctgTestClusterId, &pCtg);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestCTablename);
2021-12-25 04:27:46 +00:00
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 9);
ASSERT_EQ(tableMeta->tableType, TSDB_CHILD_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
taosMemoryFree(tableMeta);
2022-02-14 05:08:29 +00:00
while (true) {
2022-03-26 10:10:26 +00:00
uint32_t n = ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM);
2022-02-14 05:08:29 +00:00
if (0 == n) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-02-14 05:08:29 +00:00
} else {
break;
}
2022-02-12 12:03:42 +00:00
}
2021-12-25 04:27:46 +00:00
tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 9);
ASSERT_EQ(tableMeta->tableType, TSDB_CHILD_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2021-12-29 07:01:12 +00:00
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.tname, ctgTestSTablename);
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 0);
ASSERT_EQ(tableMeta->tableType, TSDB_SUPER_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
taosMemoryFree(tableMeta);
2023-04-13 02:54:57 +00:00
SDbCacheInfo *dbs = NULL;
2022-06-13 02:38:45 +00:00
SSTableVersion *stb = NULL;
2022-10-13 05:41:36 +00:00
uint32_t dbNum = 0, stbNum = 0, allDbNum = 0, allStbNum = 0;
int32_t i = 0;
2022-01-06 07:30:32 +00:00
while (i < 5) {
++i;
code = catalogGetExpiredDBs(pCtg, &dbs, &dbNum);
ASSERT_EQ(code, 0);
code = catalogGetExpiredSTables(pCtg, &stb, &stbNum);
ASSERT_EQ(code, 0);
2022-01-21 10:19:40 +00:00
2022-01-06 07:30:32 +00:00
if (dbNum) {
2024-07-19 05:46:35 +00:00
(void)printf("got expired db,dbId:%" PRId64 "\n", dbs->dbId);
2022-03-25 16:29:53 +00:00
taosMemoryFree(dbs);
2022-01-06 07:30:32 +00:00
dbs = NULL;
} else {
2024-07-19 05:46:35 +00:00
(void)printf("no expired db\n");
2022-01-06 07:30:32 +00:00
}
if (stbNum) {
2024-07-19 05:46:35 +00:00
(void)printf("got expired stb,suid:%" PRId64 ",dbFName:%s, stbName:%s\n", stb->suid, stb->dbFName, stb->stbName);
2022-03-25 16:29:53 +00:00
taosMemoryFree(stb);
2022-01-06 07:30:32 +00:00
stb = NULL;
} else {
2024-07-19 05:46:35 +00:00
(void)printf("no expired stb\n");
2022-01-06 07:30:32 +00:00
}
allDbNum += dbNum;
allStbNum += stbNum;
2022-03-10 03:56:11 +00:00
taosSsleep(2);
2022-01-06 07:30:32 +00:00
}
2022-01-21 10:19:40 +00:00
2022-01-06 07:30:32 +00:00
ASSERT_EQ(allDbNum, 1);
ASSERT_EQ(allStbNum, 1);
2021-12-25 04:27:46 +00:00
catalogDestroy();
}
2021-12-25 13:29:42 +00:00
TEST(tableMeta, superTableCase) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
2021-12-25 04:27:46 +00:00
2022-02-12 12:03:42 +00:00
ctgTestSetRspDbVgroupsAndSuperMeta();
2021-12-25 04:27:46 +00:00
initQueryModuleMsgHandle();
2021-12-31 03:23:44 +00:00
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
2022-01-21 10:19:40 +00:00
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
2021-12-31 03:23:44 +00:00
code = catalogGetHandle(ctgTestClusterId, &pCtg);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestSTablename);
2021-12-25 04:27:46 +00:00
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 0);
ASSERT_EQ(tableMeta->tableType, TSDB_SUPER_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
2022-10-25 08:21:39 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestSuid);
ASSERT_EQ(tableMeta->suid, ctgTestSuid);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
taosMemoryFree(tableMeta);
2022-02-14 05:08:29 +00:00
while (true) {
2022-03-26 10:10:26 +00:00
uint32_t n = ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM);
2022-02-14 05:08:29 +00:00
if (0 == n) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-02-14 05:08:29 +00:00
} else {
break;
}
2022-02-12 12:03:42 +00:00
}
2022-10-27 11:33:00 +00:00
tableMeta = NULL;
2022-11-02 07:18:32 +00:00
code = catalogGetCachedSTableMeta(pCtg, &n, &tableMeta);
2022-10-27 11:33:00 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 0);
ASSERT_EQ(tableMeta->tableType, TSDB_SUPER_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->uid, ctgTestSuid);
ASSERT_EQ(tableMeta->suid, ctgTestSuid);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
taosMemoryFree(tableMeta);
2022-02-12 12:03:42 +00:00
ctgTestSetRspCTableMeta();
2021-12-25 04:27:46 +00:00
tableMeta = NULL;
2021-12-29 07:01:12 +00:00
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestCTablename);
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 9);
ASSERT_EQ(tableMeta->tableType, TSDB_CHILD_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
taosMemoryFree(tableMeta);
2022-02-14 05:08:29 +00:00
while (true) {
2022-03-26 10:10:26 +00:00
uint32_t n = ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM);
2022-02-14 05:08:29 +00:00
if (2 != n) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-02-14 05:08:29 +00:00
} else {
break;
}
2022-02-12 12:03:42 +00:00
}
2021-12-25 04:27:46 +00:00
tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogRefreshGetTableMeta(pCtg, mockPointer, &n, &tableMeta, 0);
2021-12-25 04:27:46 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 9);
ASSERT_EQ(tableMeta->tableType, TSDB_CHILD_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
taosMemoryFree(tableMeta);
2023-04-13 02:54:57 +00:00
SDbCacheInfo *dbs = NULL;
2022-06-13 02:38:45 +00:00
SSTableVersion *stb = NULL;
2022-10-13 05:41:36 +00:00
uint32_t dbNum = 0, stbNum = 0, allDbNum = 0, allStbNum = 0;
int32_t i = 0;
2022-01-06 07:30:32 +00:00
while (i < 5) {
++i;
code = catalogGetExpiredDBs(pCtg, &dbs, &dbNum);
ASSERT_EQ(code, 0);
code = catalogGetExpiredSTables(pCtg, &stb, &stbNum);
ASSERT_EQ(code, 0);
2022-01-21 10:19:40 +00:00
2022-01-06 07:30:32 +00:00
if (dbNum) {
2024-07-19 05:46:35 +00:00
(void)printf("got expired db,dbId:%" PRId64 "\n", dbs->dbId);
2022-03-25 16:29:53 +00:00
taosMemoryFree(dbs);
2022-01-06 07:30:32 +00:00
dbs = NULL;
} else {
2024-07-19 05:46:35 +00:00
(void)printf("no expired db\n");
2022-01-06 07:30:32 +00:00
}
if (stbNum) {
2024-07-19 05:46:35 +00:00
(void)printf("got expired stb,suid:%" PRId64 ",dbFName:%s, stbName:%s\n", stb->suid, stb->dbFName, stb->stbName);
2022-02-12 09:14:33 +00:00
2022-03-25 16:29:53 +00:00
taosMemoryFree(stb);
2022-01-06 07:30:32 +00:00
stb = NULL;
} else {
2024-07-19 05:46:35 +00:00
(void)printf("no expired stb\n");
2022-01-06 07:30:32 +00:00
}
allDbNum += dbNum;
allStbNum += stbNum;
2022-03-10 03:56:11 +00:00
taosSsleep(2);
2022-01-06 07:30:32 +00:00
}
2022-01-21 10:19:40 +00:00
2022-01-06 07:30:32 +00:00
ASSERT_EQ(allDbNum, 1);
ASSERT_EQ(allStbNum, 1);
2021-12-25 04:27:46 +00:00
catalogDestroy();
2021-12-16 08:23:25 +00:00
}
2022-02-08 08:53:00 +00:00
TEST(tableMeta, rmStbMeta) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
2022-02-08 08:53:00 +00:00
ctgTestInitLogFile();
2022-02-12 12:03:42 +00:00
ctgTestSetRspDbVgroupsAndSuperMeta();
2022-02-08 08:53:00 +00:00
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestSTablename);
2022-02-08 08:53:00 +00:00
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2022-02-08 08:53:00 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 0);
ASSERT_EQ(tableMeta->tableType, TSDB_SUPER_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
2022-10-25 08:21:39 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestSuid);
ASSERT_EQ(tableMeta->suid, ctgTestSuid);
2022-02-08 08:53:00 +00:00
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
taosMemoryFree(tableMeta);
2022-02-14 05:08:29 +00:00
while (true) {
2022-03-26 10:10:26 +00:00
uint32_t n = ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM);
2022-02-14 05:08:29 +00:00
if (0 == n) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-02-14 05:08:29 +00:00
} else {
break;
}
2022-02-12 12:03:42 +00:00
}
2022-10-25 08:21:39 +00:00
code = catalogRemoveStbMeta(pCtg, "1.db1", ctgTestDbId, ctgTestSTablename, ctgTestSuid);
2022-02-08 08:53:00 +00:00
ASSERT_EQ(code, 0);
2022-02-14 05:08:29 +00:00
while (true) {
2022-03-26 10:10:26 +00:00
int32_t n = ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM);
int32_t m = ctgdGetClusterCacheNum(pCtg, CTG_DBG_STB_RENT_NUM);
2022-02-14 05:08:29 +00:00
if (n || m) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-02-14 05:08:29 +00:00
} else {
break;
}
2022-02-12 12:03:42 +00:00
}
2022-03-26 10:10:26 +00:00
ASSERT_EQ(ctgdGetClusterCacheNum(pCtg, CTG_DBG_DB_NUM), 1);
ASSERT_EQ(ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM), 0);
ASSERT_EQ(ctgdGetClusterCacheNum(pCtg, CTG_DBG_STB_NUM), 0);
ASSERT_EQ(ctgdGetClusterCacheNum(pCtg, CTG_DBG_DB_RENT_NUM), 1);
ASSERT_EQ(ctgdGetClusterCacheNum(pCtg, CTG_DBG_STB_RENT_NUM), 0);
2022-02-12 09:14:33 +00:00
2022-02-08 08:53:00 +00:00
catalogDestroy();
}
TEST(tableMeta, updateStbMeta) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
2022-02-08 08:53:00 +00:00
ctgTestInitLogFile();
2022-02-12 12:03:42 +00:00
ctgTestSetRspDbVgroupsAndSuperMeta();
2022-02-08 08:53:00 +00:00
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestSTablename);
2022-02-08 08:53:00 +00:00
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2022-02-08 08:53:00 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 0);
ASSERT_EQ(tableMeta->tableType, TSDB_SUPER_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
2022-10-25 08:21:39 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestSuid);
ASSERT_EQ(tableMeta->suid, ctgTestSuid);
2022-02-08 08:53:00 +00:00
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-02-14 05:08:29 +00:00
while (true) {
2022-03-26 10:10:26 +00:00
uint32_t n = ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM);
2022-02-14 05:08:29 +00:00
if (0 == n) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-02-14 05:08:29 +00:00
} else {
break;
}
2022-02-12 12:03:42 +00:00
}
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-02-08 08:53:00 +00:00
STableMetaRsp rsp = {0};
ctgTestBuildSTableMetaRsp(&rsp);
2022-06-01 12:28:29 +00:00
code = catalogUpdateTableMeta(pCtg, &rsp);
2022-02-08 08:53:00 +00:00
ASSERT_EQ(code, 0);
2023-05-16 02:51:58 +00:00
code = catalogAsyncUpdateTableMeta(pCtg, &rsp);
ASSERT_EQ(code, 0);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(rsp.pSchemas);
2022-02-08 08:53:00 +00:00
2022-02-12 12:03:42 +00:00
while (true) {
uint64_t n = 0;
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n));
2024-12-26 01:52:36 +00:00
if (n < 3) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-02-12 12:03:42 +00:00
} else {
break;
}
}
2022-03-26 10:10:26 +00:00
ASSERT_EQ(ctgdGetClusterCacheNum(pCtg, CTG_DBG_DB_NUM), 1);
ASSERT_EQ(ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM), 1);
ASSERT_EQ(ctgdGetClusterCacheNum(pCtg, CTG_DBG_STB_NUM), 1);
ASSERT_EQ(ctgdGetClusterCacheNum(pCtg, CTG_DBG_DB_RENT_NUM), 1);
ASSERT_EQ(ctgdGetClusterCacheNum(pCtg, CTG_DBG_STB_RENT_NUM), 1);
2022-02-08 08:53:00 +00:00
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2022-02-08 08:53:00 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 0);
ASSERT_EQ(tableMeta->tableType, TSDB_SUPER_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion + 1);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion + 1);
2022-10-25 08:21:39 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestSuid);
ASSERT_EQ(tableMeta->suid, ctgTestSuid);
2022-02-08 08:53:00 +00:00
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1 + 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-02-12 09:14:33 +00:00
2022-02-08 08:53:00 +00:00
catalogDestroy();
}
2022-10-26 11:25:12 +00:00
TEST(getIndexInfo, notExists) {
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-26 11:25:12 +00:00
SVgroupInfo vgInfo = {0};
SArray *vgList = NULL;
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-10-26 11:25:12 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_INDEXINFO_E;
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
SIndexInfo info;
code = catalogGetIndexMeta(pCtg, mockPointer, "index1", &info);
ASSERT_TRUE(code != 0);
2023-04-10 02:53:29 +00:00
catalogDestroy();
2022-10-26 11:25:12 +00:00
}
2022-03-03 01:09:11 +00:00
TEST(refreshGetMeta, normal2normal) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
SArray *vgList = NULL;
2022-03-03 01:09:11 +00:00
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-03-03 01:09:11 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestRspFunc[1] = CTGT_RSP_TBMETA;
ctgTestRspFunc[2] = CTGT_RSP_TBMETA;
2022-10-13 05:41:36 +00:00
2022-03-03 01:09:11 +00:00
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2022-03-03 01:09:11 +00:00
2022-06-10 09:07:24 +00:00
code = catalogGetTableHashVgroup(pCtg, mockPointer, &n, &vgInfo);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(vgInfo.vgId, 8);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo.epSet.numOfEps, 3);
2022-03-03 01:09:11 +00:00
while (true) {
uint64_t n = 0;
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n));
2022-03-03 01:09:11 +00:00
if (n > 0) {
break;
}
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 8);
ASSERT_EQ(tableMeta->tableType, TSDB_NORMAL_TABLE);
2022-10-13 05:41:36 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestNormalTblUid - 1);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, 0);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-03-03 01:09:11 +00:00
2022-03-26 10:10:26 +00:00
while (0 == ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM)) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
2022-06-10 09:07:24 +00:00
code = catalogRefreshGetTableMeta(pCtg, mockPointer, &n, &tableMeta, 0);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 8);
ASSERT_EQ(tableMeta->tableType, TSDB_NORMAL_TABLE);
2022-10-13 05:41:36 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestNormalTblUid - 1);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, 0);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-03-03 01:09:11 +00:00
catalogDestroy();
}
TEST(refreshGetMeta, normal2notexist) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
SArray *vgList = NULL;
2022-03-03 01:09:11 +00:00
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-03-03 01:09:11 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestRspFunc[1] = CTGT_RSP_TBMETA;
ctgTestRspFunc[2] = CTGT_RSP_TBMETA_NOT_EXIST;
2022-10-13 05:41:36 +00:00
2022-03-03 01:09:11 +00:00
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2022-03-03 01:09:11 +00:00
2022-06-10 09:07:24 +00:00
code = catalogGetTableHashVgroup(pCtg, mockPointer, &n, &vgInfo);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(vgInfo.vgId, 8);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo.epSet.numOfEps, 3);
2022-03-03 01:09:11 +00:00
while (true) {
uint64_t n = 0;
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n));
2022-03-03 01:09:11 +00:00
if (n > 0) {
break;
}
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 8);
ASSERT_EQ(tableMeta->tableType, TSDB_NORMAL_TABLE);
2022-10-13 05:41:36 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestNormalTblUid - 1);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, 0);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-03-03 01:09:11 +00:00
2022-03-26 10:10:26 +00:00
while (0 == ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM)) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
2022-06-10 09:07:24 +00:00
code = catalogRefreshGetTableMeta(pCtg, mockPointer, &n, &tableMeta, 0);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, CTG_ERR_CODE_TABLE_NOT_EXIST);
ASSERT_TRUE(tableMeta == NULL);
catalogDestroy();
}
TEST(refreshGetMeta, normal2child) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
SArray *vgList = NULL;
2022-03-03 01:09:11 +00:00
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-03-03 01:09:11 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestRspFunc[1] = CTGT_RSP_TBMETA;
ctgTestRspFunc[2] = CTGT_RSP_CTBMETA;
ctgTestRspFunc[3] = CTGT_RSP_STBMETA;
2022-10-13 05:41:36 +00:00
2022-03-03 01:09:11 +00:00
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2022-03-03 01:09:11 +00:00
ctgTestCurrentCTableName = ctgTestTablename;
ctgTestCurrentSTableName = ctgTestSTablename;
2022-06-10 09:07:24 +00:00
code = catalogGetTableHashVgroup(pCtg, mockPointer, &n, &vgInfo);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(vgInfo.vgId, 8);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo.epSet.numOfEps, 3);
2022-03-03 01:09:11 +00:00
while (true) {
uint64_t n = 0;
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n));
2022-03-03 01:09:11 +00:00
if (n > 0) {
break;
}
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 8);
ASSERT_EQ(tableMeta->tableType, TSDB_NORMAL_TABLE);
2022-10-13 05:41:36 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestNormalTblUid - 1);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, 0);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-03-03 01:09:11 +00:00
2022-03-26 10:10:26 +00:00
while (0 == ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM)) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
2022-06-10 09:07:24 +00:00
code = catalogRefreshGetTableMeta(pCtg, mockPointer, &n, &tableMeta, 0);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 9);
ASSERT_EQ(tableMeta->tableType, TSDB_CHILD_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-03-03 01:09:11 +00:00
catalogDestroy();
ctgTestCurrentCTableName = NULL;
ctgTestCurrentSTableName = NULL;
}
TEST(refreshGetMeta, stable2child) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
SArray *vgList = NULL;
2022-03-03 01:09:11 +00:00
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-03-03 01:09:11 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestRspFunc[1] = CTGT_RSP_STBMETA;
ctgTestRspFunc[2] = CTGT_RSP_STBMETA;
ctgTestRspFunc[3] = CTGT_RSP_CTBMETA;
ctgTestRspFunc[4] = CTGT_RSP_STBMETA;
2022-10-13 05:41:36 +00:00
2022-03-03 01:09:11 +00:00
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2022-03-03 01:09:11 +00:00
ctgTestCurrentSTableName = ctgTestTablename;
ctgTestCurrentCTableName = ctgTestTablename;
2022-06-10 09:07:24 +00:00
code = catalogGetTableHashVgroup(pCtg, mockPointer, &n, &vgInfo);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(vgInfo.vgId, 8);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo.epSet.numOfEps, 3);
2022-03-03 01:09:11 +00:00
while (true) {
uint64_t n = 0;
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n));
2022-03-03 01:09:11 +00:00
if (n > 0) {
break;
}
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 0);
ASSERT_EQ(tableMeta->tableType, TSDB_SUPER_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
2022-10-25 08:21:39 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestSuid);
ASSERT_EQ(tableMeta->suid, ctgTestSuid);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-03-03 01:09:11 +00:00
2022-03-26 10:10:26 +00:00
while (0 == ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM)) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
ctgTestCurrentSTableName = ctgTestSTablename;
2022-06-10 09:07:24 +00:00
code = catalogRefreshGetTableMeta(pCtg, mockPointer, &n, &tableMeta, 0);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 9);
ASSERT_EQ(tableMeta->tableType, TSDB_CHILD_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-03-03 01:09:11 +00:00
catalogDestroy();
ctgTestCurrentCTableName = NULL;
ctgTestCurrentSTableName = NULL;
}
TEST(refreshGetMeta, stable2stable) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
SArray *vgList = NULL;
2022-03-03 01:09:11 +00:00
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-03-03 01:09:11 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestRspFunc[1] = CTGT_RSP_STBMETA;
ctgTestRspFunc[2] = CTGT_RSP_STBMETA;
ctgTestRspFunc[3] = CTGT_RSP_STBMETA;
ctgTestRspFunc[4] = CTGT_RSP_STBMETA;
2022-10-13 05:41:36 +00:00
2022-03-03 01:09:11 +00:00
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2022-03-03 01:09:11 +00:00
ctgTestCurrentSTableName = ctgTestTablename;
2022-06-10 09:07:24 +00:00
code = catalogGetTableHashVgroup(pCtg, mockPointer, &n, &vgInfo);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(vgInfo.vgId, 8);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo.epSet.numOfEps, 3);
2022-03-03 01:09:11 +00:00
while (true) {
uint64_t n = 0;
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n));
2022-03-03 01:09:11 +00:00
if (n > 0) {
break;
}
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 0);
ASSERT_EQ(tableMeta->tableType, TSDB_SUPER_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
2022-10-25 08:21:39 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestSuid);
ASSERT_EQ(tableMeta->suid, ctgTestSuid);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-03-03 01:09:11 +00:00
2022-03-26 10:10:26 +00:00
while (0 == ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM)) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
2022-06-10 09:07:24 +00:00
code = catalogRefreshGetTableMeta(pCtg, mockPointer, &n, &tableMeta, 0);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 0);
ASSERT_EQ(tableMeta->tableType, TSDB_SUPER_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
2022-10-25 08:21:39 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestSuid);
ASSERT_EQ(tableMeta->suid, ctgTestSuid);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-03-03 01:09:11 +00:00
catalogDestroy();
ctgTestCurrentCTableName = NULL;
ctgTestCurrentSTableName = NULL;
}
TEST(refreshGetMeta, child2stable) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
SArray *vgList = NULL;
2022-03-03 01:09:11 +00:00
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-03-03 01:09:11 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestRspFunc[1] = CTGT_RSP_CTBMETA;
ctgTestRspFunc[2] = CTGT_RSP_STBMETA;
ctgTestRspFunc[3] = CTGT_RSP_STBMETA;
ctgTestRspFunc[4] = CTGT_RSP_STBMETA;
2022-10-13 05:41:36 +00:00
2022-03-03 01:09:11 +00:00
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2022-03-03 01:09:11 +00:00
ctgTestCurrentCTableName = ctgTestTablename;
ctgTestCurrentSTableName = ctgTestSTablename;
2022-06-10 09:07:24 +00:00
code = catalogGetTableHashVgroup(pCtg, mockPointer, &n, &vgInfo);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(vgInfo.vgId, 8);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo.epSet.numOfEps, 3);
2022-03-03 01:09:11 +00:00
while (true) {
uint64_t n = 0;
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n));
2022-03-03 01:09:11 +00:00
if (n > 0) {
break;
}
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetTableMeta(pCtg, mockPointer, &n, &tableMeta);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 9);
ASSERT_EQ(tableMeta->tableType, TSDB_CHILD_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-03-03 01:09:11 +00:00
2022-03-26 10:10:26 +00:00
while (2 != ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM)) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-03-03 01:09:11 +00:00
}
ctgTestCurrentSTableName = ctgTestTablename;
2022-06-10 09:07:24 +00:00
code = catalogRefreshGetTableMeta(pCtg, mockPointer, &n, &tableMeta, 0);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 0);
ASSERT_EQ(tableMeta->tableType, TSDB_SUPER_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
2022-10-25 08:21:39 +00:00
ASSERT_EQ(tableMeta->uid, ctgTestSuid);
ASSERT_EQ(tableMeta->suid, ctgTestSuid);
2022-03-03 01:09:11 +00:00
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-03-25 16:29:53 +00:00
taosMemoryFreeClear(tableMeta);
2022-03-03 01:09:11 +00:00
catalogDestroy();
ctgTestCurrentCTableName = NULL;
ctgTestCurrentSTableName = NULL;
}
2021-12-25 13:29:42 +00:00
TEST(tableDistVgroup, normalTable) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo *vgInfo = NULL;
SArray *vgList = NULL;
2021-12-25 13:29:42 +00:00
2022-02-12 12:03:42 +00:00
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-02-12 12:03:42 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestRspFunc[1] = CTGT_RSP_TBMETA;
ctgTestRspFunc[2] = CTGT_RSP_VGINFO;
2022-10-13 05:41:36 +00:00
2022-02-12 12:03:42 +00:00
ctgTestSetRspByIdx();
2021-12-25 13:29:42 +00:00
initQueryModuleMsgHandle();
2021-12-31 03:23:44 +00:00
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
2022-01-21 10:19:40 +00:00
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
2021-12-31 03:23:44 +00:00
code = catalogGetHandle(ctgTestClusterId, &pCtg);
2021-12-25 13:29:42 +00:00
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2021-12-25 13:29:42 +00:00
2022-06-10 09:07:24 +00:00
code = catalogGetTableDistVgInfo(pCtg, mockPointer, &n, &vgList);
2022-10-25 08:21:39 +00:00
ASSERT_TRUE(code != 0);
2021-12-25 13:29:42 +00:00
catalogDestroy();
}
TEST(tableDistVgroup, childTableCase) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo *vgInfo = NULL;
SArray *vgList = NULL;
2021-12-25 13:29:42 +00:00
2022-02-12 12:03:42 +00:00
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-02-12 12:03:42 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestRspFunc[1] = CTGT_RSP_CTBMETA;
ctgTestRspFunc[2] = CTGT_RSP_STBMETA;
ctgTestRspFunc[3] = CTGT_RSP_VGINFO;
2022-10-13 05:41:36 +00:00
2022-02-12 12:03:42 +00:00
ctgTestSetRspByIdx();
2021-12-25 13:29:42 +00:00
initQueryModuleMsgHandle();
2022-01-21 10:19:40 +00:00
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
2021-12-25 13:29:42 +00:00
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestCTablename);
2021-12-29 07:01:12 +00:00
2022-06-10 09:07:24 +00:00
code = catalogGetTableDistVgInfo(pCtg, mockPointer, &n, &vgList);
2022-10-25 08:21:39 +00:00
ASSERT_TRUE(code != 0);
2021-12-25 13:29:42 +00:00
catalogDestroy();
}
TEST(tableDistVgroup, superTableCase) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo *vgInfo = NULL;
SArray *vgList = NULL;
2021-12-25 13:29:42 +00:00
2022-02-12 12:03:42 +00:00
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-02-12 12:03:42 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestRspFunc[1] = CTGT_RSP_STBMETA;
ctgTestRspFunc[2] = CTGT_RSP_STBMETA;
ctgTestRspFunc[3] = CTGT_RSP_VGINFO;
2022-10-13 05:41:36 +00:00
ctgTestSetRspByIdx();
2021-12-25 13:29:42 +00:00
initQueryModuleMsgHandle();
2021-12-31 03:23:44 +00:00
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
2022-01-21 10:19:40 +00:00
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
2021-12-31 03:23:44 +00:00
code = catalogGetHandle(ctgTestClusterId, &pCtg);
2021-12-25 13:29:42 +00:00
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestSTablename);
2021-12-25 13:29:42 +00:00
2022-06-10 09:07:24 +00:00
code = catalogGetTableDistVgInfo(pCtg, mockPointer, &n, &vgList);
2021-12-25 13:29:42 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(taosArrayGetSize((const SArray *)vgList), 10);
vgInfo = (SVgroupInfo *)taosArrayGet(vgList, 0);
ASSERT_EQ(vgInfo->vgId, 1);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo->epSet.numOfEps, 1);
2021-12-25 13:29:42 +00:00
vgInfo = (SVgroupInfo *)taosArrayGet(vgList, 1);
ASSERT_EQ(vgInfo->vgId, 2);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo->epSet.numOfEps, 2);
2021-12-25 13:29:42 +00:00
vgInfo = (SVgroupInfo *)taosArrayGet(vgList, 2);
ASSERT_EQ(vgInfo->vgId, 3);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo->epSet.numOfEps, 3);
2021-12-25 13:29:42 +00:00
taosArrayDestroy(vgList);
2021-12-25 13:29:42 +00:00
catalogDestroy();
}
2021-12-31 03:23:44 +00:00
TEST(dbVgroup, getSetDbVgroupCase) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
SVgroupInfo *pvgInfo = NULL;
SDBVgInfo *dbVgroup = NULL;
SArray *vgList = NULL;
2021-12-31 03:23:44 +00:00
2022-02-05 04:21:21 +00:00
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-02-12 12:03:42 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestRspFunc[1] = CTGT_RSP_TBMETA;
ctgTestSetRspByIdx();
2021-12-31 03:23:44 +00:00
initQueryModuleMsgHandle();
2022-01-21 10:19:40 +00:00
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
2021-12-31 03:23:44 +00:00
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2021-12-31 03:23:44 +00:00
code = catalogGetDBVgList(pCtg, mockPointer, ctgTestDbname, &vgList);
2021-12-31 03:23:44 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(taosArrayGetSize((const SArray *)vgList), ctgTestVgNum);
2022-01-21 10:19:40 +00:00
taosArrayDestroy(vgList);
2022-03-03 01:09:11 +00:00
while (true) {
uint64_t n = 0;
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n));
2022-03-03 01:09:11 +00:00
if (n > 0) {
break;
}
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-02-12 12:03:42 +00:00
}
2022-06-10 09:07:24 +00:00
code = catalogGetTableHashVgroup(pCtg, mockPointer, &n, &vgInfo);
2021-12-31 03:23:44 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(vgInfo.vgId, 8);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo.epSet.numOfEps, 3);
2021-12-31 03:23:44 +00:00
2022-06-10 09:07:24 +00:00
code = catalogGetTableDistVgInfo(pCtg, mockPointer, &n, &vgList);
2022-10-25 08:21:39 +00:00
ASSERT_TRUE(code != 0);
2021-12-31 03:23:44 +00:00
2022-10-27 11:33:00 +00:00
int32_t dbVer = 0;
int64_t dbId = 0;
int32_t tbNum = 0;
2022-11-09 10:48:52 +00:00
int64_t stateTs = 0;
code = catalogGetDBVgVersion(pCtg, ctgTestDbname, &dbVer, &dbId, &tbNum, &stateTs);
2022-10-27 11:33:00 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(dbVer, ctgTestVgVersion);
ASSERT_EQ(dbId, ctgTestDbId);
ASSERT_EQ(tbNum, ctgTestVgNum / 2);
2021-12-31 03:23:44 +00:00
ctgTestBuildDBVgroup(&dbVgroup);
2022-02-11 11:52:07 +00:00
code = catalogUpdateDBVgInfo(pCtg, ctgTestDbname, ctgTestDbId, dbVgroup);
2021-12-31 03:23:44 +00:00
ASSERT_EQ(code, 0);
2022-02-12 12:03:42 +00:00
while (true) {
uint64_t n = 0;
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n));
2022-02-12 12:03:42 +00:00
if (n != 3) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-02-12 12:03:42 +00:00
} else {
break;
}
}
2022-06-10 09:07:24 +00:00
code = catalogGetTableHashVgroup(pCtg, mockPointer, &n, &vgInfo);
2021-12-31 03:23:44 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(vgInfo.vgId, 7);
2022-03-08 09:22:21 +00:00
ASSERT_EQ(vgInfo.epSet.numOfEps, 2);
2021-12-31 03:23:44 +00:00
2022-06-10 09:07:24 +00:00
code = catalogGetTableDistVgInfo(pCtg, mockPointer, &n, &vgList);
2022-10-25 08:21:39 +00:00
ASSERT_TRUE(code != 0);
2022-01-21 10:19:40 +00:00
2021-12-31 03:23:44 +00:00
catalogDestroy();
}
2022-02-09 02:56:22 +00:00
TEST(multiThread, getSetRmSameDbVgroup) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
SVgroupInfo *pvgInfo = NULL;
SDBVgInfo dbVgroup = {0};
SArray *vgList = NULL;
2022-01-06 07:30:32 +00:00
ctgTestStop = false;
2021-12-31 03:23:44 +00:00
ctgTestInitLogFile();
2022-01-21 10:19:40 +00:00
2022-02-12 12:03:42 +00:00
ctgTestSetRspDbVgroups();
2021-12-31 03:23:44 +00:00
initQueryModuleMsgHandle();
2022-01-21 10:19:40 +00:00
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
2021-12-31 03:23:44 +00:00
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2021-12-31 03:23:44 +00:00
2022-03-19 16:47:45 +00:00
TdThreadAttr thattr;
2024-07-19 05:46:35 +00:00
(void)taosThreadAttrInit(&thattr);
2021-12-31 03:23:44 +00:00
2022-03-19 16:47:45 +00:00
TdThread thread1, thread2;
2024-07-19 05:46:35 +00:00
(void)taosThreadCreate(&(thread1), &thattr, ctgTestSetSameDbVgroupThread, pCtg);
2021-12-31 03:23:44 +00:00
2022-03-10 03:56:11 +00:00
taosSsleep(1);
2024-07-19 05:46:35 +00:00
(void)taosThreadCreate(&(thread2), &thattr, ctgTestGetDbVgroupThread, pCtg);
2021-12-31 03:23:44 +00:00
while (true) {
if (ctgTestDeadLoop) {
2022-03-10 03:56:11 +00:00
taosSsleep(1);
2021-12-31 03:23:44 +00:00
} else {
2022-03-10 03:56:11 +00:00
taosSsleep(ctgTestMTRunSec);
2021-12-31 03:23:44 +00:00
break;
}
}
2022-01-21 10:19:40 +00:00
2021-12-31 03:23:44 +00:00
ctgTestStop = true;
2022-03-10 03:56:11 +00:00
taosSsleep(1);
2022-01-21 10:19:40 +00:00
2021-12-31 03:23:44 +00:00
catalogDestroy();
}
2022-02-09 02:56:22 +00:00
TEST(multiThread, getSetRmDiffDbVgroup) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
SVgroupInfo *pvgInfo = NULL;
SDBVgInfo dbVgroup = {0};
SArray *vgList = NULL;
2022-02-09 02:56:22 +00:00
ctgTestStop = false;
ctgTestInitLogFile();
2022-02-12 12:03:42 +00:00
ctgTestSetRspDbVgroups();
2022-02-09 02:56:22 +00:00
initQueryModuleMsgHandle();
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2022-02-09 02:56:22 +00:00
2022-03-19 16:47:45 +00:00
TdThreadAttr thattr;
2024-07-19 05:46:35 +00:00
(void)taosThreadAttrInit(&thattr);
2022-02-09 02:56:22 +00:00
2022-03-19 16:47:45 +00:00
TdThread thread1, thread2;
2024-07-19 05:46:35 +00:00
(void)taosThreadCreate(&(thread1), &thattr, ctgTestSetDiffDbVgroupThread, pCtg);
2022-02-09 02:56:22 +00:00
2022-03-10 03:56:11 +00:00
taosSsleep(1);
2024-07-19 05:46:35 +00:00
(void)taosThreadCreate(&(thread2), &thattr, ctgTestGetDbVgroupThread, pCtg);
2022-02-09 02:56:22 +00:00
while (true) {
if (ctgTestDeadLoop) {
2022-03-10 03:56:11 +00:00
taosSsleep(1);
2022-02-09 02:56:22 +00:00
} else {
2022-03-10 03:56:11 +00:00
taosSsleep(ctgTestMTRunSec);
2022-02-09 02:56:22 +00:00
break;
}
}
ctgTestStop = true;
2022-03-10 03:56:11 +00:00
taosSsleep(1);
2022-02-09 02:56:22 +00:00
catalogDestroy();
}
2021-12-31 03:23:44 +00:00
TEST(multiThread, ctableMeta) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
SVgroupInfo *pvgInfo = NULL;
SDBVgInfo dbVgroup = {0};
SArray *vgList = NULL;
2022-01-06 07:30:32 +00:00
ctgTestStop = false;
2021-12-31 03:23:44 +00:00
2022-02-05 04:21:21 +00:00
ctgTestInitLogFile();
2022-02-12 12:03:42 +00:00
ctgTestSetRspDbVgroupsAndChildMeta();
2021-12-31 03:23:44 +00:00
initQueryModuleMsgHandle();
2022-01-21 10:19:40 +00:00
// sendCreateDbMsg(pConn->pTransporter, &pConn->pAppInfo->mgmtEp.epSet);
2021-12-31 03:23:44 +00:00
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2021-12-31 03:23:44 +00:00
2022-03-19 16:47:45 +00:00
TdThreadAttr thattr;
2024-07-19 05:46:35 +00:00
(void)taosThreadAttrInit(&thattr);
2021-12-31 03:23:44 +00:00
2022-03-19 16:47:45 +00:00
TdThread thread1, thread2;
2024-07-19 05:46:35 +00:00
(void)taosThreadCreate(&(thread1), &thattr, ctgTestSetCtableMetaThread, pCtg);
2022-03-10 03:56:11 +00:00
taosSsleep(1);
2024-07-19 05:46:35 +00:00
(void)taosThreadCreate(&(thread1), &thattr, ctgTestGetCtableMetaThread, pCtg);
2021-12-31 03:23:44 +00:00
while (true) {
if (ctgTestDeadLoop) {
2022-03-10 03:56:11 +00:00
taosSsleep(1);
2021-12-31 03:23:44 +00:00
} else {
2022-03-10 03:56:11 +00:00
taosSsleep(ctgTestMTRunSec);
2021-12-31 03:23:44 +00:00
break;
}
}
2022-01-21 10:19:40 +00:00
2021-12-31 03:23:44 +00:00
ctgTestStop = true;
2022-03-10 03:56:11 +00:00
taosSsleep(2);
2022-01-21 10:19:40 +00:00
2021-12-31 03:23:44 +00:00
catalogDestroy();
}
2021-12-25 13:29:42 +00:00
2022-01-07 06:38:05 +00:00
TEST(rentTest, allRent) {
2022-10-13 05:41:36 +00:00
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-25 08:21:39 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
2022-10-13 05:41:36 +00:00
SVgroupInfo vgInfo = {0};
SVgroupInfo *pvgInfo = NULL;
SDBVgInfo dbVgroup = {0};
SArray *vgList = NULL;
2022-01-07 06:38:05 +00:00
ctgTestStop = false;
2023-04-13 02:54:57 +00:00
SDbCacheInfo *dbs = NULL;
2022-06-13 02:38:45 +00:00
SSTableVersion *stable = NULL;
2022-10-13 05:41:36 +00:00
uint32_t num = 0;
2022-01-07 06:38:05 +00:00
2022-02-05 04:21:21 +00:00
ctgTestInitLogFile();
2022-02-12 12:03:42 +00:00
ctgTestSetRspDbVgroupsAndMultiSuperMeta();
2022-01-07 06:38:05 +00:00
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2022-10-13 05:41:36 +00:00
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
2022-01-07 06:38:05 +00:00
for (int32_t i = 1; i <= 10; ++i) {
2024-07-19 05:46:35 +00:00
(void)sprintf(n.tname, "%s_%d", ctgTestSTablename, i);
2022-01-07 06:38:05 +00:00
STableMeta *tableMeta = NULL;
2022-06-10 09:07:24 +00:00
code = catalogGetSTableMeta(pCtg, mockPointer, &n, &tableMeta);
2022-01-07 06:38:05 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(tableMeta->vgId, 0);
ASSERT_EQ(tableMeta->tableType, TSDB_SUPER_TABLE);
ASSERT_EQ(tableMeta->sversion, ctgTestSVersion);
ASSERT_EQ(tableMeta->tversion, ctgTestTVersion);
ASSERT_EQ(tableMeta->uid, ctgTestSuid + i);
ASSERT_EQ(tableMeta->suid, ctgTestSuid + i);
ASSERT_EQ(tableMeta->tableInfo.numOfColumns, ctgTestColNum);
ASSERT_EQ(tableMeta->tableInfo.numOfTags, ctgTestTagNum);
ASSERT_EQ(tableMeta->tableInfo.precision, 1);
ASSERT_EQ(tableMeta->tableInfo.rowSize, 12);
2022-01-21 10:19:40 +00:00
taosMemoryFree(tableMeta);
2022-03-26 10:10:26 +00:00
while (ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM) < i) {
2022-03-10 03:56:11 +00:00
taosMsleep(50);
2022-02-12 12:03:42 +00:00
}
2022-01-07 06:38:05 +00:00
code = catalogGetExpiredDBs(pCtg, &dbs, &num);
ASSERT_EQ(code, 0);
2024-07-19 05:46:35 +00:00
(void)printf("%d - expired dbNum:%d\n", i, num);
2022-01-07 06:38:05 +00:00
if (dbs) {
2024-07-19 05:46:35 +00:00
(void)printf("%d - expired dbId:%" PRId64 ", vgVersion:%d\n", i, dbs->dbId, dbs->vgVersion);
2022-03-25 16:29:53 +00:00
taosMemoryFree(dbs);
2022-01-07 06:38:05 +00:00
dbs = NULL;
}
2022-01-21 10:19:40 +00:00
2022-01-07 06:38:05 +00:00
code = catalogGetExpiredSTables(pCtg, &stable, &num);
ASSERT_EQ(code, 0);
2024-07-19 05:46:35 +00:00
(void)printf("%d - expired stableNum:%d\n", i, num);
2022-01-07 06:38:05 +00:00
if (stable) {
for (int32_t n = 0; n < num; ++n) {
2024-07-19 05:46:35 +00:00
(void)printf("suid:%" PRId64 ", dbFName:%s, stbName:%s, sversion:%d, tversion:%d\n", stable[n].suid,
2022-02-12 09:14:33 +00:00
stable[n].dbFName, stable[n].stbName, stable[n].sversion, stable[n].tversion);
2022-01-07 06:38:05 +00:00
}
2022-03-25 16:29:53 +00:00
taosMemoryFree(stable);
2022-01-07 06:38:05 +00:00
stable = NULL;
}
2024-07-19 05:46:35 +00:00
(void)printf("*************************************************\n");
2022-01-21 10:19:40 +00:00
2022-03-10 03:56:11 +00:00
taosSsleep(2);
2022-01-07 06:38:05 +00:00
}
2022-01-21 10:19:40 +00:00
2022-01-07 06:38:05 +00:00
catalogDestroy();
}
2022-10-27 11:33:00 +00:00
TEST(apiTest, catalogRefreshDBVgInfo_test) {
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-27 11:33:00 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-10-27 11:33:00 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
code = catalogRefreshDBVgInfo(pCtg, mockPointer, ctgTestDbname);
ASSERT_EQ(code, 0);
catalogDestroy();
}
TEST(apiTest, catalogChkAuth_test) {
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-27 11:33:00 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-10-27 11:33:00 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_USERAUTH;
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2023-04-06 02:01:27 +00:00
SUserAuthInfo authInfo = {0};
2023-04-10 02:53:29 +00:00
SUserAuthRes authRes = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(authInfo.user, ctgTestUsername);
2024-09-06 02:16:15 +00:00
toName(1, ctgTestDbname, ctgTestSTablename, &authInfo.tbName);
2023-04-06 02:01:27 +00:00
authInfo.type = AUTH_TYPE_READ;
2022-11-01 03:43:40 +00:00
bool exists = false;
2023-04-06 02:01:27 +00:00
code = catalogChkAuthFromCache(pCtg, &authInfo, &authRes, &exists);
2022-11-01 03:43:40 +00:00
ASSERT_EQ(code, 0);
ASSERT_EQ(exists, false);
2023-04-06 02:01:27 +00:00
code = catalogChkAuth(pCtg, mockPointer, &authInfo, &authRes);
2022-10-27 11:33:00 +00:00
ASSERT_EQ(code, 0);
2023-10-20 00:41:49 +00:00
ASSERT_EQ(authRes.pass[AUTH_RES_BASIC], true);
2022-10-27 11:33:00 +00:00
2022-11-01 03:43:40 +00:00
while (true) {
uint64_t n = 0;
2024-07-19 05:46:35 +00:00
ASSERT(0 == ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n));
2022-11-01 03:43:40 +00:00
if (n != 1) {
taosMsleep(50);
} else {
break;
}
}
2023-04-06 02:01:27 +00:00
code = catalogChkAuthFromCache(pCtg, &authInfo, &authRes, &exists);
2022-11-01 03:43:40 +00:00
ASSERT_EQ(code, 0);
2023-10-20 00:41:49 +00:00
ASSERT_EQ(authRes.pass[AUTH_RES_BASIC], true);
2022-11-01 03:43:40 +00:00
ASSERT_EQ(exists, true);
2022-10-27 11:33:00 +00:00
catalogDestroy();
}
TEST(apiTest, catalogRefreshGetTableCfg_test) {
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-27 11:33:00 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-10-27 11:33:00 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_VGINFO;
ctgTestRspFunc[1] = CTGT_RSP_TBMETA;
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2022-10-27 11:33:00 +00:00
STableCfg *pCfg = NULL;
code = catalogRefreshGetTableCfg(pCtg, mockPointer, &n, &pCfg);
ASSERT_EQ(code, 0);
ASSERT_TRUE(NULL != pCfg);
ASSERT_EQ(pCfg->numOfColumns, ctgTestColNum);
tFreeSTableCfgRsp((STableCfgRsp *)pCfg);
taosMemoryFree(pCfg);
catalogDestroy();
}
TEST(apiTest, catalogGetTableIndex_test) {
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-27 11:33:00 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-10-27 11:33:00 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_TBLINDEX;
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2022-10-27 11:33:00 +00:00
SArray *pRes = NULL;
code = catalogGetTableIndex(pCtg, mockPointer, &n, &pRes);
ASSERT_EQ(code, 0);
ASSERT_TRUE(NULL != pRes);
ASSERT_EQ(taosArrayGetSize(pRes), ctgTestIndexNum);
taosArrayDestroyEx(pRes, tFreeSTableIndexInfo);
catalogDestroy();
}
2024-12-23 08:07:47 +00:00
2022-10-28 03:44:06 +00:00
TEST(apiTest, catalogGetDBCfg_test) {
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-28 03:44:06 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-10-28 03:44:06 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_DBCFG;
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
SName n = {TSDB_TABLE_NAME_T, 1, {0}, {0}};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(n.dbname, "db1");
TAOS_STRCPY(n.tname, ctgTestTablename);
2022-10-28 03:44:06 +00:00
SDbCfgInfo cfgInfo = {0};
code = catalogGetDBCfg(pCtg, mockPointer, ctgTestDbname, &cfgInfo);
ASSERT_EQ(code, 0);
ASSERT_EQ(cfgInfo.numOfVgroups, ctgTestVgNum);
catalogDestroy();
}
TEST(apiTest, catalogGetQnodeList_test) {
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-28 03:44:06 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-10-28 03:44:06 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_QNODELIST;
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
SArray *qnodeList = taosArrayInit(10, sizeof(SQueryNodeLoad));
code = catalogGetQnodeList(pCtg, mockPointer, qnodeList);
ASSERT_EQ(code, 0);
ASSERT_EQ(taosArrayGetSize(qnodeList), ctgTestQnodeNum);
for (int32_t i = 0; i < ctgTestQnodeNum; ++i) {
2023-04-10 02:53:29 +00:00
SQueryNodeLoad *pLoad = (SQueryNodeLoad *)taosArrayGet(qnodeList, i);
2022-10-28 03:44:06 +00:00
ASSERT_EQ(pLoad->addr.nodeId, i);
}
catalogDestroy();
}
TEST(apiTest, catalogGetUdfInfo_test) {
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-28 03:44:06 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-10-28 03:44:06 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_UDF;
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
SFuncInfo funcInfo = {0};
code = catalogGetUdfInfo(pCtg, mockPointer, "func1", &funcInfo);
ASSERT_EQ(code, 0);
ASSERT_EQ(funcInfo.funcType, ctgTestFuncType);
catalogDestroy();
}
TEST(apiTest, catalogGetServerVersion_test) {
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-28 03:44:06 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-10-28 03:44:06 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_SVRVER;
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2023-04-10 02:53:29 +00:00
char *ver = NULL;
2022-10-28 03:44:06 +00:00
code = catalogGetServerVersion(pCtg, mockPointer, &ver);
ASSERT_EQ(code, 0);
ASSERT_TRUE(0 == strcmp(ver, "1.0"));
catalogDestroy();
}
2022-10-29 10:34:42 +00:00
TEST(apiTest, catalogUpdateTableIndex_test) {
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-29 10:34:42 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-10-29 10:34:42 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_SVRVER;
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
STableIndexRsp rsp = {0};
2024-07-19 05:46:35 +00:00
TAOS_STRCPY(rsp.dbFName, ctgTestDbname);
TAOS_STRCPY(rsp.tbName, ctgTestSTablename);
2022-10-29 10:34:42 +00:00
rsp.suid = ctgTestSuid;
rsp.version = 1;
code = catalogUpdateTableIndex(pCtg, &rsp);
ASSERT_EQ(code, 0);
catalogDestroy();
}
TEST(apiTest, catalogGetDnodeList_test) {
struct SCatalog *pCtg = NULL;
2023-04-10 02:53:29 +00:00
SRequestConnInfo connInfo = {0};
2022-10-29 10:34:42 +00:00
SRequestConnInfo *mockPointer = (SRequestConnInfo *)&connInfo;
ctgTestInitLogFile();
2024-07-19 05:46:35 +00:00
TAOS_MEMSET(ctgTestRspFunc, 0, sizeof(ctgTestRspFunc));
2022-10-29 10:34:42 +00:00
ctgTestRspIdx = 0;
ctgTestRspFunc[0] = CTGT_RSP_DNODElIST;
ctgTestSetRspByIdx();
initQueryModuleMsgHandle();
int32_t code = catalogInit(NULL);
ASSERT_EQ(code, 0);
code = catalogGetHandle(ctgTestClusterId, &pCtg);
ASSERT_EQ(code, 0);
2023-04-10 02:53:29 +00:00
SArray *pList = NULL;
2022-10-29 10:34:42 +00:00
code = catalogGetDnodeList(pCtg, mockPointer, &pList);
ASSERT_EQ(code, 0);
ASSERT_EQ(taosArrayGetSize(pList), 1);
taosArrayDestroy(pList);
catalogDestroy();
}
2022-10-27 11:33:00 +00:00
2022-11-02 07:18:32 +00:00
#ifdef INTEGRATION_TEST
TEST(intTest, autoCreateTableTest) {
2023-04-10 02:53:29 +00:00
struct SCatalog *pCtg = NULL;
2022-11-02 07:18:32 +00:00
2023-04-10 02:53:29 +00:00
TAOS *taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
ASSERT_TRUE(NULL != taos);
2022-11-02 07:18:32 +00:00
2024-07-19 05:46:35 +00:00
(void)ctgdEnableDebug("api", true);
(void)ctgdEnableDebug("meta", true);
(void)ctgdEnableDebug("cache", true);
(void)ctgdEnableDebug("lock", true);
2023-04-10 02:53:29 +00:00
2022-11-02 07:18:32 +00:00
ctgTestExecQuery(taos, "drop database if exists db1", false, NULL);
ctgTestExecQuery(taos, "create database db1", false, NULL);
ctgTestExecQuery(taos, "create stable db1.st1 (ts timestamp, f1 int) tags(tg1 int)", false, NULL);
ctgTestExecQuery(taos, "insert into db1.tb1 using db1.st1 tags(1) values(now, 1)", false, NULL);
2024-07-19 05:46:35 +00:00
(void)ctgdGetOneHandle(&pCtg);
2023-04-10 02:53:29 +00:00
2022-11-02 07:18:32 +00:00
while (true) {
uint32_t n = ctgdGetClusterCacheNum(pCtg, CTG_DBG_META_NUM);
if (2 != n) {
taosMsleep(50);
} else {
break;
}
}
uint64_t n = 0, m = 0;
ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&n);
ctgTestExecQuery(taos, "insert into db1.tb1 using db1.st1 tags(1) values(now, 2)", false, NULL);
ctgTestExecQuery(taos, "insert into db1.tb1 values(now, 3)", false, NULL);
taosMsleep(1000);
ctgdGetStatNum("runtime.numOfOpDequeue", (void *)&m);
ASSERT_EQ(n, m);
ctgdEnableDebug("stopUpdate", true);
ctgTestExecQuery(taos, "alter table db1.st1 add column f2 double", false, NULL);
ctgdEnableDebug("stopUpdate", false);
2023-04-10 02:53:29 +00:00
2022-11-02 07:18:32 +00:00
ctgTestExecQuery(taos, "insert into db1.tb1 (ts, f1) values(now, 4)", false, NULL);
2023-04-10 02:53:29 +00:00
2022-11-02 07:18:32 +00:00
taos_close(taos);
}
#endif
2022-01-21 10:19:40 +00:00
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
2021-12-16 08:23:25 +00:00
2022-01-28 09:50:16 +00:00
#pragma GCC diagnostic pop