int main(int argc, char** argv) { bool rflg = false; opterr = 0; int c; while ((c = getopt(argc, argv, "rh")) != EOF) switch (c) { case 'r': rflg = true; break; case 'h': usage(); return 0; break; default: usage(); return 1; break; } vector<SessionMonitor::MonSIDTIDEntry*> toTxns; SessionMonitor* monitor = new SessionMonitor(); toTxns.clear(); toTxns = monitor->timedOutTxns(); // get timed out txns vector<SessionMonitor::MonSIDTIDEntry*>::iterator iter = toTxns.begin(); vector<SessionMonitor::MonSIDTIDEntry*>::iterator end = toTxns.end(); vector<SessionMonitor::MonSIDTIDEntry*> tmp; while (iter != end) { if ((*iter)->sessionid > 0) tmp.push_back(*iter); ++iter; } toTxns.swap(tmp); cout << toTxns.size() << " timed out transactions." << endl; for (unsigned idx = 0; idx < toTxns.size(); idx++) { monitor->printTxns(*toTxns[idx]); if (rflg) { rollback(*toTxns[idx]); } } delete monitor; return 0; }
void MonitorTestPlan_1() { int currStartTxn=0; int currEndTxn=5; int txnCntIncr=5; const int sleepTime=1; const int iterMax=1; vector<SessionMonitor::MonSIDTIDEntry*> toTxns; manager = new SessionManager(); //CPPUNIT_ASSERT(manager->verifySize()==0); SessionMonitor* monitor = NULL; for(int jdx=0; jdx<iterMax; jdx++) { // store the current state of the SessionManager monitor = new SessionMonitor(); monitor->AgeLimit(sleepTime); delete monitor; int idx=0; int grpStart=currStartTxn; for (idx=0; idx < 3; idx++ ) { createTxns(currStartTxn, currEndTxn); //CPPUNIT_ASSERT(manager->verifySize()==(idx+1)*txnCntIncr); currStartTxn+=txnCntIncr; currEndTxn+=txnCntIncr; sleep(sleepTime+1); //make sessions time out monitor = new SessionMonitor(); // read Monitor data monitor->AgeLimit(sleepTime); toTxns.clear(); toTxns = monitor->timedOutTxns(); // get timed out txns CPPUNIT_ASSERT(toTxns.size()==(uint)txnCntIncr*idx); delete monitor; } int grpEnd=currEndTxn; monitor = new SessionMonitor(); monitor->AgeLimit(sleepTime); closeTxns(grpStart, grpEnd); // close this iteration of txns //CPPUNIT_ASSERT(manager->verifySize()==0); toTxns = monitor->timedOutTxns(); // get timed out txns CPPUNIT_ASSERT(toTxns.size()==0); delete monitor; } monitor = new SessionMonitor(); // readload Monitor data monitor->AgeLimit(sleepTime-1); toTxns.clear(); toTxns = monitor->timedOutTxns(); // get timed out txns CPPUNIT_ASSERT(toTxns.size()==0); delete monitor; //CPPUNIT_ASSERT(manager->verifySize()==0); delete manager; }