String getTempDir() { static String tempDir; if (tempDir.empty()) { tempDir = FileUtils::joinPath(getTestDir(), L"temp"); FileUtils::createDirectory(tempDir); } return tempDir; }
void Test::removeFiles ( ) { // reset m_errno = 0; if ( g_conf.m_testParserEnabled ) { // remove all old files for now to avoid system diffs log("test: removing old parse critical and run files from " "last run."); //system ("rm /home/mwells/gigablast/test/parse*.?.*" ); //system ("rm /home/mwells/gigablast/test/critical*.?.*" ); char sbuf[1024]; char *testDir = getTestDir(); sprintf(sbuf,"rm %s/%s/run.?.*" , g_hostdb.m_dir,testDir); system (sbuf); // use this one instead since rm doesn't always work sprintf(sbuf,"ls -1 %s/%s/ | grep parse | xargs --verbose " "-I xxx rm %s/%s/xxx" , g_hostdb.m_dir, testDir , g_hostdb.m_dir, testDir ); log("test: %s",sbuf); system(sbuf); sprintf(sbuf,"ls -1 %s/%s/ | grep critical | xargs --verbose " "-I xxx rm %s/%s/xxx" , g_hostdb.m_dir, testDir , g_hostdb.m_dir, testDir ); log("test: %s",sbuf); system(sbuf); } // do not crash for lack of quickpoll now long saved = g_conf.m_useQuickpoll; g_conf.m_useQuickpoll = false; // . reset the qatest collection to zero docs // . TODO: implement this. only allow it for qatest coll. // . kinda like Collectiondb::deleteRec() i guess but we need to // preserve the parms!! // . deletetagdb = false g_collectiondb.resetColl ( "test" , false ); // reset event count //g_collectiondb.countEvents(); // turn it back on g_conf.m_useQuickpoll = saved; }
#include "MojDbPerfTestRunner.h" #include "MojDbPerfCreateTest.h" #include "MojDbPerfReadTest.h" #include "MojDbPerfUpdateTest.h" #include "MojDbPerfDeleteTest.h" #include "MojDbPerfIndexTest.h" MojString getTestDir() { MojString dir; MojErr err = dir.format("/tmp/mojodb-test-dir-%d", getpid()); assert( err == MojErrNone ); return dir; } const MojString mojDbTestDirString = getTestDir(); const MojChar* const MojDbTestDir = mojDbTestDirString.data(); MojUInt64 allTestsTime = 0; int main(int argc, char** argv) { MojDbPerfTestRunner runner; return runner.main(argc, argv); } void MojDbPerfTestRunner::runTests() { #if MOJ_USE_LDB // TODO: GF-4906 test(MojDbPerfIndexTest()); #endif
// come here once per second i guess void Test::initTestRun ( ) { g_errno = 0; // . all hosts should have their g_conf.m_repairMode parm set // . it is global now, not collection based, since we need to // lock down titledb for the scan and there could be recs from // the collection we are repairing in titledb's rdbtree, which, // when dumped, would mess up our scan. if ( ! g_conf.m_testSpiderEnabled && ! g_conf.m_testParserEnabled ) { char *xx=NULL;*xx=0; } // if both enabled, core if ( g_conf.m_testSpiderEnabled && g_conf.m_testParserEnabled ) { char *xx=NULL;*xx=0; } // if the power went off if ( ! g_process.m_powerIsOn ) return; // return if currently running // no, admin can re-init even if running now //if ( m_isRunning ) { char *xx=NULL;*xx=0; }//return; // must be host #0 only if ( g_hostdb.m_myHost->m_hostId != 0 ) return; // if was initially in this mode, don't do anything //if ( m_testSpiderEnabledSaved ) return; //if ( m_testParserEnabledSaved ) return; // you must have the "test" coll already setup! CollectionRec *cr = g_collectiondb.getRec("test"); if ( ! cr ) { // note it log("test: please add a collection named \"test\" first."); // stop the test g_conf.m_testParserEnabled = false; g_conf.m_testSpiderEnabled = false; // all done return; } char *testDir = getTestDir(); // scan for file named "run.start.%li.txt" which is a dump of all // the conf and parms char filename[100]; File f; long i; for ( i = 0 ; i < 9999 ; i++ ) { // make filename. base it off working dir, g_hostdb.m_dir sprintf ( filename,"%s/%s/run.%li.collparms.txt", g_hostdb.m_dir,testDir,i ); // exist? f.set ( filename ); // open files long status = f.doesExist(); // error? if ( status == -1 ) { // note it in the log log("test: doesExist() returned -1"); // end the test g_conf.m_testParserEnabled = false; g_conf.m_testSpiderEnabled = false; // all done return; } // try next i if this one in use if ( status ) continue; // got one break; } // close it f.close(); // create the run.%li.version.txt file char cmd[1000]; char vfile[200]; sprintf(vfile,"%s/%s/run.%li.version.txt",g_hostdb.m_dir,testDir,i); sprintf(cmd, "%s/gb -v >& %s ; " "echo -n \"RUN START TIME: \" >> %s ; " "date >> %s", g_hostdb.m_dir,vfile, vfile, vfile); system(cmd); // save it m_runId = i; cr = g_collectiondb.getRec ( "test" ); if ( ! cr ) { // and no more of this g_conf.m_testParserEnabled = false; g_conf.m_testSpiderEnabled = false; return; } // set these m_coll = cr->m_coll; // turn on spiders //cr->m_spideringEnabled = 1; // crap i guess this too!!! //g_conf.m_spideringEnabled = 1; // // log out the global parms // char fbuf[100]; // print our global parms into a file called run.%li.start.txt sprintf(fbuf,"%s/%s/run.%li.confparms.txt",g_hostdb.m_dir,testDir,i); // this saves it as xml i think g_parms.saveToXml ( (char *)&g_conf , fbuf ); // // log out the coll specific parms // // update name sprintf(fbuf,"%s/%s/run.%li.collparms.txt",g_hostdb.m_dir,testDir,i); // save that g_parms.saveToXml ( (char *)cr , fbuf ); // get the list of urls to download and inject in order sprintf(fbuf,"%s/%s/urls.txt",g_hostdb.m_dir,testDir); // set it f.set ( fbuf ) ; // read it in long fsize = f.getFileSize(); // add one for \0 termination long need = fsize + 1; // read it in char *buf = (char *)mmalloc ( need ,"qatest"); // error? if ( ! buf ) { // note it log("test: failed to alloc %li bytes for url buf",fsize); // disable testing g_conf.m_testParserEnabled = false; g_conf.m_testSpiderEnabled = false; // all done return; } // open it f.open ( O_RDONLY ); // read it in long rs = f.read ( buf , fsize , 0 ) ; // check it if ( rs != fsize ) { // note it log("test: failed to read %li bytes of urls.txt file",fsize); // disable testing g_conf.m_testParserEnabled = false; g_conf.m_testSpiderEnabled = false; // all done return; } // save it m_urlBuf = buf; // null term it just in case buf[need-1] = '\0'; // end of it, including the terminating \0 m_urlEnd = buf + need; // init url offset m_urlPtr = m_urlBuf; // reset just in case //m_spiderLinks = false; m_bypassMenuElimination = false; // first check for spiderlinks=1|true for ( char *p = m_urlBuf ; p < m_urlEnd ; p++ ) { //if ( p[0] != 's' ) continue; //if ( p[1] != 'p' ) continue; //if ( ! strncmp(p,"spiderlinks",11) ) // m_spiderLinks = true; //if ( ! strncmp(p,"bypassmenuelimination",21) ) // m_bypassMenuElimination = true; } // force max spiders to one because one page is often dependent // on the previous page! //if ( ! m_spiderLinks ) cr->m_maxNumSpiders = 1; // need to make it 6 since some priorities essentially lock the // ips up that have urls in higher priorities. i.e. once we dole // a url out for ip X, then if later we add a high priority url for // IP X it can't get spidered until the one that is doled does. //else cr->m_maxNumSpiders = 6; // . first space out all comments // . comments are nice because we know why the url is in urls.txt for ( char *p = m_urlBuf ; p < m_urlEnd ; p++ ) { // skip if not start of a comment line if ( *p != '#' ) continue; // if not preceeded by a \n or start, skip if ( p > m_urlBuf && *(p-1) != '\n' ) continue; // ok, nuke it for ( ; *p && *p !='\n' ; p++ ) *p = ' '; } // if we hit "\nSTOP\n" then white out that and all past it for ( char *p = m_urlBuf ; p < m_urlEnd ; p++ ) { // skip if not start of a comment line if ( *p != '\n' ) continue; // check it if ( strncmp(p,"\nSTOP\n",6) ) continue; // white out for ( ; *p ; p++ ) { // until we HIT RESUME if ( *p == '\n' && ! strncmp(p,"\nRESUME\n",8) ) { p[1] = ' '; p[2] = ' '; p[3] = ' '; p[4] = ' '; p[5] = ' '; p[6] = ' '; break; } *p = ' '; } // all done //break; } // then NULL terminate all urls by converting all white space to \0s for ( char *p = m_urlBuf ; p < m_urlEnd ; p++ ) // all non url chars to \0 if ( is_wspace_a(*p) ) *p = '\0'; // flag this m_isRunning = true; // and this m_isAdding = true; m_testStartTime = gettimeofdayInMilliseconds(); // set up dedup table m_dt.set ( 8,0,0,NULL,0,false,MAX_NICENESS,"testdedup"); // remove all old files for now to avoid system diffs log("test: beginning injection"); // . now inject each url in order, one at a time using msg7 i guess // . returns true if all done if ( ! injectLoop() ) return; // close it up //stopIt(); }
namespace U2 { QString getTestDir(){ bool ok; int i = qgetenv("UGENE_GUI_TEST_SUITE_NUMBER").toInt(&ok); #ifdef Q_OS_MAC if ( ok && i>1){ return QString("../../../../../../test%1/").arg(i-1); }else{ return QString("../../../../../../test/"); } #else if ( ok && i>1){ return QString("../../test%1/").arg(i-1); }else{ return QString("../../test/"); } #endif } QString getDataDir(){ bool ok; int i = qgetenv("UGENE_GUI_TEST_SUITE_NUMBER").toInt(&ok); #ifdef Q_OS_MAC if ( ok && i>1 ){ return QString("data%1/").arg(i-1); }else{ return QString("data/"); } #else if ( ok && i>1){ return QString("../../data%1/").arg(i-1); }else{ return QString("../../data/"); } #endif } QString getScreenshotDir(){ QString result; #ifdef Q_OS_MAC result = "../../../../../../screenshotFol/"; #else QString guiTestOutputDirectory = qgetenv("GUI_TESTING_OUTPUT"); if(guiTestOutputDirectory.isEmpty()){ result = QDir::homePath() + "/gui_testing_output/" + QDate::currentDate().toString("dd.MM.yyyy") + "/screenshots/"; }else{ result = guiTestOutputDirectory + "/gui_testing_output/" + QDate::currentDate().toString("dd.MM.yyyy") + "/screenshots/"; } #endif return result; } const QString UGUITest::testDir = getTestDir(); const QString UGUITest::dataDir = getDataDir(); const QString UGUITest::sandBoxDir = testDir + "_common_data/scenarios/sandbox/"; const QString UGUITest::screenshotDir = getScreenshotDir(); } // namespace
#ifdef MOJ_USE_BDB #include "db-luna/MojDbBerkeleyFactory.h" #elif MOJ_USE_LDB #include "db-luna/leveldb/MojDbLevelFactory.h" #else #error "Database Engine doesn't set. See README.txt" #endif std::string getTestDir() { char buf[128]; size_t n = snprintf(buf, sizeof(buf)-1, "/tmp/mojodb-test-dir-%d", time(0)); if (n < 0) return "/tmp/mojodb-test-dir"; // fallback else return std::string(buf, n); } const std::string mojDbTestDirString = getTestDir(); const MojChar* const MojDbTestDir = mojDbTestDirString.c_str(); int main(int argc, char** argv) { MojDbTestRunner runner; // set up bdb first #ifdef MOJ_USE_BDB MojDbStorageEngine::setEngineFactory(new MojDbBerkeleyFactory()); #elif MOJ_USE_LDB MojDbStorageEngine::setEngineFactory(new MojDbLevelFactory()); #endif return runner.main(argc, argv); }