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

📄 testbasic.cpp

📁 mysql-5.0.22.tar.gz源码包
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    CHECK(hugoOps.closeTransaction(pNdb) == 0);        // Update  record 5    CHECK(hugoOps.startTransaction(pNdb) == 0);      CHECK(hugoOps.pkUpdateRecord(pNdb, 5) == 0);    CHECK(hugoOps.execute_NoCommit(pNdb) == 0);    CHECK(hugoOps.closeTransaction(pNdb) == 0);      // Delete record 5    CHECK(hugoOps.startTransaction(pNdb) == 0);      CHECK(hugoOps.pkDeleteRecord(pNdb, 5) == 0);    CHECK(hugoOps.execute_NoCommit(pNdb) == 0);    CHECK(hugoOps.closeTransaction(pNdb) == 0);    // Check record is not deleted    // Close transaction should have rollbacked    CHECK(hugoOps.startTransaction(pNdb) == 0);      CHECK(hugoOps.pkReadRecord(pNdb, 5, 1, NdbOperation::LM_Exclusive) == 0);    CHECK(hugoOps.execute_Commit(pNdb) == 0);  }while(false);  hugoOps.closeTransaction(pNdb);  return result;}int runCheckCommitDelete(NDBT_Context* ctx, NDBT_Step* step){  int result = NDBT_OK;  HugoOperations hugoOps(*ctx->getTab());  Ndb* pNdb = GETNDB(step);  do{    // Read  10 records    CHECK(hugoOps.startTransaction(pNdb) == 0);      CHECK(hugoOps.pkReadRecord(pNdb, 5, 10, NdbOperation::LM_Exclusive) == 0);    CHECK(hugoOps.execute_NoCommit(pNdb) == 0);      // Update 10 records    CHECK(hugoOps.pkUpdateRecord(pNdb, 5, 10) == 0);    CHECK(hugoOps.execute_NoCommit(pNdb) == 0);      // Delete 10 records    CHECK(hugoOps.pkDeleteRecord(pNdb, 5, 10) == 0);    CHECK(hugoOps.execute_NoCommit(pNdb) == 0);    CHECK(hugoOps.execute_Commit(pNdb) == 0);    CHECK(hugoOps.closeTransaction(pNdb) == 0);    // Check record's are deleted    CHECK(hugoOps.startTransaction(pNdb) == 0);      CHECK(hugoOps.pkReadRecord(pNdb, 5, 10, NdbOperation::LM_Exclusive) == 0);    CHECK(hugoOps.execute_Commit(pNdb) == 626);  }while(false);  hugoOps.closeTransaction(pNdb);  return result;}int runRollbackNothing(NDBT_Context* ctx, NDBT_Step* step){  int result = NDBT_OK;  HugoOperations hugoOps(*ctx->getTab());  Ndb* pNdb = GETNDB(step);  do{    // Delete record 5 - 15    CHECK(hugoOps.startTransaction(pNdb) == 0);      CHECK(hugoOps.pkDeleteRecord(pNdb, 5, 10) == 0);    // Rollback     CHECK(hugoOps.execute_Rollback(pNdb) == 0);    CHECK(hugoOps.closeTransaction(pNdb) == 0);    // Check records are not deleted    CHECK(hugoOps.startTransaction(pNdb) == 0);      CHECK(hugoOps.pkReadRecord(pNdb, 5, 10, NdbOperation::LM_Exclusive) == 0);    CHECK(hugoOps.execute_Commit(pNdb) == 0);    CHECK(hugoOps.closeTransaction(pNdb) == 0);      CHECK(hugoOps.startTransaction(pNdb) == 0);      CHECK(hugoOps.execute_Rollback(pNdb) == 0);  }while(false);  hugoOps.closeTransaction(pNdb);  return result;}int runMassiveRollback(NDBT_Context* ctx, NDBT_Step* step){  NdbRestarter restarter;  const int records = 4 * restarter.getNumDbNodes();  HugoTransactions hugoTrans(*ctx->getTab());  if (hugoTrans.loadTable(GETNDB(step), records) != 0){    return NDBT_FAILED;  }    int result = NDBT_OK;  HugoOperations hugoOps(*ctx->getTab());  Ndb* pNdb = GETNDB(step);  const Uint32 OPS_PER_TRANS = 256;  const Uint32 OPS_TOTAL = 4096;  for(int row = 0; row < records; row++){    int res;    CHECK(hugoOps.startTransaction(pNdb) == 0);      for(Uint32 i = 0; i<OPS_TOTAL; i += OPS_PER_TRANS){      for(Uint32 j = 0; j<OPS_PER_TRANS; j++){	CHECK(hugoOps.pkUpdateRecord(pNdb, row, 1, i) == 0);      }      g_info << "Performed " << (i+OPS_PER_TRANS) << " updates on row: " << row	     << endl;      if(result != NDBT_OK){	break;      }      res = hugoOps.execute_NoCommit(pNdb);      if(res != 0){	NdbError err = pNdb->getNdbError(res);	CHECK(err.classification == NdbError::TimeoutExpired);	break;      }    }    if(result != NDBT_OK){      break;    }    g_info << "executeRollback" << endl;    CHECK(hugoOps.execute_Rollback(pNdb) == 0);    CHECK(hugoOps.closeTransaction(pNdb) == 0);  }    hugoOps.closeTransaction(pNdb);  return result;}intrunMassiveRollback2(NDBT_Context* ctx, NDBT_Step* step){  HugoTransactions hugoTrans(*ctx->getTab());  if (hugoTrans.loadTable(GETNDB(step), 1) != 0){    return NDBT_FAILED;  }  int result = NDBT_OK;  HugoOperations hugoOps(*ctx->getTab());  Ndb* pNdb = GETNDB(step);  const Uint32 OPS_TOTAL = 4096;  const Uint32 LOOPS = 10;    for(Uint32 loop = 0; loop<LOOPS; loop++){    CHECK(hugoOps.startTransaction(pNdb) == 0);      for(Uint32 i = 0; i<OPS_TOTAL-1; i ++){      if((i & 1) == 0){	CHECK(hugoOps.pkUpdateRecord(pNdb, 0, 1, loop) == 0);      } else {	CHECK(hugoOps.pkUpdateRecord(pNdb, 1, 1, loop) == 0);      }    }    CHECK(hugoOps.execute_Commit(pNdb) == 626);    CHECK(hugoOps.execute_Rollback(pNdb) == 0);    CHECK(hugoOps.closeTransaction(pNdb) == 0);  }    hugoOps.closeTransaction(pNdb);  return result;}NDBT_TESTSUITE(testBasic);TESTCASE("PkInsert", 	 "Verify that we can insert and delete from this table using PK"	 "NOTE! No errors are allowed!" ){  INITIALIZER(runInsert);  VERIFIER(runVerifyInsert);}TESTCASE("PkRead", 	   "Verify that we can insert, read and delete from this table using PK"){  INITIALIZER(runLoadTable);  STEP(runPkRead);  FINALIZER(runClearTable);}TESTCASE("PkDirtyRead", 	 "Verify that we can insert, dirty read and delete from this table using PK"){  INITIALIZER(runLoadTable);  STEP(runPkDirtyRead);  FINALIZER(runClearTable);}TESTCASE("PkUpdate", 	   "Verify that we can insert, update and delete from this table using PK"){  INITIALIZER(runLoadTable);  STEP(runPkUpdate);  FINALIZER(runClearTable);}TESTCASE("PkDelete", 	 "Verify that we can delete from this table using PK"){  INITIALIZER(runLoadTable);  STEP(runPkDelete);  FINALIZER(runClearTable);}TESTCASE("UpdateAndRead", 	 "Verify that we can read and update at the same time"){  INITIALIZER(runLoadTable);  STEP(runPkRead);  STEP(runPkRead);  STEP(runPkRead);  STEP(runPkUpdate);    STEP(runPkUpdate);  STEP(runPkUpdate);  FINALIZER(runClearTable);}TESTCASE("PkReadAndLocker", 	 "Verify that we can read although there are "\	 " a number of 1 second locks in the table"){  INITIALIZER(runLoadTable);  STEP(runPkReadUntilStopped);  STEP(runLocker);  FINALIZER(runClearTable);}TESTCASE("PkReadAndLocker2", 	 "Verify that we can read and update although there are "\	 " a number of 1 second locks in the table"){  INITIALIZER(runLoadTable);  STEP(runPkReadUntilStopped);  STEP(runPkReadUntilStopped);  STEP(runPkReadUntilStopped);  STEP(runPkReadUntilStopped);  STEP(runPkReadUntilStopped);  STEP(runPkReadUntilStopped);  STEP(runLocker);  FINALIZER(runClearTable);}TESTCASE("PkReadUpdateAndLocker", 	 "Verify that we can read and update although there are "\	 " a number of 1 second locks in the table"){  INITIALIZER(runLoadTable);  STEP(runPkReadUntilStopped);  STEP(runPkReadUntilStopped);  STEP(runPkUpdateUntilStopped);  STEP(runPkUpdateUntilStopped);  STEP(runLocker);  FINALIZER(runClearTable);}TESTCASE("ReadWithLocksAndInserts", 	 "TR457: This test is added to verify that an insert of a records "\	 "that is already in the database does not delete the record"){    INITIALIZER(runLoadTable);  STEP(runPkReadUntilStopped);  STEP(runPkReadUntilStopped);  STEP(runLocker);  STEP(runInsertUntilStopped);  FINALIZER(runClearTable);}TESTCASE("PkInsertTwice", 	 "Verify that we can't insert an already inserted record."	 "Error should be returned" ){  INITIALIZER(runLoadTable);  STEP(runInsertTwice);  FINALIZER(runClearTable);}TESTCASE("NoCommitSleep", 	 "Verify what happens when a NoCommit transaction is aborted by "	 "NDB because the application is sleeping" ){  INITIALIZER(runLoadTable);  INITIALIZER(runNoCommitSleep);  FINALIZER(runClearTable2);}TESTCASE("Commit626", 	 "Verify what happens when a Commit transaction is aborted by "	 "NDB because the record does no exist" ){  INITIALIZER(runClearTable2);  INITIALIZER(runCommit626);  FINALIZER(runClearTable2);}TESTCASE("CommitTry626", 	 "Verify what happens when a Commit(TryCommit) \n"	 "transaction is aborted by "	 "NDB because the record does no exist" ){  INITIALIZER(runClearTable2);  INITIALIZER(runCommit_TryCommit626);  FINALIZER(runClearTable2);}TESTCASE("CommitAsMuch626", 	 "Verify what happens when a Commit(CommitAsMuchAsPossible) \n"	 "transaction is aborted by\n"	 "NDB because the record does no exist" ){  INITIALIZER(runClearTable2);  INITIALIZER(runCommit_CommitAsMuchAsPossible626);  FINALIZER(runClearTable2);}TESTCASE("NoCommit626", 	 "Verify what happens when a NoCommit transaction is aborted by "	 "NDB because the record does no exist" ){  INITIALIZER(runClearTable2);  INITIALIZER(runNoCommit626);  FINALIZER(runClearTable2);}TESTCASE("NoCommitRollback626", 	 "Verify what happens when a NoCommit transaction is aborted by "	 "NDB because the record does no exist and then we try to rollback\n"	 "the transaction" ){  INITIALIZER(runClearTable2);  INITIALIZER(runNoCommitRollback626);  FINALIZER(runClearTable2);}TESTCASE("Commit630", 	 "Verify what happens when a Commit transaction is aborted by "	 "NDB because the record already exist" ){  INITIALIZER(runLoadTable);  INITIALIZER(runCommit630);  FINALIZER(runClearTable2);}TESTCASE("CommitTry630", 	 "Verify what happens when a Commit(TryCommit) \n"	 "transaction is aborted by "	 "NDB because the record already exist" ){  INITIALIZER(runLoadTable);  INITIALIZER(runCommit_TryCommit630);  FINALIZER(runClearTable2);}TESTCASE("CommitAsMuch630", 	 "Verify what happens when a Commit(CommitAsMuchAsPossible) \n"	 "transaction is aborted by\n"	 "NDB because the record already exist" ){  INITIALIZER(runLoadTable);  INITIALIZER(runCommit_CommitAsMuchAsPossible630);  FINALIZER(runClearTable2);}TESTCASE("NoCommit630", 	 "Verify what happens when a NoCommit transaction is aborted by "	 "NDB because the record already exist" ){  INITIALIZER(runLoadTable);  INITIALIZER(runNoCommit630);  FINALIZER(runClearTable2);}TESTCASE("NoCommitRollback630", 	 "Verify what happens when a NoCommit transaction is aborted by "	 "NDB because the record already exist and then we try to rollback\n"	 "the transaction" ){  INITIALIZER(runLoadTable);  INITIALIZER(runNoCommitRollback630);  FINALIZER(runClearTable2);}TESTCASE("NoCommitAndClose", 	 "Verify what happens when a NoCommit transaction is closed "	 "without rolling back the transaction " ){  INITIALIZER(runLoadTable);  INITIALIZER(runNoCommitAndClose);  FINALIZER(runClearTable2);}TESTCASE("RollbackDelete", 	 "Test rollback of a no committed delete"){  INITIALIZER(runLoadTable);  INITIALIZER(runCheckRollbackDelete);  FINALIZER(runClearTable2);}TESTCASE("RollbackUpdate", 	 "Test rollback of a no committed update"){  INITIALIZER(runLoadTable);  INITIALIZER(runCheckRollbackUpdate);  FINALIZER(runClearTable2);}TESTCASE("RollbackDeleteMultiple", 	 "Test rollback of 10 non committed delete"){  INITIALIZER(runLoadTable);  INITIALIZER(runCheckRollbackDeleteMultiple);  FINALIZER(runClearTable2);}TESTCASE("ImplicitRollbackDelete", 	 "Test close transaction after a no commited delete\n"	 "this would give an implicit rollback of the delete\n"){  INITIALIZER(runLoadTable);  INITIALIZER(runCheckImplicitRollbackDelete);  FINALIZER(runClearTable2);}TESTCASE("CommitDelete", 	 "Test close transaction after a no commited delete\n"	 "this would give an implicit rollback of the delete\n"){  INITIALIZER(runLoadTable);  INITIALIZER(runCheckCommitDelete);  FINALIZER(runClearTable2);}TESTCASE("RollbackNothing", 	 "Test rollback of nothing"){  INITIALIZER(runLoadTable);  INITIALIZER(runRollbackNothing);  FINALIZER(runClearTable2);}TESTCASE("MassiveRollback", 	 "Test rollback of 4096 operations"){  INITIALIZER(runClearTable2);  INITIALIZER(runMassiveRollback);  FINALIZER(runClearTable2);}TESTCASE("MassiveRollback2", 	 "Test rollback of 4096 operations"){  INITIALIZER(runClearTable2);  INITIALIZER(runMassiveRollback2);  FINALIZER(runClearTable2);}TESTCASE("MassiveTransaction",         "Test very large insert transaction"){  INITIALIZER(runLoadTable2);  FINALIZER(runClearTable2);}TESTCASE("Fill", 	 "Verify what happens when we fill the db" ){  INITIALIZER(runFillTable);  INITIALIZER(runPkRead);  FINALIZER(runClearTable2);}NDBT_TESTSUITE_END(testBasic);#if 0TESTCASE("ReadConsistency",	 "Check that a read within a transaction returns the " \	 "same result no matter"){  STEP(runInsertOne);  STEP(runReadOne);  FINALIZER(runClearTable2);}#endifint main(int argc, const char** argv){  ndb_init();  return testBasic.execute(argc, argv);}

⌨️ 快捷键说明

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