testscan.cpp
来自「MySQL源码文件5.X系列, 可自已编译到服务器」· C++ 代码 · 共 1,653 行 · 第 1/4 页
CPP
1,653 行
HugoTransactions hugoTrans(*ctx->getTab()); while (i<loops && result == NDBT_OK) { g_info << i << ": "; int nodeId = restarter.getDbNodeId(lastId); lastId = (lastId + 1) % restarter.getNumDbNodes(); ndbout << "insertErrorInNode("<<nodeId<<", "<<error<<")"<<endl; if (restarter.insertErrorInNode(nodeId, error) != 0){ ndbout << "Could not insert error in node="<<nodeId<<endl; return NDBT_FAILED; } for (int j=0; j<10; j++){ if (hugoTrans.scanReadRecords(GETNDB(step), records, 0, parallelism) != 0) result = NDBT_FAILED; } if(restarter.waitClusterStarted(120) != 0){ g_err << "Cluster failed to restart" << endl; result = NDBT_FAILED; } restarter.insertErrorInAllNodes(0); i++; } restarter.insertErrorInAllNodes(0); return result;}int runRestartAll(NDBT_Context* ctx, NDBT_Step* step){ NdbRestarter restarter; if (restarter.restartAll() != 0){ ndbout << "Could not restart all nodes"<<endl; return NDBT_FAILED; } if (restarter.waitClusterStarted(120) != 0){ ndbout << "Could not restarted" << endl; return NDBT_FAILED; } return NDBT_OK;}static int RANDOM_PARALLELISM = 9999;int runScanReadUntilStopped(NDBT_Context* ctx, NDBT_Step* step){ int records = ctx->getNumRecords(); int i = 0; int parallelism = ctx->getProperty("Parallelism", 240); int para = parallelism; HugoTransactions hugoTrans(*ctx->getTab()); while (ctx->isTestStopped() == false) { if (parallelism == RANDOM_PARALLELISM) para = myRandom48(239)+1; g_info << i << ": "; if (hugoTrans.scanReadRecords(GETNDB(step), records, 0, para) != 0){ return NDBT_FAILED; } i++; } return NDBT_OK;}int runScanReadUntilStoppedNoCount(NDBT_Context* ctx, NDBT_Step* step){ int i = 0; HugoTransactions hugoTrans(*ctx->getTab()); while (ctx->isTestStopped() == false) { g_info << i << ": "; if (hugoTrans.scanReadRecords(GETNDB(step), 0) != 0){ return NDBT_FAILED; } i++; } return NDBT_OK;}int runScanReadUntilStoppedPrintTime(NDBT_Context* ctx, NDBT_Step* step){ int records = ctx->getNumRecords(); int i = 0; int parallelism = ctx->getProperty("Parallelism", 240); NdbTimer timer; Ndb* ndb = GETNDB(step); HugoTransactions hugoTrans(*ctx->getTab()); while (ctx->isTestStopped() == false) { timer.doReset(); timer.doStart(); g_info << i << ": "; if (ndb->waitUntilReady() != 0) return NDBT_FAILED; if (hugoTrans.scanReadRecords(GETNDB(step), records, 0, parallelism) != 0) return NDBT_FAILED; timer.doStop(); if ((timer.elapsedTime()/1000) > 1) timer.printTotalTime(); i++; } return NDBT_OK;}int runPkRead(NDBT_Context* ctx, NDBT_Step* step){ int loops = ctx->getNumLoops(); int records = ctx->getNumRecords(); int i = 0; HugoTransactions hugoTrans(*ctx->getTab()); while (i<loops) { g_info << i << ": "; if (hugoTrans.pkReadRecords(GETNDB(step), records) != 0){ return NDBT_FAILED; } i++; } return NDBT_OK;}int runScanUpdate(NDBT_Context* ctx, NDBT_Step* step){ int loops = ctx->getNumLoops(); int records = ctx->getNumRecords(); int parallelism = ctx->getProperty("Parallelism", 1); int abort = ctx->getProperty("AbortProb", 5); int i = 0; HugoTransactions hugoTrans(*ctx->getTab()); while (i<loops) { g_info << i << ": "; if (hugoTrans.scanUpdateRecords(GETNDB(step), records, abort, parallelism) != 0){ return NDBT_FAILED; } i++; } return NDBT_OK;}int runScanUpdateUntilStopped(NDBT_Context* ctx, NDBT_Step* step){ int records = ctx->getNumRecords(); int i = 0; int parallelism = ctx->getProperty("Parallelism", 240); int para = parallelism; HugoTransactions hugoTrans(*ctx->getTab()); while (ctx->isTestStopped() == false) { if (parallelism == RANDOM_PARALLELISM) para = myRandom48(239)+1; g_info << i << ": "; if (hugoTrans.scanUpdateRecords(GETNDB(step), records, 0, para) == NDBT_FAILED){ return NDBT_FAILED; } i++; } return NDBT_OK;}int runScanUpdate2(NDBT_Context* ctx, NDBT_Step* step){ int loops = ctx->getNumLoops(); int records = ctx->getNumRecords(); int parallelism = ctx->getProperty("Parallelism", 240); int abort = ctx->getProperty("AbortProb", 5); int i = 0; HugoTransactions hugoTrans(*ctx->getTab()); while (i<loops) { g_info << i << ": "; if (hugoTrans.scanUpdateRecords2(GETNDB(step), records, abort, parallelism) != 0){ return NDBT_FAILED; } i++; } return NDBT_OK;}int runLocker(NDBT_Context* ctx, NDBT_Step* step){ int result = NDBT_OK; int records = ctx->getNumRecords(); HugoTransactions hugoTrans(*ctx->getTab()); if (hugoTrans.lockRecords(GETNDB(step), records, 5, 500) != 0){ result = NDBT_FAILED; } ctx->stopTest(); return result;}int runRestarter(NDBT_Context* ctx, NDBT_Step* step){ int result = NDBT_OK; int loops = ctx->getNumLoops(); NdbRestarter restarter; int i = 0; int lastId = 0; int timeout = 240; if (restarter.getNumDbNodes() < 2){ ctx->stopTest(); return NDBT_OK; } while(i<loops && result != NDBT_FAILED){ if(restarter.waitClusterStarted(timeout) != 0){ g_err << "Cluster failed to start 1" << endl; result = NDBT_FAILED; break; } NdbSleep_SecSleep(10); int nodeId = restarter.getDbNodeId(lastId); lastId = (lastId + 1) % restarter.getNumDbNodes(); if(restarter.restartOneDbNode(nodeId, false, false, true) != 0){ g_err << "Failed to restartNextDbNode" << endl; result = NDBT_FAILED; break; } i++; } if(restarter.waitClusterStarted(timeout) != 0){ g_err << "Cluster failed to start 2" << endl; result = NDBT_FAILED; } ctx->stopTest(); return result;}int runStopAndStartNode(NDBT_Context* ctx, NDBT_Step* step){ int result = NDBT_OK; int loops = ctx->getNumLoops(); NdbRestarter restarter; int i = 0; int lastId = 0; int timeout = 240; if (restarter.getNumDbNodes() < 2){ ctx->stopTest(); return NDBT_OK; } while(i<loops && result != NDBT_FAILED){ if(restarter.waitClusterStarted(timeout) != 0){ g_err << "Cluster failed to start 1" << endl; result = NDBT_FAILED; break; } NdbSleep_SecSleep(1); int nodeId = restarter.getDbNodeId(lastId); lastId = (lastId + 1) % restarter.getNumDbNodes(); g_err << "Stopping node " << nodeId << endl; if(restarter.restartOneDbNode(nodeId, false, true) != 0){ g_err << "Failed to restartOneDbNode" << endl; result = NDBT_FAILED; break; } if(restarter.waitNodesNoStart(&nodeId, 1, timeout) != 0){ g_err << "Node failed to reach NoStart" << endl; result = NDBT_FAILED; break; } g_info << "Sleeping for 10 secs" << endl; NdbSleep_SecSleep(10); g_err << "Starting node " << nodeId << endl; if(restarter.startNodes(&nodeId, 1) != 0){ g_err << "Failed to start the node" << endl; result = NDBT_FAILED; break; } i++; } if(restarter.waitClusterStarted(timeout) != 0){ g_err << "Cluster failed to start 2" << endl; result = NDBT_FAILED; } ctx->stopTest(); return result;}int runRestarter9999(NDBT_Context* ctx, NDBT_Step* step){ int result = NDBT_OK; int loops = ctx->getNumLoops(); NdbRestarter restarter; int i = 0; int lastId = 0; if (restarter.getNumDbNodes() < 2){ ctx->stopTest(); return NDBT_OK; } while(i<loops && result != NDBT_FAILED){ if(restarter.waitClusterStarted(120) != 0){ g_err << "Cluster failed to start" << endl; result = NDBT_FAILED; break; } NdbSleep_SecSleep(10); int nodeId = restarter.getDbNodeId(lastId); lastId = (lastId + 1) % restarter.getNumDbNodes(); if(restarter.insertErrorInNode(nodeId, 9999) != 0){ g_err << "Failed to insertErrorInNode="<<nodeId << endl; result = NDBT_FAILED; break; } NdbSleep_SecSleep(10); i++; } if(restarter.waitClusterStarted(120) != 0){ g_err << "Cluster failed to start" << endl; result = NDBT_FAILED; } ctx->stopTest(); return result;}int runCheckGetValue(NDBT_Context* ctx, NDBT_Step* step){ const NdbDictionary::Table* pTab = ctx->getTab(); int parallelism = ctx->getProperty("Parallelism", 1); int records = ctx->getNumRecords(); int numFailed = 0; AttribList alist; alist.buildAttribList(pTab); UtilTransactions utilTrans(*pTab); for(size_t i = 0; i < alist.attriblist.size(); i++){ g_info << (unsigned)i << endl; if(utilTrans.scanReadRecords(GETNDB(step), parallelism, NdbOperation::LM_Read, records, alist.attriblist[i]->numAttribs, alist.attriblist[i]->attribs) != 0){ numFailed++; } if(utilTrans.scanReadRecords(GETNDB(step), parallelism, NdbOperation::LM_Read, records, alist.attriblist[i]->numAttribs, alist.attriblist[i]->attribs) != 0){ numFailed++; } } if(numFailed > 0) return NDBT_FAILED; else return NDBT_OK;}int runCloseWithoutStop(NDBT_Context* ctx, NDBT_Step* step){ const NdbDictionary::Table* pTab = ctx->getTab(); int records = ctx->getNumRecords(); int numFailed = 0; ScanFunctions scanF(*pTab); // Iterate over all possible parallelism valuse for (int p = 1; p<240; p++){ g_info << p << " CloseWithoutStop openScan" << endl; if (scanF.scanReadFunctions(GETNDB(step), records, p, ScanFunctions::CloseWithoutStop, false) != 0){ numFailed++; } g_info << p << " CloseWithoutStop openScanExclusive" << endl; if (scanF.scanReadFunctions(GETNDB(step), records, p, ScanFunctions::CloseWithoutStop, true) != 0){ numFailed++; } } if(numFailed > 0) return NDBT_FAILED; else return NDBT_OK;}int runNextScanWhenNoMore(NDBT_Context* ctx, NDBT_Step* step){ const NdbDictionary::Table* pTab = ctx->getTab(); int records = ctx->getNumRecords(); int numFailed = 0; ScanFunctions scanF(*pTab); if (scanF.scanReadFunctions(GETNDB(step), records, 6, ScanFunctions::NextScanWhenNoMore, false) != 0){ numFailed++; } if (scanF.scanReadFunctions(GETNDB(step), records, 6, ScanFunctions::NextScanWhenNoMore, true) != 0){
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?