syncIOSendMsgTest.cpp 3.0 KB
Newer Older
1
#include <gtest/gtest.h>
M
Minghao Li 已提交
2
#include <stdio.h>
M
sync io  
Minghao Li 已提交
3
#include "syncEnv.h"
M
sync io  
Minghao Li 已提交
4 5 6
#include "syncIO.h"
#include "syncInt.h"
#include "syncRaftStore.h"
M
sync io  
Minghao Li 已提交
7
#include "syncUtil.h"
M
sync io  
Minghao Li 已提交
8 9 10 11 12 13 14 15 16 17

void logTest() {
  sTrace("--- sync log test: trace");
  sDebug("--- sync log test: debug");
  sInfo("--- sync log test: info");
  sWarn("--- sync log test: warn");
  sError("--- sync log test: error");
  sFatal("--- sync log test: fatal");
}

M
sync io  
Minghao Li 已提交
18 19 20 21 22 23 24 25 26 27
uint16_t ports[] = {7010, 7110, 7210, 7310, 7410};
int32_t  replicaNum = 5;
int32_t  myIndex = 0;

SRaftId   ids[TSDB_MAX_REPLICA];
SSyncInfo syncInfo;
SSyncFSM* pFsm;

SSyncNode* syncNodeInit() {
  syncInfo.vgId = 1234;
S
Shengliang Guan 已提交
28
  syncInfo.msgcb = &gSyncIO->msgcb;
M
sync io  
Minghao Li 已提交
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
  syncInfo.FpSendMsg = syncIOSendMsg;
  syncInfo.FpEqMsg = syncIOEqMsg;
  syncInfo.pFsm = pFsm;
  snprintf(syncInfo.path, sizeof(syncInfo.path), "%s", "./");

  SSyncCfg* pCfg = &syncInfo.syncCfg;
  pCfg->myIndex = myIndex;
  pCfg->replicaNum = replicaNum;

  for (int i = 0; i < replicaNum; ++i) {
    pCfg->nodeInfo[i].nodePort = ports[i];
    snprintf(pCfg->nodeInfo[i].nodeFqdn, sizeof(pCfg->nodeInfo[i].nodeFqdn), "%s", "127.0.0.1");
    // taosGetFqdn(pCfg->nodeInfo[0].nodeFqdn);
  }

  SSyncNode* pSyncNode = syncNodeOpen(&syncInfo);
  assert(pSyncNode != NULL);

  gSyncIO->FpOnSyncPing = pSyncNode->FpOnPing;
  gSyncIO->FpOnSyncPingReply = pSyncNode->FpOnPingReply;
  gSyncIO->FpOnSyncRequestVote = pSyncNode->FpOnRequestVote;
  gSyncIO->FpOnSyncRequestVoteReply = pSyncNode->FpOnRequestVoteReply;
  gSyncIO->FpOnSyncAppendEntries = pSyncNode->FpOnAppendEntries;
  gSyncIO->FpOnSyncAppendEntriesReply = pSyncNode->FpOnAppendEntriesReply;
  gSyncIO->FpOnSyncPing = pSyncNode->FpOnPing;
  gSyncIO->FpOnSyncPingReply = pSyncNode->FpOnPingReply;
  gSyncIO->FpOnSyncTimeout = pSyncNode->FpOnTimeout;
  gSyncIO->pSyncNode = pSyncNode;

  return pSyncNode;
}

SSyncNode* syncInitTest() { return syncNodeInit(); }

void initRaftId(SSyncNode* pSyncNode) {
  for (int i = 0; i < replicaNum; ++i) {
    ids[i] = pSyncNode->replicasId[i];
    char* s = syncUtilRaftId2Str(&ids[i]);
    printf("raftId[%d] : %s\n", i, s);
wafwerar's avatar
wafwerar 已提交
68
    taosMemoryFree(s);
M
sync io  
Minghao Li 已提交
69 70 71 72
  }
}

int main(int argc, char** argv) {
M
sync io  
Minghao Li 已提交
73 74 75 76
  // taosInitLog((char *)"syncTest.log", 100000, 10);
  tsAsyncLog = 0;
  sDebugFlag = 143 + 64;

M
sync io  
Minghao Li 已提交
77 78 79 80
  myIndex = 0;
  if (argc >= 2) {
    myIndex = atoi(argv[1]);
  }
M
sync io  
Minghao Li 已提交
81

M
sync io  
Minghao Li 已提交
82 83
  int32_t ret = syncIOStart((char*)"127.0.0.1", ports[myIndex]);
  assert(ret == 0);
M
sync io  
Minghao Li 已提交
84

M
sync io  
Minghao Li 已提交
85
  ret = syncEnvStart();
M
sync io  
Minghao Li 已提交
86 87
  assert(ret == 0);

M
sync io  
Minghao Li 已提交
88 89 90
  SSyncNode* pSyncNode = syncInitTest();
  assert(pSyncNode != NULL);

M
Minghao Li 已提交
91
  syncNodeLog2((char*)"syncInitTest", pSyncNode);
M
sync io  
Minghao Li 已提交
92 93 94 95 96

  initRaftId(pSyncNode);

  //--------------------------------------------------------------

M
sync io  
Minghao Li 已提交
97
  for (int i = 0; i < 10; ++i) {
M
Minghao Li 已提交
98 99
    SyncPingReply* pSyncMsg =
        syncPingReplyBuild2(&pSyncNode->myRaftId, &pSyncNode->myRaftId, 1000, "syncIOSendMsgTest");
100
    SRpcMsg rpcMsg = {0};
M
sync io  
Minghao Li 已提交
101 102
    syncPingReply2RpcMsg(pSyncMsg, &rpcMsg);

M
sync io  
Minghao Li 已提交
103
    SEpSet epSet;
M
sync io  
Minghao Li 已提交
104
    syncUtilnodeInfo2EpSet(&pSyncNode->myNodeInfo, &epSet);
105
    rpcMsg.info.noResp = 1;
S
Shengliang Guan 已提交
106
    pSyncNode->FpSendMsg(&epSet, &rpcMsg);
M
sync io  
Minghao Li 已提交
107

M
sync io  
Minghao Li 已提交
108
    taosMsleep(1000);
M
sync io  
Minghao Li 已提交
109 110 111 112
  }

  return 0;
}