homework-jianmu/source/dnode/mnode/impl/test/sdb/sdbTest.cpp

120 lines
2.7 KiB
C++

/**
* @file sdbTest.cpp
* @author slguan (slguan@taosdata.com)
* @brief MNODE module sdb tests
* @version 1.0
* @date 2022-04-27
*
* @copyright Copyright (c) 2022
*
*/
#include <gtest/gtest.h>
#include "sdb.h"
class MndTestSdb : public ::testing::Test {
protected:
static void SetUpTestSuite() {}
static void TearDownTestSuite() {}
public:
void SetUp() override {}
void TearDown() override {}
};
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;
typedef struct SI32Obj {
int32_t key;
int8_t v8;
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;
}
SSdbRaw *strDecode(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(MndTestSdb, 01_Basic) {
SSdbOpt opt = {0};
opt.path = "/tmp/mnode_test_sdb";
SSdb *pSdb = sdbInit(&opt);
EXPECT_NE(pSdb, nullptr);
SSdbTable strTable = {
.sdbType = SDB_USER,
.keyType = SDB_KEY_BINARY,
.deployFp = (SdbDeployFp)strEncode,
.encodeFp = (SdbEncodeFp)strDecode,
.decodeFp = (SdbDecodeFp)NULL,
.insertFp = (SdbInsertFp)NULL,
.updateFp = (SdbUpdateFp)NULL,
.deleteFp = (SdbDeleteFp)NULL,
};
sdbSetTable(pSdb, strTable);
sdbCleanup(pSdb);
}