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 + -
显示快捷键?