test: add unitest for sdb
This commit is contained in:
parent
4bdd90880c
commit
04c4135a38
|
@ -39,14 +39,16 @@ static int32_t mndRetrieveUsers(SNodeMsg *pReq, SShowObj *pShow, SSDataBlock *p
|
||||||
static void mndCancelGetNextUser(SMnode *pMnode, void *pIter);
|
static void mndCancelGetNextUser(SMnode *pMnode, void *pIter);
|
||||||
|
|
||||||
int32_t mndInitUser(SMnode *pMnode) {
|
int32_t mndInitUser(SMnode *pMnode) {
|
||||||
SSdbTable table = {.sdbType = SDB_USER,
|
SSdbTable table = {
|
||||||
.keyType = SDB_KEY_BINARY,
|
.sdbType = SDB_USER,
|
||||||
.deployFp = (SdbDeployFp)mndCreateDefaultUsers,
|
.keyType = SDB_KEY_BINARY,
|
||||||
.encodeFp = (SdbEncodeFp)mndUserActionEncode,
|
.deployFp = (SdbDeployFp)mndCreateDefaultUsers,
|
||||||
.decodeFp = (SdbDecodeFp)mndUserActionDecode,
|
.encodeFp = (SdbEncodeFp)mndUserActionEncode,
|
||||||
.insertFp = (SdbInsertFp)mndUserActionInsert,
|
.decodeFp = (SdbDecodeFp)mndUserActionDecode,
|
||||||
.updateFp = (SdbUpdateFp)mndUserActionUpdate,
|
.insertFp = (SdbInsertFp)mndUserActionInsert,
|
||||||
.deleteFp = (SdbDeleteFp)mndUserActionDelete};
|
.updateFp = (SdbUpdateFp)mndUserActionUpdate,
|
||||||
|
.deleteFp = (SdbDeleteFp)mndUserActionDelete,
|
||||||
|
};
|
||||||
|
|
||||||
mndSetMsgHandle(pMnode, TDMT_MND_CREATE_USER, mndProcessCreateUserReq);
|
mndSetMsgHandle(pMnode, TDMT_MND_CREATE_USER, mndProcessCreateUserReq);
|
||||||
mndSetMsgHandle(pMnode, TDMT_MND_ALTER_USER, mndProcessAlterUserReq);
|
mndSetMsgHandle(pMnode, TDMT_MND_ALTER_USER, mndProcessAlterUserReq);
|
||||||
|
|
|
@ -9,75 +9,111 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "sut.h"
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
class MndTestShow : public ::testing::Test {
|
#include "sdb.h"
|
||||||
|
|
||||||
|
class MndTestSdb : public ::testing::Test {
|
||||||
protected:
|
protected:
|
||||||
static void SetUpTestSuite() { test.Init("/tmp/mnode_test_show", 9021); }
|
static void SetUpTestSuite() {}
|
||||||
static void TearDownTestSuite() { test.Cleanup(); }
|
static void TearDownTestSuite() {}
|
||||||
|
|
||||||
static Testbase test;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void SetUp() override {}
|
void SetUp() override {}
|
||||||
void TearDown() override {}
|
void TearDown() override {}
|
||||||
};
|
};
|
||||||
|
|
||||||
Testbase MndTestShow::test;
|
typedef struct SStrObj {
|
||||||
|
char key[24];
|
||||||
|
int8_t v8;
|
||||||
|
int16_t v16;
|
||||||
|
int32_t v32;
|
||||||
|
int64_t v64;
|
||||||
|
char vstr[32];
|
||||||
|
char unused[48];
|
||||||
|
} SStrObj;
|
||||||
|
|
||||||
TEST_F(MndTestShow, 01_ShowMsg_InvalidMsgMax) {
|
typedef struct SI32Obj {
|
||||||
SShowReq showReq = {0};
|
int32_t key;
|
||||||
showReq.type = TSDB_MGMT_TABLE_MAX;
|
int8_t v8;
|
||||||
|
int16_t v16;
|
||||||
|
int32_t v32;
|
||||||
|
int64_t v64;
|
||||||
|
char vstr[32];
|
||||||
|
char unused[48];
|
||||||
|
} SI32Obj;
|
||||||
|
|
||||||
int32_t contLen = tSerializeSShowReq(NULL, 0, &showReq);
|
typedef struct SI64Obj {
|
||||||
void* pReq = rpcMallocCont(contLen);
|
int64_t key;
|
||||||
tSerializeSShowReq(pReq, contLen, &showReq);
|
int8_t v8;
|
||||||
tFreeSShowReq(&showReq);
|
int16_t v16;
|
||||||
|
int32_t v32;
|
||||||
|
int64_t v64;
|
||||||
|
char vstr[32];
|
||||||
|
char unused[48];
|
||||||
|
} SI64Obj;
|
||||||
|
|
||||||
SRpcMsg* pRsp = test.SendReq(TDMT_MND_SYSTABLE_RETRIEVE, pReq, contLen);
|
SSdbRaw *strEncode(SStrObj *pObj) {
|
||||||
ASSERT_NE(pRsp, nullptr);
|
int32_t dataPos = 0;
|
||||||
ASSERT_NE(pRsp->code, 0);
|
SSdbRaw *pRaw = sdbAllocRaw(SDB_USER, 1, sizeof(SStrObj));
|
||||||
|
|
||||||
|
sdbSetRawBinary(pRaw, dataPos, pObj->key, sizeof(pObj->key));
|
||||||
|
dataPos += sizeof(pObj->key);
|
||||||
|
sdbSetRawInt8(pRaw, dataPos, pObj->v8);
|
||||||
|
dataPos += sizeof(pObj->v8);
|
||||||
|
sdbSetRawInt16(pRaw, dataPos, pObj->v16);
|
||||||
|
dataPos += sizeof(pObj->v16);
|
||||||
|
sdbSetRawInt32(pRaw, dataPos, pObj->v32);
|
||||||
|
dataPos += sizeof(pObj->v32);
|
||||||
|
sdbSetRawInt64(pRaw, dataPos, pObj->v64);
|
||||||
|
dataPos += sizeof(pObj->v64);
|
||||||
|
sdbSetRawBinary(pRaw, dataPos, pObj->key, sizeof(pObj->vstr));
|
||||||
|
dataPos += sizeof(pObj->key);
|
||||||
|
sdbSetRawDataLen(pRaw, dataPos);
|
||||||
|
|
||||||
|
return pRaw;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(MndTestShow, 02_ShowMsg_InvalidMsgStart) {
|
SSdbRaw *strDecode(SStrObj *pObj) {
|
||||||
SShowReq showReq = {0};
|
int32_t dataPos = 0;
|
||||||
showReq.type = TSDB_MGMT_TABLE_START;
|
SSdbRaw *pRaw = sdbAllocRaw(SDB_USER, 1, sizeof(SStrObj));
|
||||||
|
|
||||||
int32_t contLen = tSerializeSShowReq(NULL, 0, &showReq);
|
sdbSetRawBinary(pRaw, dataPos, pObj->key, sizeof(pObj->key));
|
||||||
void* pReq = rpcMallocCont(contLen);
|
dataPos += sizeof(pObj->key);
|
||||||
tSerializeSShowReq(pReq, contLen, &showReq);
|
sdbSetRawInt8(pRaw, dataPos, pObj->v8);
|
||||||
tFreeSShowReq(&showReq);
|
dataPos += sizeof(pObj->v8);
|
||||||
|
sdbSetRawInt16(pRaw, dataPos, pObj->v16);
|
||||||
|
dataPos += sizeof(pObj->v16);
|
||||||
|
sdbSetRawInt32(pRaw, dataPos, pObj->v32);
|
||||||
|
dataPos += sizeof(pObj->v32);
|
||||||
|
sdbSetRawInt64(pRaw, dataPos, pObj->v64);
|
||||||
|
dataPos += sizeof(pObj->v64);
|
||||||
|
sdbSetRawBinary(pRaw, dataPos, pObj->key, sizeof(pObj->vstr));
|
||||||
|
dataPos += sizeof(pObj->key);
|
||||||
|
sdbSetRawDataLen(pRaw, dataPos);
|
||||||
|
|
||||||
SRpcMsg* pRsp = test.SendReq(TDMT_MND_SYSTABLE_RETRIEVE, pReq, contLen);
|
return pRaw;
|
||||||
ASSERT_NE(pRsp, nullptr);
|
|
||||||
ASSERT_NE(pRsp->code, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(MndTestShow, 03_ShowMsg_Conn) {
|
TEST_F(MndTestSdb, 01_Basic) {
|
||||||
char passwd[] = "taosdata";
|
SSdbOpt opt = {0};
|
||||||
char secretEncrypt[TSDB_PASSWORD_LEN] = {0};
|
opt.path = "/tmp/mnode_test_sdb";
|
||||||
taosEncryptPass_c((uint8_t*)passwd, strlen(passwd), secretEncrypt);
|
|
||||||
|
|
||||||
SConnectReq connectReq = {0};
|
SSdb *pSdb = sdbInit(&opt);
|
||||||
connectReq.pid = 1234;
|
EXPECT_NE(pSdb, nullptr);
|
||||||
strcpy(connectReq.app, "mnode_test_show");
|
|
||||||
strcpy(connectReq.db, "");
|
|
||||||
strcpy(connectReq.user, "root");
|
|
||||||
strcpy(connectReq.passwd, secretEncrypt);
|
|
||||||
|
|
||||||
int32_t contLen = tSerializeSConnectReq(NULL, 0, &connectReq);
|
SSdbTable strTable = {
|
||||||
void* pReq = rpcMallocCont(contLen);
|
.sdbType = SDB_USER,
|
||||||
tSerializeSConnectReq(pReq, contLen, &connectReq);
|
.keyType = SDB_KEY_BINARY,
|
||||||
|
.deployFp = (SdbDeployFp)strEncode,
|
||||||
|
.encodeFp = (SdbEncodeFp)strDecode,
|
||||||
|
.decodeFp = (SdbDecodeFp)NULL,
|
||||||
|
.insertFp = (SdbInsertFp)NULL,
|
||||||
|
.updateFp = (SdbUpdateFp)NULL,
|
||||||
|
.deleteFp = (SdbDeleteFp)NULL,
|
||||||
|
};
|
||||||
|
|
||||||
SRpcMsg* pRsp = test.SendReq(TDMT_MND_CONNECT, pReq, contLen);
|
sdbSetTable(pSdb, strTable);
|
||||||
ASSERT_NE(pRsp, nullptr);
|
|
||||||
ASSERT_EQ(pRsp->code, 0);
|
|
||||||
|
|
||||||
test.SendShowReq(TSDB_MGMT_TABLE_CONNS, "connections", "");
|
sdbCleanup(pSdb);
|
||||||
// EXPECT_EQ(test.GetShowRows(), 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(MndTestShow, 04_ShowMsg_Cluster) {
|
|
||||||
test.SendShowReq(TSDB_MGMT_TABLE_CLUSTER, "cluster", "");
|
|
||||||
EXPECT_EQ(test.GetShowRows(), 1);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue