提交 04c4135a 编写于 作者: S Shengliang Guan

test: add unitest for sdb

上级 4bdd9088
...@@ -39,14 +39,16 @@ static int32_t mndRetrieveUsers(SNodeMsg *pReq, SShowObj *pShow, SSDataBlock *p ...@@ -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 @@ ...@@ -9,75 +9,111 @@
* *
*/ */
#include "sut.h" #include <gtest/gtest.h>
class MndTestShow : public ::testing::Test { #include "sdb.h"
protected:
static void SetUpTestSuite() { test.Init("/tmp/mnode_test_show", 9021); }
static void TearDownTestSuite() { test.Cleanup(); }
static Testbase test; class MndTestSdb : public ::testing::Test {
protected:
static void SetUpTestSuite() {}
static void TearDownTestSuite() {}
public: public:
void SetUp() override {} void SetUp() override {}
void TearDown() override {} void TearDown() override {}
}; };
Testbase MndTestShow::test; typedef struct SStrObj {
char key[24];
TEST_F(MndTestShow, 01_ShowMsg_InvalidMsgMax) { int8_t v8;
SShowReq showReq = {0}; int16_t v16;
showReq.type = TSDB_MGMT_TABLE_MAX; int32_t v32;
int64_t v64;
int32_t contLen = tSerializeSShowReq(NULL, 0, &showReq); char vstr[32];
void* pReq = rpcMallocCont(contLen); char unused[48];
tSerializeSShowReq(pReq, contLen, &showReq); } SStrObj;
tFreeSShowReq(&showReq);
typedef struct SI32Obj {
SRpcMsg* pRsp = test.SendReq(TDMT_MND_SYSTABLE_RETRIEVE, pReq, contLen); int32_t key;
ASSERT_NE(pRsp, nullptr); int8_t v8;
ASSERT_NE(pRsp->code, 0); int16_t v16;
int32_t v32;
int64_t v64;
char vstr[32];
char unused[48];
} SI32Obj;
typedef struct SI64Obj {
int64_t key;
int8_t v8;
int16_t v16;
int32_t v32;
int64_t v64;
char vstr[32];
char unused[48];
} SI64Obj;
SSdbRaw *strEncode(SStrObj *pObj) {
int32_t dataPos = 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);
SRpcMsg* pRsp = test.SendReq(TDMT_MND_SYSTABLE_RETRIEVE, pReq, contLen); dataPos += sizeof(pObj->v16);
ASSERT_NE(pRsp, nullptr); sdbSetRawInt32(pRaw, dataPos, pObj->v32);
ASSERT_NE(pRsp->code, 0); 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, 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", "");
// EXPECT_EQ(test.GetShowRows(), 1);
}
TEST_F(MndTestShow, 04_ShowMsg_Cluster) { sdbCleanup(pSdb);
test.SendShowReq(TSDB_MGMT_TABLE_CLUSTER, "cluster", "");
EXPECT_EQ(test.GetShowRows(), 1);
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册