TDengine/source/dnode/mnode/impl/test/dnode/mdnode.cpp

378 lines
10 KiB
C++
Raw Normal View History

2021-12-16 09:05:13 +00:00
/**
2021-12-16 12:16:35 +00:00
* @file dnode.cpp
2021-12-16 09:05:13 +00:00
* @author slguan (slguan@taosdata.com)
2022-01-06 08:57:08 +00:00
* @brief MNODE module dnode tests
* @version 1.0
* @date 2022-01-06
2021-12-12 06:46:31 +00:00
*
2022-01-06 08:57:08 +00:00
* @copyright Copyright (c) 2022
2021-12-12 06:46:31 +00:00
*
*/
2022-01-04 12:36:54 +00:00
#include "sut.h"
2021-12-12 06:46:31 +00:00
2022-01-06 08:57:08 +00:00
class MndTestDnode : public ::testing::Test {
2021-12-12 13:55:43 +00:00
public:
2021-12-22 10:39:32 +00:00
void SetUp() override {}
void TearDown() override {}
2021-12-12 06:46:31 +00:00
2021-12-22 10:39:32 +00:00
public:
2021-12-12 06:46:31 +00:00
static void SetUpTestSuite() {
2022-01-06 08:57:08 +00:00
test.Init("/tmp/dnode_test_dnode1", 9023);
2021-12-12 06:46:31 +00:00
const char* fqdn = "localhost";
2022-01-06 08:57:08 +00:00
const char* firstEp = "localhost:9023";
2021-12-22 10:39:32 +00:00
2022-01-06 08:57:08 +00:00
server2.Start("/tmp/dnode_test_dnode2", fqdn, 9024, firstEp);
server3.Start("/tmp/dnode_test_dnode3", fqdn, 9025, firstEp);
server4.Start("/tmp/dnode_test_dnode4", fqdn, 9026, firstEp);
server5.Start("/tmp/dnode_test_dnode5", fqdn, 9027, firstEp);
2021-12-12 13:55:43 +00:00
taosMsleep(300);
2021-12-12 06:46:31 +00:00
}
static void TearDownTestSuite() {
2021-12-22 10:39:32 +00:00
server2.Stop();
server3.Stop();
server4.Stop();
server5.Stop();
test.Cleanup();
2021-12-12 13:55:43 +00:00
}
2021-12-22 10:39:32 +00:00
static Testbase test;
static TestServer server2;
static TestServer server3;
static TestServer server4;
static TestServer server5;
};
2021-12-12 06:46:31 +00:00
2022-01-06 08:57:08 +00:00
Testbase MndTestDnode::test;
TestServer MndTestDnode::server2;
TestServer MndTestDnode::server3;
TestServer MndTestDnode::server4;
TestServer MndTestDnode::server5;
2021-12-12 13:55:43 +00:00
2022-01-06 08:57:08 +00:00
TEST_F(MndTestDnode, 01_ShowDnode) {
2022-01-05 12:18:56 +00:00
test.SendShowMetaReq(TSDB_MGMT_TABLE_DNODE, "");
2021-12-22 10:39:32 +00:00
CHECK_META("show dnodes", 7);
2021-12-12 13:55:43 +00:00
2021-12-22 10:39:32 +00:00
CHECK_SCHEMA(0, TSDB_DATA_TYPE_SMALLINT, 2, "id");
CHECK_SCHEMA(1, TSDB_DATA_TYPE_BINARY, TSDB_EP_LEN + VARSTR_HEADER_SIZE, "endpoint");
CHECK_SCHEMA(2, TSDB_DATA_TYPE_SMALLINT, 2, "vnodes");
2021-12-30 03:35:46 +00:00
CHECK_SCHEMA(3, TSDB_DATA_TYPE_SMALLINT, 2, "support_vnodes");
2021-12-22 10:39:32 +00:00
CHECK_SCHEMA(4, TSDB_DATA_TYPE_BINARY, 10 + VARSTR_HEADER_SIZE, "status");
CHECK_SCHEMA(5, TSDB_DATA_TYPE_TIMESTAMP, 8, "create_time");
CHECK_SCHEMA(6, TSDB_DATA_TYPE_BINARY, 24 + VARSTR_HEADER_SIZE, "offline_reason");
2021-12-12 06:46:31 +00:00
2022-01-05 12:18:56 +00:00
test.SendShowRetrieveReq();
2021-12-22 10:39:32 +00:00
EXPECT_EQ(test.GetShowRows(), 1);
2021-12-12 06:46:31 +00:00
2021-12-12 13:55:43 +00:00
CheckInt16(1);
2022-01-06 08:57:08 +00:00
CheckBinary("localhost:9023", TSDB_EP_LEN);
2021-12-12 13:55:43 +00:00
CheckInt16(0);
2021-12-29 13:03:08 +00:00
CheckInt16(16);
2021-12-12 13:55:43 +00:00
CheckBinary("ready", 10);
CheckTimestamp();
CheckBinary("", 24);
2021-12-12 06:46:31 +00:00
}
2022-01-06 08:57:08 +00:00
TEST_F(MndTestDnode, 02_ConfigDnode) {
2022-02-12 06:21:26 +00:00
SMCfgDnodeReq cfgReq = {0};
cfgReq.dnodeId = 1;
strcpy(cfgReq.config, "ddebugflag");
strcpy(cfgReq.value, "131");
int32_t contLen = tSerializeSMCfgDnodeReq(NULL, 0, &cfgReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSMCfgDnodeReq(pReq, contLen, &cfgReq);
2021-12-13 07:35:33 +00:00
2022-01-05 12:18:56 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_CONFIG_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, 0);
2021-12-13 07:35:33 +00:00
}
2022-01-06 11:13:37 +00:00
TEST_F(MndTestDnode, 03_Create_Dnode) {
{
2022-02-12 06:06:13 +00:00
SCreateDnodeReq createReq = {0};
strcpy(createReq.fqdn, "");
createReq.port = 9024;
2022-01-06 11:13:37 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSCreateDnodeReq(NULL, 0, &createReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSCreateDnodeReq(pReq, contLen, &createReq);
2022-01-06 11:13:37 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_CREATE_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, TSDB_CODE_MND_INVALID_DNODE_EP);
}
{
2022-02-12 06:06:13 +00:00
SCreateDnodeReq createReq = {0};
strcpy(createReq.fqdn, "localhost");
createReq.port = -1;
2022-01-06 11:13:37 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSCreateDnodeReq(NULL, 0, &createReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSCreateDnodeReq(pReq, contLen, &createReq);
2022-01-06 11:13:37 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_CREATE_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, TSDB_CODE_MND_INVALID_DNODE_EP);
}
{
2022-02-12 06:06:13 +00:00
SCreateDnodeReq createReq = {0};
strcpy(createReq.fqdn, "localhost");
createReq.port = 123456;
2022-01-06 11:13:37 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSCreateDnodeReq(NULL, 0, &createReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSCreateDnodeReq(pReq, contLen, &createReq);
2022-01-06 11:13:37 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_CREATE_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, TSDB_CODE_MND_INVALID_DNODE_EP);
}
2021-12-16 06:02:39 +00:00
{
2022-02-12 06:06:13 +00:00
SCreateDnodeReq createReq = {0};
strcpy(createReq.fqdn, "localhost");
createReq.port = 9024;
2021-12-12 06:46:31 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSCreateDnodeReq(NULL, 0, &createReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSCreateDnodeReq(pReq, contLen, &createReq);
2021-12-12 06:46:31 +00:00
2022-01-05 12:18:56 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_CREATE_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, 0);
2021-12-16 06:02:39 +00:00
}
2021-12-12 06:46:31 +00:00
2022-01-06 11:13:37 +00:00
{
2022-02-12 06:06:13 +00:00
SCreateDnodeReq createReq = {0};
strcpy(createReq.fqdn, "localhost");
createReq.port = 9024;
2022-01-06 11:13:37 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSCreateDnodeReq(NULL, 0, &createReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSCreateDnodeReq(pReq, contLen, &createReq);
2022-01-06 11:13:37 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_CREATE_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, TSDB_CODE_MND_DNODE_ALREADY_EXIST);
}
2021-12-12 13:55:43 +00:00
taosMsleep(1300);
2021-12-22 10:39:32 +00:00
2022-01-05 12:18:56 +00:00
test.SendShowMetaReq(TSDB_MGMT_TABLE_DNODE, "");
2021-12-22 10:39:32 +00:00
CHECK_META("show dnodes", 7);
2022-01-05 12:18:56 +00:00
test.SendShowRetrieveReq();
2021-12-22 10:39:32 +00:00
EXPECT_EQ(test.GetShowRows(), 2);
2021-12-12 13:55:43 +00:00
CheckInt16(1);
CheckInt16(2);
2022-01-06 08:57:08 +00:00
CheckBinary("localhost:9023", TSDB_EP_LEN);
CheckBinary("localhost:9024", TSDB_EP_LEN);
2021-12-12 13:55:43 +00:00
CheckInt16(0);
CheckInt16(0);
2021-12-29 13:03:08 +00:00
CheckInt16(16);
CheckInt16(16);
2021-12-12 13:55:43 +00:00
CheckBinary("ready", 10);
CheckBinary("ready", 10);
CheckTimestamp();
CheckTimestamp();
CheckBinary("", 24);
CheckBinary("", 24);
2022-01-06 11:13:37 +00:00
}
TEST_F(MndTestDnode, 04_Drop_Dnode) {
{
2022-02-12 06:06:13 +00:00
SDropDnodeReq dropReq = {0};
dropReq.dnodeId = -3;
2022-01-06 11:13:37 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSDropDnodeReq(NULL, 0, &dropReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSDropDnodeReq(pReq, contLen, &dropReq);
2022-01-06 11:13:37 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_DROP_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, TSDB_CODE_MND_INVALID_DNODE_ID);
}
{
2022-02-12 06:06:13 +00:00
SDropDnodeReq dropReq = {0};
dropReq.dnodeId = 5;
2022-01-06 11:13:37 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSDropDnodeReq(NULL, 0, &dropReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSDropDnodeReq(pReq, contLen, &dropReq);
2022-01-06 11:13:37 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_DROP_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, TSDB_CODE_MND_DNODE_NOT_EXIST);
}
2021-12-12 06:46:31 +00:00
2021-12-16 06:02:39 +00:00
{
2022-02-12 06:06:13 +00:00
SDropDnodeReq dropReq = {0};
dropReq.dnodeId = 2;
2021-12-12 06:46:31 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSDropDnodeReq(NULL, 0, &dropReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSDropDnodeReq(pReq, contLen, &dropReq);
2021-12-12 06:46:31 +00:00
2022-01-05 12:18:56 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_DROP_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, 0);
2021-12-16 06:02:39 +00:00
}
2021-12-12 06:46:31 +00:00
2022-01-06 11:13:37 +00:00
{
2022-02-12 06:06:13 +00:00
SDropDnodeReq dropReq = {0};
dropReq.dnodeId = 2;
2022-01-06 11:13:37 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSDropDnodeReq(NULL, 0, &dropReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSDropDnodeReq(pReq, contLen, &dropReq);
2022-01-06 11:13:37 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_DROP_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, TSDB_CODE_MND_DNODE_NOT_EXIST);
}
2022-01-05 12:18:56 +00:00
test.SendShowMetaReq(TSDB_MGMT_TABLE_DNODE, "");
2021-12-22 10:39:32 +00:00
CHECK_META("show dnodes", 7);
2022-01-05 12:18:56 +00:00
test.SendShowRetrieveReq();
2021-12-22 10:39:32 +00:00
EXPECT_EQ(test.GetShowRows(), 1);
2021-12-13 06:48:10 +00:00
CheckInt16(1);
2022-01-06 08:57:08 +00:00
CheckBinary("localhost:9023", TSDB_EP_LEN);
2021-12-13 06:48:10 +00:00
CheckInt16(0);
2021-12-29 13:03:08 +00:00
CheckInt16(16);
2021-12-13 06:48:10 +00:00
CheckBinary("ready", 10);
CheckTimestamp();
CheckBinary("", 24);
2021-12-12 06:46:31 +00:00
2022-01-06 11:13:37 +00:00
taosMsleep(2000);
server2.Stop();
server2.DoStart();
}
TEST_F(MndTestDnode, 05_Create_Drop_Restart_Dnode) {
2021-12-13 06:48:10 +00:00
{
2022-02-12 06:06:13 +00:00
SCreateDnodeReq createReq = {0};
strcpy(createReq.fqdn, "localhost");
createReq.port = 9025;
2021-12-13 06:48:10 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSCreateDnodeReq(NULL, 0, &createReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSCreateDnodeReq(pReq, contLen, &createReq);
2021-12-13 06:48:10 +00:00
2022-01-05 12:18:56 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_CREATE_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, 0);
2021-12-13 06:48:10 +00:00
}
2021-12-12 06:46:31 +00:00
{
2022-02-12 06:06:13 +00:00
SCreateDnodeReq createReq = {0};
strcpy(createReq.fqdn, "localhost");
createReq.port = 9026;
2021-12-13 06:48:10 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSCreateDnodeReq(NULL, 0, &createReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSCreateDnodeReq(pReq, contLen, &createReq);
2021-12-13 06:48:10 +00:00
2022-01-05 12:18:56 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_CREATE_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, 0);
2021-12-13 06:48:10 +00:00
}
2021-12-12 06:46:31 +00:00
2021-12-13 06:48:10 +00:00
{
2022-02-12 06:06:13 +00:00
SCreateDnodeReq createReq = {0};
strcpy(createReq.fqdn, "localhost");
createReq.port = 9027;
2021-12-13 06:48:10 +00:00
2022-02-12 06:06:13 +00:00
int32_t contLen = tSerializeSCreateDnodeReq(NULL, 0, &createReq);
void* pReq = rpcMallocCont(contLen);
tSerializeSCreateDnodeReq(pReq, contLen, &createReq);
2021-12-13 06:48:10 +00:00
2022-01-05 12:18:56 +00:00
SRpcMsg* pRsp = test.SendReq(TDMT_MND_CREATE_DNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, 0);
2021-12-12 06:46:31 +00:00
}
2021-12-13 06:48:10 +00:00
taosMsleep(1300);
2022-01-05 12:18:56 +00:00
test.SendShowMetaReq(TSDB_MGMT_TABLE_DNODE, "");
2021-12-22 10:39:32 +00:00
CHECK_META("show dnodes", 7);
2022-01-05 12:18:56 +00:00
test.SendShowRetrieveReq();
2021-12-22 10:39:32 +00:00
EXPECT_EQ(test.GetShowRows(), 4);
2021-12-13 06:48:10 +00:00
CheckInt16(1);
CheckInt16(3);
CheckInt16(4);
CheckInt16(5);
2022-01-06 08:57:08 +00:00
CheckBinary("localhost:9023", TSDB_EP_LEN);
CheckBinary("localhost:9025", TSDB_EP_LEN);
CheckBinary("localhost:9026", TSDB_EP_LEN);
CheckBinary("localhost:9027", TSDB_EP_LEN);
2021-12-13 06:48:10 +00:00
CheckInt16(0);
CheckInt16(0);
CheckInt16(0);
CheckInt16(0);
2021-12-29 13:03:08 +00:00
CheckInt16(16);
CheckInt16(16);
CheckInt16(16);
CheckInt16(16);
2021-12-13 06:48:10 +00:00
CheckBinary("ready", 10);
CheckBinary("ready", 10);
CheckBinary("ready", 10);
CheckBinary("ready", 10);
CheckTimestamp();
CheckTimestamp();
CheckTimestamp();
CheckTimestamp();
CheckBinary("", 24);
CheckBinary("", 24);
CheckBinary("", 24);
CheckBinary("", 24);
2021-12-13 09:06:04 +00:00
2021-12-16 06:02:39 +00:00
// restart
2021-12-13 10:19:09 +00:00
uInfo("stop all server");
2021-12-22 10:39:32 +00:00
test.Restart();
server2.Restart();
server3.Restart();
server4.Restart();
server5.Restart();
2021-12-13 09:06:04 +00:00
2021-12-14 10:07:29 +00:00
taosMsleep(1300);
2022-01-05 12:18:56 +00:00
test.SendShowMetaReq(TSDB_MGMT_TABLE_DNODE, "");
2021-12-22 10:39:32 +00:00
CHECK_META("show dnodes", 7);
2022-01-05 12:18:56 +00:00
test.SendShowRetrieveReq();
2021-12-22 10:39:32 +00:00
EXPECT_EQ(test.GetShowRows(), 4);
2021-12-14 10:07:29 +00:00
CheckInt16(1);
CheckInt16(3);
CheckInt16(4);
CheckInt16(5);
2022-01-06 08:57:08 +00:00
CheckBinary("localhost:9023", TSDB_EP_LEN);
CheckBinary("localhost:9025", TSDB_EP_LEN);
CheckBinary("localhost:9026", TSDB_EP_LEN);
CheckBinary("localhost:9027", TSDB_EP_LEN);
2021-12-14 10:07:29 +00:00
CheckInt16(0);
CheckInt16(0);
CheckInt16(0);
CheckInt16(0);
2021-12-29 13:03:08 +00:00
CheckInt16(16);
CheckInt16(16);
CheckInt16(16);
CheckInt16(16);
2021-12-14 10:07:29 +00:00
CheckBinary("ready", 10);
CheckBinary("ready", 10);
CheckBinary("ready", 10);
CheckBinary("ready", 10);
CheckTimestamp();
CheckTimestamp();
CheckTimestamp();
CheckTimestamp();
CheckBinary("", 24);
CheckBinary("", 24);
CheckBinary("", 24);
CheckBinary("", 24);
2021-12-13 09:06:04 +00:00
}