// . run a series of tests to ensure that gb is functioning properly // . uses the ./qa subdirectory to hold archive pages, ips, spider dates to // ensure consistency between tests for exact replays bool qatest ( ) { if ( s_registered ) { g_loop.unregisterSleepCallback(NULL,qatestWrapper); s_registered = false; } if ( ! s_callback ) s_callback = qatest; if ( ! g_qaSock ) return true; // returns true when done, false when blocked //if ( ! qainject ( ) ) return false; // returns true when done, false when blocked //if ( ! qaspider ( ) ) return false; long n = sizeof(s_qatests)/sizeof(QATest); for ( long i = 0 ; i < n ; i++ ) { QATest *qt = &s_qatests[i]; if ( ! qt->m_doTest ) continue; // store that s_qt = qt; // point to flags s_flags = qt->m_flags; // call the qatest if ( ! qt->m_func() ) return false; } // save this saveHashTable(); // do not reset since we don't reload it above! //s_ht.reset(); //if ( g_numErrors ) // g_qaOutput.safePrintf("<input type=submit value=submit><br>"); g_qaOutput.safePrintf("<br>DONE RUNNING QA TESTS<br>"); // . print the output // . the result of each test is stored in the g_qaOutput safebuf g_httpServer.sendDynamicPage(g_qaSock, g_qaOutput.getBufStart(), g_qaOutput.length(), -1/*cachetime*/); g_qaOutput.purge(); g_qaSock = NULL; return true; }