test: reopen transTest
This commit is contained in:
parent
1e73923c4d
commit
2b7ec5743c
|
@ -27,7 +27,7 @@ void mndCleanupDb(SMnode *pMnode);
|
||||||
SDbObj *mndAcquireDb(SMnode *pMnode, const char *db);
|
SDbObj *mndAcquireDb(SMnode *pMnode, const char *db);
|
||||||
void mndReleaseDb(SMnode *pMnode, SDbObj *pDb);
|
void mndReleaseDb(SMnode *pMnode, SDbObj *pDb);
|
||||||
int32_t mndValidateDbInfo(SMnode *pMnode, SDbVgVersion *pDbs, int32_t numOfDbs, void **ppRsp, int32_t *pRspLen);
|
int32_t mndValidateDbInfo(SMnode *pMnode, SDbVgVersion *pDbs, int32_t numOfDbs, void **ppRsp, int32_t *pRspLen);
|
||||||
char *mnGetDbStr(char *src);
|
char *mndGetDbStr(char *src);
|
||||||
int32_t mndExtractDbInfo(SMnode *pMnode, SDbObj *pDb, SUseDbRsp *pRsp, const SUseDbReq *pReq);
|
int32_t mndExtractDbInfo(SMnode *pMnode, SDbObj *pDb, SUseDbRsp *pRsp, const SUseDbReq *pReq);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -1340,7 +1340,7 @@ SYNC_DB_OVER:
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *mnGetDbStr(char *src) {
|
char *mndGetDbStr(char *src) {
|
||||||
char *pos = strstr(src, TS_PATH_DELIMITER);
|
char *pos = strstr(src, TS_PATH_DELIMITER);
|
||||||
if (pos != NULL) ++pos;
|
if (pos != NULL) ++pos;
|
||||||
|
|
||||||
|
@ -1355,7 +1355,7 @@ static void dumpDbInfoData(SSDataBlock* pBlock, SDbObj *pDb, SShowObj *pShow, in
|
||||||
int32_t cols = 0;
|
int32_t cols = 0;
|
||||||
|
|
||||||
char* buf = taosMemoryMalloc(pShow->bytes[cols]);
|
char* buf = taosMemoryMalloc(pShow->bytes[cols]);
|
||||||
char *name = mnGetDbStr(pDb->name);
|
char *name = mndGetDbStr(pDb->name);
|
||||||
if (name != NULL) {
|
if (name != NULL) {
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(buf, name, pShow->bytes[cols]);
|
STR_WITH_MAXSIZE_TO_VARSTR(buf, name, pShow->bytes[cols]);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -131,6 +131,13 @@ static int32_t mndProcessRetrieveSysTableReq(SNodeMsg *pReq) {
|
||||||
req.type = retrieveReq.type;
|
req.type = retrieveReq.type;
|
||||||
strncpy(req.db, retrieveReq.db, tListLen(req.db));
|
strncpy(req.db, retrieveReq.db, tListLen(req.db));
|
||||||
|
|
||||||
|
STableMetaRsp *pMeta = (STableMetaRsp *)taosHashGet(pMnode->infosMeta, retrieveReq.tb, strlen(retrieveReq.tb) + 1);
|
||||||
|
if (pMeta == NULL) {
|
||||||
|
terrno = TSDB_CODE_MND_INVALID_INFOS_TBL;
|
||||||
|
mError("failed to process show-retrieve req:%p since %s", pShow, terrstr());
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
pShow = mndCreateShowObj(pMnode, &req);
|
pShow = mndCreateShowObj(pMnode, &req);
|
||||||
if (pShow == NULL) {
|
if (pShow == NULL) {
|
||||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
@ -138,7 +145,7 @@ static int32_t mndProcessRetrieveSysTableReq(SNodeMsg *pReq) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pShow->pMeta = (STableMetaRsp *)taosHashGet(pMnode->infosMeta, retrieveReq.tb, strlen(retrieveReq.tb) + 1);
|
pShow->pMeta = pMeta;
|
||||||
pShow->numOfColumns = pShow->pMeta->numOfColumns;
|
pShow->numOfColumns = pShow->pMeta->numOfColumns;
|
||||||
int32_t offset = 0;
|
int32_t offset = 0;
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ static void mndTransSendRpcRsp(SMnode *pMnode, STrans *pTrans);
|
||||||
static int32_t mndProcessTransReq(SNodeMsg *pReq);
|
static int32_t mndProcessTransReq(SNodeMsg *pReq);
|
||||||
static int32_t mndProcessKillTransReq(SNodeMsg *pReq);
|
static int32_t mndProcessKillTransReq(SNodeMsg *pReq);
|
||||||
|
|
||||||
static int32_t mndRetrieveTrans(SNodeMsg *pReq, SShowObj *pShow, char *data, int32_t rows);
|
static int32_t mndRetrieveTrans(SNodeMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows);
|
||||||
static void mndCancelGetNextTrans(SMnode *pMnode, void *pIter);
|
static void mndCancelGetNextTrans(SMnode *pMnode, void *pIter);
|
||||||
|
|
||||||
int32_t mndInitTrans(SMnode *pMnode) {
|
int32_t mndInitTrans(SMnode *pMnode) {
|
||||||
|
@ -73,7 +73,7 @@ int32_t mndInitTrans(SMnode *pMnode) {
|
||||||
mndSetMsgHandle(pMnode, TDMT_MND_TRANS_TIMER, mndProcessTransReq);
|
mndSetMsgHandle(pMnode, TDMT_MND_TRANS_TIMER, mndProcessTransReq);
|
||||||
mndSetMsgHandle(pMnode, TDMT_MND_KILL_TRANS, mndProcessKillTransReq);
|
mndSetMsgHandle(pMnode, TDMT_MND_KILL_TRANS, mndProcessKillTransReq);
|
||||||
|
|
||||||
// mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_TRANS, mndRetrieveTrans);
|
mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_TRANS, mndRetrieveTrans);
|
||||||
mndAddShowFreeIterHandle(pMnode, TSDB_MGMT_TABLE_TRANS, mndCancelGetNextTrans);
|
mndAddShowFreeIterHandle(pMnode, TSDB_MGMT_TABLE_TRANS, mndCancelGetNextTrans);
|
||||||
return sdbSetTable(pMnode->pSdb, table);
|
return sdbSetTable(pMnode->pSdb, table);
|
||||||
}
|
}
|
||||||
|
@ -1259,7 +1259,7 @@ void mndTransPullup(SMnode *pMnode) {
|
||||||
sdbWriteFile(pMnode->pSdb);
|
sdbWriteFile(pMnode->pSdb);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t mndRetrieveTrans(SNodeMsg *pReq, SShowObj *pShow, char *data, int32_t rows) {
|
static int32_t mndRetrieveTrans(SNodeMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) {
|
||||||
SMnode *pMnode = pReq->pNode;
|
SMnode *pMnode = pReq->pNode;
|
||||||
SSdb *pSdb = pMnode->pSdb;
|
SSdb *pSdb = pMnode->pSdb;
|
||||||
int32_t numOfRows = 0;
|
int32_t numOfRows = 0;
|
||||||
|
@ -1273,34 +1273,34 @@ static int32_t mndRetrieveTrans(SNodeMsg *pReq, SShowObj *pShow, char *data, int
|
||||||
|
|
||||||
cols = 0;
|
cols = 0;
|
||||||
|
|
||||||
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
*(int32_t *)pWrite = pTrans->id;
|
colDataAppend(pColInfo, numOfRows, (const char *)&pTrans->id, false);
|
||||||
cols++;
|
|
||||||
|
|
||||||
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
*(int64_t *)pWrite = pTrans->createdTime;
|
colDataAppend(pColInfo, numOfRows, (const char *)&pTrans->createdTime, false);
|
||||||
cols++;
|
|
||||||
|
|
||||||
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
|
char stage[TSDB_TRANS_STAGE_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(pWrite, mndTransStr(pTrans->stage));
|
STR_WITH_MAXSIZE_TO_VARSTR(stage, mndTransStr(pTrans->stage), pShow->bytes[cols]);
|
||||||
cols++;
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
|
colDataAppend(pColInfo, numOfRows, (const char *)stage, false);
|
||||||
|
|
||||||
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
|
char dbname[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
char *name = mnGetDbStr(pTrans->dbname);
|
STR_WITH_MAXSIZE_TO_VARSTR(dbname, mndGetDbStr(pTrans->dbname), pShow->bytes[cols]);
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(pWrite, name, pShow->bytes[cols]);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
cols++;
|
colDataAppend(pColInfo, numOfRows, (const char *)dbname, false);
|
||||||
|
|
||||||
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
|
char transType[TSDB_TRANS_TYPE_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(pWrite, mndTransType(pTrans->transType));
|
STR_WITH_MAXSIZE_TO_VARSTR(dbname, mndTransType(pTrans->transType), pShow->bytes[cols]);
|
||||||
cols++;
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
|
colDataAppend(pColInfo, numOfRows, (const char *)transType, false);
|
||||||
|
|
||||||
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
*(int64_t *)pWrite = pTrans->lastExecTime;
|
colDataAppend(pColInfo, numOfRows, (const char *)&pTrans->lastExecTime, false);
|
||||||
cols++;
|
|
||||||
|
|
||||||
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
|
char lastError[TSDB_TRANS_ERROR_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(pWrite, pTrans->lastError);
|
STR_WITH_MAXSIZE_TO_VARSTR(dbname, pTrans->lastError, pShow->bytes[cols]);
|
||||||
cols++;
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
|
colDataAppend(pColInfo, numOfRows, (const char *)lastError, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pTrans);
|
sdbRelease(pSdb, pTrans);
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
aux_source_directory(. TRANS_SRC)
|
aux_source_directory(. MNODE_TRANS_TEST_SRC)
|
||||||
add_executable(mnode_test_trans ${TRANS_SRC})
|
add_executable(transTest ${MNODE_TRANS_TEST_SRC})
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
mnode_test_trans
|
transTest
|
||||||
PUBLIC sut
|
PUBLIC sut
|
||||||
)
|
)
|
||||||
|
|
||||||
add_test(
|
add_test(
|
||||||
NAME mnode_test_trans
|
NAME transTest
|
||||||
COMMAND mnode_test_trans
|
COMMAND transTest
|
||||||
)
|
)
|
||||||
|
|
|
@ -65,18 +65,7 @@ TestServer MndTestTrans::server2;
|
||||||
|
|
||||||
TEST_F(MndTestTrans, 00_Create_User_Crash) {
|
TEST_F(MndTestTrans, 00_Create_User_Crash) {
|
||||||
{
|
{
|
||||||
test.SendShowMetaReq(TSDB_MGMT_TABLE_TRANS, "");
|
test.SendShowReq(TSDB_MGMT_TABLE_TRANS, "trans", "");
|
||||||
CHECK_META("show trans", 7);
|
|
||||||
|
|
||||||
CHECK_SCHEMA(0, TSDB_DATA_TYPE_INT, 4, "id");
|
|
||||||
CHECK_SCHEMA(1, TSDB_DATA_TYPE_TIMESTAMP, 8, "create_time");
|
|
||||||
CHECK_SCHEMA(2, TSDB_DATA_TYPE_BINARY, TSDB_TRANS_STAGE_LEN + VARSTR_HEADER_SIZE, "stage");
|
|
||||||
CHECK_SCHEMA(3, TSDB_DATA_TYPE_BINARY, TSDB_DB_NAME_LEN - 1 + VARSTR_HEADER_SIZE, "db");
|
|
||||||
CHECK_SCHEMA(4, TSDB_DATA_TYPE_BINARY, TSDB_TRANS_TYPE_LEN + VARSTR_HEADER_SIZE, "type");
|
|
||||||
CHECK_SCHEMA(5, TSDB_DATA_TYPE_TIMESTAMP, 8, "last_exec_time");
|
|
||||||
CHECK_SCHEMA(6, TSDB_DATA_TYPE_BINARY, TSDB_TRANS_ERROR_LEN - 1 + VARSTR_HEADER_SIZE, "last_error");
|
|
||||||
|
|
||||||
test.SendShowRetrieveReq();
|
|
||||||
EXPECT_EQ(test.GetShowRows(), 0);
|
EXPECT_EQ(test.GetShowRows(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,26 +98,13 @@ TEST_F(MndTestTrans, 01_Create_User_Crash) {
|
||||||
ASSERT_EQ(pRsp->code, 0);
|
ASSERT_EQ(pRsp->code, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
test.SendShowMetaReq(TSDB_MGMT_TABLE_USER, "");
|
test.SendShowReq(TSDB_MGMT_TABLE_USER, "user_users", "");
|
||||||
CHECK_META("show users", 4);
|
|
||||||
test.SendShowRetrieveReq();
|
|
||||||
EXPECT_EQ(test.GetShowRows(), 2);
|
EXPECT_EQ(test.GetShowRows(), 2);
|
||||||
|
|
||||||
KillThenRestartServer();
|
KillThenRestartServer();
|
||||||
|
|
||||||
test.SendShowMetaReq(TSDB_MGMT_TABLE_USER, "");
|
test.SendShowReq(TSDB_MGMT_TABLE_USER, "user_users", "");
|
||||||
CHECK_META("show users", 4);
|
|
||||||
test.SendShowRetrieveReq();
|
|
||||||
EXPECT_EQ(test.GetShowRows(), 2);
|
EXPECT_EQ(test.GetShowRows(), 2);
|
||||||
|
|
||||||
CheckBinary("u1", TSDB_USER_LEN);
|
|
||||||
CheckBinary("root", TSDB_USER_LEN);
|
|
||||||
CheckBinary("normal", 10);
|
|
||||||
CheckBinary("super", 10);
|
|
||||||
CheckTimestamp();
|
|
||||||
CheckTimestamp();
|
|
||||||
CheckBinary("root", TSDB_USER_LEN);
|
|
||||||
CheckBinary("root", TSDB_USER_LEN);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(MndTestTrans, 02_Create_Qnode1_Crash) {
|
TEST_F(MndTestTrans, 02_Create_Qnode1_Crash) {
|
||||||
|
@ -144,9 +120,7 @@ TEST_F(MndTestTrans, 02_Create_Qnode1_Crash) {
|
||||||
ASSERT_NE(pRsp, nullptr);
|
ASSERT_NE(pRsp, nullptr);
|
||||||
ASSERT_EQ(pRsp->code, 0);
|
ASSERT_EQ(pRsp->code, 0);
|
||||||
|
|
||||||
test.SendShowMetaReq(TSDB_MGMT_TABLE_QNODE, "");
|
test.SendShowReq(TSDB_MGMT_TABLE_QNODE, "qnodes", "");
|
||||||
CHECK_META("show qnodes", 3);
|
|
||||||
test.SendShowRetrieveReq();
|
|
||||||
EXPECT_EQ(test.GetShowRows(), 1);
|
EXPECT_EQ(test.GetShowRows(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,9 +137,7 @@ TEST_F(MndTestTrans, 02_Create_Qnode1_Crash) {
|
||||||
ASSERT_NE(pRsp, nullptr);
|
ASSERT_NE(pRsp, nullptr);
|
||||||
ASSERT_EQ(pRsp->code, TSDB_CODE_MND_QNODE_ALREADY_EXIST);
|
ASSERT_EQ(pRsp->code, TSDB_CODE_MND_QNODE_ALREADY_EXIST);
|
||||||
|
|
||||||
test.SendShowMetaReq(TSDB_MGMT_TABLE_QNODE, "");
|
test.SendShowReq(TSDB_MGMT_TABLE_QNODE, "qnodes", "");
|
||||||
CHECK_META("show qnodes", 3);
|
|
||||||
test.SendShowRetrieveReq();
|
|
||||||
EXPECT_EQ(test.GetShowRows(), 1);
|
EXPECT_EQ(test.GetShowRows(), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,8 +157,7 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
|
||||||
ASSERT_EQ(pRsp->code, 0);
|
ASSERT_EQ(pRsp->code, 0);
|
||||||
|
|
||||||
taosMsleep(1300);
|
taosMsleep(1300);
|
||||||
test.SendShowMetaReq(TSDB_MGMT_TABLE_DNODE, "");
|
test.SendShowReq(TSDB_MGMT_TABLE_DNODE, "dnodes", "");
|
||||||
test.SendShowRetrieveReq();
|
|
||||||
EXPECT_EQ(test.GetShowRows(), 2);
|
EXPECT_EQ(test.GetShowRows(), 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,18 +179,8 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
|
||||||
|
|
||||||
{
|
{
|
||||||
// show trans
|
// show trans
|
||||||
test.SendShowMetaReq(TSDB_MGMT_TABLE_TRANS, "");
|
test.SendShowReq(TSDB_MGMT_TABLE_TRANS, "trans", "");
|
||||||
CHECK_META("show trans", 7);
|
|
||||||
test.SendShowRetrieveReq();
|
|
||||||
|
|
||||||
EXPECT_EQ(test.GetShowRows(), 1);
|
EXPECT_EQ(test.GetShowRows(), 1);
|
||||||
CheckInt32(4);
|
|
||||||
CheckTimestamp();
|
|
||||||
CheckBinary("undoAction", TSDB_TRANS_STAGE_LEN);
|
|
||||||
CheckBinary("", TSDB_DB_NAME_LEN - 1);
|
|
||||||
CheckBinary("create-qnode", TSDB_TRANS_TYPE_LEN);
|
|
||||||
CheckTimestamp();
|
|
||||||
CheckBinary("Unable to establish connection", TSDB_TRANS_ERROR_LEN - 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// kill trans
|
// kill trans
|
||||||
|
@ -238,8 +199,7 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
|
||||||
|
|
||||||
// show trans
|
// show trans
|
||||||
{
|
{
|
||||||
test.SendShowMetaReq(TSDB_MGMT_TABLE_TRANS, "");
|
test.SendShowReq(TSDB_MGMT_TABLE_TRANS, "trans", "");
|
||||||
test.SendShowRetrieveReq();
|
|
||||||
EXPECT_EQ(test.GetShowRows(), 0);
|
EXPECT_EQ(test.GetShowRows(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,11 +218,9 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
|
||||||
ASSERT_EQ(pRsp->code, TSDB_CODE_RPC_NETWORK_UNAVAIL);
|
ASSERT_EQ(pRsp->code, TSDB_CODE_RPC_NETWORK_UNAVAIL);
|
||||||
}
|
}
|
||||||
|
|
||||||
uInfo("======== kill and restart server")
|
uInfo("======== kill and restart server") KillThenRestartServer();
|
||||||
KillThenRestartServer();
|
|
||||||
|
|
||||||
uInfo("======== server2 start")
|
uInfo("======== server2 start") server2.DoStart();
|
||||||
server2.DoStart();
|
|
||||||
|
|
||||||
uInfo("======== server2 started")
|
uInfo("======== server2 started")
|
||||||
|
|
||||||
|
@ -286,14 +244,11 @@ TEST_F(MndTestTrans, 03_Create_Qnode2_Crash) {
|
||||||
|
|
||||||
ASSERT_NE(retry, retryMax);
|
ASSERT_NE(retry, retryMax);
|
||||||
|
|
||||||
test.SendShowMetaReq(TSDB_MGMT_TABLE_QNODE, "");
|
test.SendShowReq(TSDB_MGMT_TABLE_QNODE, "qnodes", "");
|
||||||
CHECK_META("show qnodes", 3);
|
|
||||||
test.SendShowRetrieveReq();
|
|
||||||
EXPECT_EQ(test.GetShowRows(), 2);
|
EXPECT_EQ(test.GetShowRows(), 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// create db
|
// create db
|
||||||
// partial create stb
|
// partial create stb
|
||||||
// drop db failed
|
// drop db failed
|
||||||
|
|
Loading…
Reference in New Issue