⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testnoderestart.cpp

📁 mysql-5.0.22.tar.gz源码包
💻 CPP
📖 第 1 页 / 共 3 页
字号:
      if(res != 286)	return NDBT_FAILED;    }    else    {      if(res != 0)	return NDBT_FAILED;    }    i++;  }    return NDBT_OK;}int runBug15587(NDBT_Context* ctx, NDBT_Step* step){  int result = NDBT_OK;  int loops = ctx->getNumLoops();  int records = ctx->getNumRecords();  NdbRestarter restarter;    Uint32 tableId = ctx->getTab()->getTableId();  int dump[2] = { DumpStateOrd::LqhErrorInsert5042, 0 };  dump[1] = tableId;  int nodeId = restarter.getDbNodeId(1);  ndbout << "Restart node " << nodeId << endl;     if (restarter.restartOneDbNode(nodeId,				 /** initial */ false, 				 /** nostart */ true,				 /** abort   */ true))    return NDBT_FAILED;    if (restarter.waitNodesNoStart(&nodeId, 1))    return NDBT_FAILED;      int val2[] = { DumpStateOrd::CmvmiSetRestartOnErrorInsert, 1 };    if (restarter.dumpStateOneNode(nodeId, val2, 2))    return NDBT_FAILED;  if (restarter.dumpStateOneNode(nodeId, dump, 2))    return NDBT_FAILED;  if (restarter.startNodes(&nodeId, 1))    return NDBT_FAILED;  restarter.waitNodesStartPhase(&nodeId, 1, 3);    if (restarter.waitNodesNoStart(&nodeId, 1))    return NDBT_FAILED;      if (restarter.dumpStateOneNode(nodeId, val2, 1))    return NDBT_FAILED;    if (restarter.startNodes(&nodeId, 1))    return NDBT_FAILED;    if (restarter.waitNodesStarted(&nodeId, 1))    return NDBT_FAILED;    ctx->stopTest();  return NDBT_OK;}int runBug15632(NDBT_Context* ctx, NDBT_Step* step){  int result = NDBT_OK;  int loops = ctx->getNumLoops();  int records = ctx->getNumRecords();  NdbRestarter restarter;    int nodeId = restarter.getDbNodeId(1);  ndbout << "Restart node " << nodeId << endl;     if (restarter.restartOneDbNode(nodeId,				 /** initial */ false, 				 /** nostart */ true,				 /** abort   */ true))    return NDBT_FAILED;    if (restarter.waitNodesNoStart(&nodeId, 1))    return NDBT_FAILED;      if (restarter.insertErrorInNode(nodeId, 7165))    return NDBT_FAILED;    if (restarter.startNodes(&nodeId, 1))    return NDBT_FAILED;  if (restarter.waitNodesStarted(&nodeId, 1))    return NDBT_FAILED;  if (restarter.restartOneDbNode(nodeId,				 /** initial */ false, 				 /** nostart */ true,				 /** abort   */ true))    return NDBT_FAILED;    if (restarter.waitNodesNoStart(&nodeId, 1))    return NDBT_FAILED;      if (restarter.insertErrorInNode(nodeId, 7171))    return NDBT_FAILED;    if (restarter.startNodes(&nodeId, 1))    return NDBT_FAILED;    if (restarter.waitNodesStarted(&nodeId, 1))    return NDBT_FAILED;    ctx->stopTest();  return NDBT_OK;}int runBug15685(NDBT_Context* ctx, NDBT_Step* step){  Ndb* pNdb = GETNDB(step);  HugoOperations hugoOps(*ctx->getTab());  NdbRestarter restarter;  HugoTransactions hugoTrans(*ctx->getTab());  if (hugoTrans.loadTable(GETNDB(step), 10) != 0){    return NDBT_FAILED;  }  if(hugoOps.startTransaction(pNdb) != 0)    goto err;    if(hugoOps.pkUpdateRecord(pNdb, 0, 1, rand()) != 0)    goto err;  if(hugoOps.execute_NoCommit(pNdb) != 0)    goto err;  if (restarter.insertErrorInAllNodes(5100))    return NDBT_FAILED;    hugoOps.execute_Rollback(pNdb);  if (restarter.waitClusterStarted() != 0)    goto err;  if (restarter.insertErrorInAllNodes(0))    return NDBT_FAILED;    ctx->stopTest();  return NDBT_OK;  err:  ctx->stopTest();  return NDBT_FAILED;}int runBug16772(NDBT_Context* ctx, NDBT_Step* step){  NdbRestarter restarter;  if (restarter.getNumDbNodes() < 2)  {    ctx->stopTest();    return NDBT_OK;  }  int aliveNodeId = restarter.getRandomNotMasterNodeId(rand());  int deadNodeId = aliveNodeId;  while (deadNodeId == aliveNodeId)    deadNodeId = restarter.getDbNodeId(rand() % restarter.getNumDbNodes());    if (restarter.insertErrorInNode(aliveNodeId, 930))    return NDBT_FAILED;  if (restarter.restartOneDbNode(deadNodeId,				 /** initial */ false, 				 /** nostart */ true,				 /** abort   */ true))    return NDBT_FAILED;    if (restarter.waitNodesNoStart(&deadNodeId, 1))    return NDBT_FAILED;  if (restarter.startNodes(&deadNodeId, 1))    return NDBT_FAILED;  // It should now be hanging since we throw away NDB_FAILCONF  int ret = restarter.waitNodesStartPhase(&deadNodeId, 1, 3, 10);  // So this should fail...i.e it should not reach startphase 3  // Now send a NDB_FAILCONF for deadNo  int dump[] = { 7020, 323, 252, 0 };  dump[3] = deadNodeId;  if (restarter.dumpStateOneNode(aliveNodeId, dump, 4))    return NDBT_FAILED;    if (restarter.waitNodesStarted(&deadNodeId, 1))    return NDBT_FAILED;  return ret ? NDBT_OK : NDBT_FAILED;}int runBug18414(NDBT_Context* ctx, NDBT_Step* step){  NdbRestarter restarter;  if (restarter.getNumDbNodes() < 2)  {    ctx->stopTest();    return NDBT_OK;  }  Ndb* pNdb = GETNDB(step);  HugoOperations hugoOps(*ctx->getTab());  HugoTransactions hugoTrans(*ctx->getTab());  int loop = 0;  do   {    if(hugoOps.startTransaction(pNdb) != 0)      goto err;        if(hugoOps.pkUpdateRecord(pNdb, 0, 128, rand()) != 0)      goto err;        if(hugoOps.execute_NoCommit(pNdb) != 0)      goto err;    int node1 = hugoOps.getTransaction()->getConnectedNodeId();    int node2 = restarter.getRandomNodeSameNodeGroup(node1, rand());        if (node1 == -1 || node2 == -1)      break;        if (loop & 1)    {      if (restarter.insertErrorInNode(node1, 8050))	goto err;    }        int val2[] = { DumpStateOrd::CmvmiSetRestartOnErrorInsert, 1 };    if (restarter.dumpStateOneNode(node2, val2, 2))      goto err;        if (restarter.insertErrorInNode(node2, 5003))      goto err;        int res= hugoOps.execute_Rollback(pNdb);      if (restarter.waitNodesNoStart(&node2, 1) != 0)      goto err;        if (restarter.insertErrorInAllNodes(0))      goto err;        if (restarter.startNodes(&node2, 1) != 0)      goto err;        if (restarter.waitClusterStarted() != 0)      goto err;        if (hugoTrans.scanUpdateRecords(pNdb, 128) != 0)      goto err;    hugoOps.closeTransaction(pNdb);      } while(++loop < 5);    return NDBT_OK;  err:  hugoOps.closeTransaction(pNdb);  return NDBT_FAILED;    }int runBug18612(NDBT_Context* ctx, NDBT_Step* step){  // Assume two replicas  NdbRestarter restarter;  if (restarter.getNumDbNodes() < 2)  {    ctx->stopTest();    return NDBT_OK;  }  Uint32 cnt = restarter.getNumDbNodes();  for(int loop = 0; loop < ctx->getNumLoops(); loop++)  {    int partition0[256];    int partition1[256];    bzero(partition0, sizeof(partition0));    bzero(partition1, sizeof(partition1));    Bitmask<4> nodesmask;        Uint32 node1 = restarter.getDbNodeId(rand()%cnt);    for (Uint32 i = 0; i<cnt/2; i++)    {      do { 	int tmp = restarter.getRandomNodeOtherNodeGroup(node1, rand());	if (tmp == -1)	  break;	node1 = tmp;      } while(nodesmask.get(node1));            partition0[i] = node1;      partition1[i] = restarter.getRandomNodeSameNodeGroup(node1, rand());            ndbout_c("nodes %d %d", node1, partition1[i]);            assert(!nodesmask.get(node1));      assert(!nodesmask.get(partition1[i]));      nodesmask.set(node1);      nodesmask.set(partition1[i]);    }         ndbout_c("done");    int dump[255];    dump[0] = DumpStateOrd::NdbcntrStopNodes;    memcpy(dump + 1, partition0, sizeof(int)*cnt/2);        Uint32 master = restarter.getMasterNodeId();        if (restarter.dumpStateOneNode(master, dump, 1+cnt/2))      return NDBT_FAILED;        if (restarter.waitNodesNoStart(partition0, cnt/2))      return NDBT_FAILED;    int val2[] = { DumpStateOrd::CmvmiSetRestartOnErrorInsert, 1 };        if (restarter.dumpStateAllNodes(val2, 2))      return NDBT_FAILED;        if (restarter.insertErrorInAllNodes(932))      return NDBT_FAILED;    dump[0] = 9000;    memcpy(dump + 1, partition0, sizeof(int)*cnt/2);        for (Uint32 i = 0; i<cnt/2; i++)      if (restarter.dumpStateOneNode(partition1[i], dump, 1+cnt/2))	return NDBT_FAILED;    dump[0] = 9000;    memcpy(dump + 1, partition1, sizeof(int)*cnt/2);        for (Uint32 i = 0; i<cnt/2; i++)      if (restarter.dumpStateOneNode(partition0[i], dump, 1+cnt/2))	return NDBT_FAILED;        if (restarter.startNodes(partition0, cnt/2))      return NDBT_FAILED;        if (restarter.waitNodesStartPhase(partition0, cnt/2, 2))      return NDBT_FAILED;        dump[0] = 9001;    for (Uint32 i = 0; i<cnt/2; i++)      if (restarter.dumpStateAllNodes(dump, 2))	return NDBT_FAILED;    if (restarter.waitNodesNoStart(partition0, cnt/2))      return NDBT_FAILED;        for (Uint32 i = 0; i<cnt/2; i++)      if (restarter.restartOneDbNode(partition0[i], true, true, true))	return NDBT_FAILED;        if (restarter.waitNodesNoStart(partition0, cnt/2))      return NDBT_FAILED;        if (restarter.startAll())      return NDBT_FAILED;    if (restarter.waitClusterStarted())      return NDBT_FAILED;  }  return NDBT_OK;}int runBug18612SR(NDBT_Context* ctx, NDBT_Step* step){  // Assume two replicas  NdbRestarter restarter;  if (restarter.getNumDbNodes() < 2)  {    ctx->stopTest();    return NDBT_OK;  }  Uint32 cnt = restarter.getNumDbNodes();  for(int loop = 0; loop < ctx->getNumLoops(); loop++)  {    int partition0[256];    int partition1[256];    bzero(partition0, sizeof(partition0));    bzero(partition1, sizeof(partition1));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -