int NDBT_TestSuite::executeAll(Ndb_cluster_connection& con, const char* _testname){ if(tests.size() == 0) return NDBT_FAILED; ndbout << name << " started [" << getDate() << "]" << endl; if(!runonce) { testSuiteTimer.doStart(); for (int t=0; t < NDBT_Tables::getNumTables(); t++){ const NdbDictionary::Table* ptab = NDBT_Tables::getTable(t); ndbout << "|- " << ptab->getName() << endl; execute(con, ptab, _testname); } testSuiteTimer.doStop(); } else { for (unsigned i = 0; i < tests.size(); i++) { if (opt_stop_on_error != 0 && numTestsFail > 0) break; if (_testname != NULL && strcasecmp(tests[i]->getName(), _testname) != 0) continue; tests[i]->initBeforeTest(); ctx = new NDBT_Context(con); ctx->setNumRecords(records); ctx->setNumLoops(loops); ctx->setSuite(this); ctx->setProperty("NoDDL", (Uint32) m_noddl); int result = tests[i]->execute(ctx); tests[i]->saveTestResult("", result); if (result != NDBT_OK) numTestsFail++; else numTestsOk++; numTestsExecuted++; delete ctx; } } return reportAllTables(_testname); }
int NDBT_TestSuite::executeAll(Ndb_cluster_connection& con, const char* _testname){ if(tests.size() == 0) { g_err << "Size of test == 0" << endl; return NDBT_FAILED; } char buf[64]; // For timestamp string ndbout << name << " started [" << getDate(buf, sizeof(buf)) << "]" << endl; testSuiteTimer.doStart(); if(!runonce) { for (int t=0; t < NDBT_Tables::getNumTables(); t++){ const NdbDictionary::Table* ptab = NDBT_Tables::getTable(t); ndbout << "|- " << ptab->getName() << endl; execute(con, ptab, _testname); } } else { NdbDictionary::Table * pTab = 0; if (_testname == NULL) { for (unsigned i = 0; i < tests.size(); i++) { if (opt_stop_on_error != 0 && numTestsFail > 0) break; execute(con, tests[i], pTab); } } else { NDBT_TestCase * pt = findTest(_testname); if (pt != 0) execute(con, pt, pTab); } } testSuiteTimer.doStop(); return reportAllTables(_testname); }
int NDBT_TestSuite::executeAll(Ndb_cluster_connection& con, const char* _testname){ if(tests.size() == 0) return NDBT_FAILED; Ndb ndb(&con, "TEST_DB"); ndb.init(1024); int result = ndb.waitUntilReady(500); // 5 minutes if (result != 0){ g_err << name <<": Ndb was not ready" << endl; return NDBT_FAILED; } ndbout << name << " started [" << getDate() << "]" << endl; if(!runonce) { testSuiteTimer.doStart(); for (int t=0; t < NDBT_Tables::getNumTables(); t++){ const NdbDictionary::Table* ptab = NDBT_Tables::getTable(t); ndbout << "|- " << ptab->getName() << endl; execute(con, &ndb, ptab, _testname); } testSuiteTimer.doStop(); } else { NdbDictionary::Dictionary* pDict= ndb.getDictionary(); for (unsigned i = 0; i < tests.size(); i++){ if (_testname != NULL && strcasecmp(tests[i]->getName(), _testname) != 0) continue; tests[i]->initBeforeTest(); ctx = new NDBT_Context(con); Uint32 t; for (t=0; t < (Uint32)NDBT_Tables::getNumTables(); t++) { const NdbDictionary::Table* pTab = NDBT_Tables::getTable(t); const NdbDictionary::Table* pTab2 = pDict->getTable(pTab->getName()); if(pTab2 != 0 && pDict->dropTable(pTab->getName()) != 0) { numTestsFail++; numTestsExecuted++; g_err << "ERROR0: Failed to drop table " << pTab->getName() << endl; tests[i]->saveTestResult(pTab, FAILED_TO_CREATE); continue; } if (NDBT_Tables::createTable(&ndb, pTab->getName(), false, false, g_create_hook, this) != 0) { numTestsFail++; numTestsExecuted++; g_err << "ERROR1: Failed to create table " << pTab->getName() << pDict->getNdbError() << endl; tests[i]->saveTestResult(pTab, FAILED_TO_CREATE); continue; } pTab2 = pDict->getTable(pTab->getName()); ctx->addTab(pTab2); } ctx->setNumRecords(records); ctx->setNumLoops(loops); if(remote_mgm != NULL) ctx->setRemoteMgm(remote_mgm); ctx->setSuite(this); const NdbDictionary::Table** tables= ctx->getTables(); result = tests[i]->execute(ctx); tests[i]->saveTestResult(tables[0], result); if (result != NDBT_OK) numTestsFail++; else numTestsOk++; numTestsExecuted++; if(result == NDBT_OK) { for(t = 0; tables[t] != 0; t++) { pDict->dropTable(tables[t]->getName()); } } delete ctx; } } return reportAllTables(_testname); }