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;
}
Пример #2
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;
}