diff options
author | unknown <joreland@mysql.com> | 2004-08-09 09:44:05 +0200 |
---|---|---|
committer | unknown <joreland@mysql.com> | 2004-08-09 09:44:05 +0200 |
commit | 89b446969ae7942861da716f84ed8e15d1231a66 (patch) | |
tree | 0412967acd43f60637cf1c764a4cf3885744830f /ndb/test/ndbapi/testTimeout.cpp | |
parent | fbceeb05feee3aeb17fd2ca3309e3fe4e8f31712 (diff) | |
download | mariadb-git-89b446969ae7942861da716f84ed8e15d1231a66.tar.gz |
testTransaction -n FRead*
testTransaction -n *Scan*
testTimeout -n *
ndb/include/kernel/signaldata/DumpStateOrd.hpp:
Added DUMP for tc appl timeout
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
Send tckey conf if m_exec_flags is set
Added dump for appl timeout
ndb/test/include/HugoOperations.hpp:
Add scanRead
ndb/test/ndbapi/testTimeout.cpp:
Reenable
ndb/test/ndbapi/testTransactions.cpp:
Fix scan test cases
ndb/test/run-test/daily-basic-tests.txt:
reenable timeout-tests
added testTransaction -n Scan* testcases
ndb/test/src/HugoOperations.cpp:
Fix scan
ndb/test/src/NDBT_Test.cpp:
Drop table before test...(if createTable==true)
Diffstat (limited to 'ndb/test/ndbapi/testTimeout.cpp')
-rw-r--r-- | ndb/test/ndbapi/testTimeout.cpp | 148 |
1 files changed, 81 insertions, 67 deletions
diff --git a/ndb/test/ndbapi/testTimeout.cpp b/ndb/test/ndbapi/testTimeout.cpp index d37c58f7ea6..62e69125073 100644 --- a/ndb/test/ndbapi/testTimeout.cpp +++ b/ndb/test/ndbapi/testTimeout.cpp @@ -20,6 +20,44 @@ #include <UtilTransactions.hpp> #include <random.h> #include <NdbConfig.hpp> +#include <signaldata/DumpStateOrd.hpp> + +#define TIMEOUT 3000 + +Uint32 g_org_timeout = 3000; + +int +setTransactionTimeout(NDBT_Context* ctx, NDBT_Step* step){ + NdbRestarter restarter; + + NdbConfig conf(GETNDB(step)->getNodeId()+1); + unsigned int nodeId = conf.getMasterNodeId(); + if (!conf.getProperty(nodeId, + NODE_TYPE_DB, + CFG_DB_TRANSACTION_INACTIVE_TIMEOUT, + &g_org_timeout)){ + return NDBT_FAILED; + } + + int val[] = { DumpStateOrd::TcSetApplTransactionTimeout, TIMEOUT }; + if(restarter.dumpStateAllNodes(val, 2) != 0){ + return NDBT_FAILED; + } + + return NDBT_OK; +} + +int +resetTransactionTimeout(NDBT_Context* ctx, NDBT_Step* step){ + NdbRestarter restarter; + + int val[] = { DumpStateOrd::TcSetApplTransactionTimeout, g_org_timeout }; + if(restarter.dumpStateAllNodes(val, 2) != 0){ + return NDBT_FAILED; + } + + return NDBT_OK; +} int runLoadTable(NDBT_Context* ctx, NDBT_Step* step){ @@ -55,16 +93,10 @@ int runTimeoutTrans(NDBT_Context* ctx, NDBT_Step* step){ NdbConfig conf(GETNDB(step)->getNodeId()+1); unsigned int nodeId = conf.getMasterNodeId(); int stepNo = step->getStepNo(); - Uint32 timeoutVal; - if (!conf.getProperty(nodeId, - NODE_TYPE_DB, - CFG_DB_TRANSACTION_INACTIVE_TIMEOUT, - &timeoutVal)){ - return NDBT_FAILED; - } - int minSleep = (int)(timeoutVal * 1.5); - int maxSleep = timeoutVal * 2; - ndbout << "TransactionInactiveTimeout="<<timeoutVal + + int minSleep = (int)(TIMEOUT * 1.5); + int maxSleep = TIMEOUT * 2; + ndbout << "TransactionInactiveTimeout="<< TIMEOUT << ", minSleep="<<minSleep << ", maxSleep="<<maxSleep<<endl; @@ -89,7 +121,6 @@ int runTimeoutTrans(NDBT_Context* ctx, NDBT_Step* step){ } while(false); hugoOps.closeTransaction(pNdb); - } return result; @@ -98,28 +129,18 @@ int runTimeoutTrans(NDBT_Context* ctx, NDBT_Step* step){ int runTimeoutTrans2(NDBT_Context* ctx, NDBT_Step* step){ int result = NDBT_OK; int loops = ctx->getNumLoops(); - NdbConfig conf(GETNDB(step)->getNodeId()+1); - unsigned int nodeId = conf.getMasterNodeId(); int stepNo = step->getStepNo(); int mul1 = ctx->getProperty("Op1", (Uint32)0); int mul2 = ctx->getProperty("Op2", (Uint32)0); int records = ctx->getNumRecords(); - Uint32 timeoutVal; - if (!conf.getProperty(nodeId, - NODE_TYPE_DB, - CFG_DB_TRANSACTION_INACTIVE_TIMEOUT, - &timeoutVal)){ - return NDBT_FAILED; - } - - int minSleep = (int)(timeoutVal * 1.5); - int maxSleep = timeoutVal * 2; + int minSleep = (int)(TIMEOUT * 1.5); + int maxSleep = TIMEOUT * 2; HugoOperations hugoOps(*ctx->getTab()); Ndb* pNdb = GETNDB(step); - for (int l = 0; l < loops && !ctx->isTestStopped(); l++){ + for (int l = 0; l<loops && !ctx->isTestStopped() && result == NDBT_OK; l++){ int op1 = 0 + (l + stepNo) * mul1; int op2 = 0 + (l + stepNo) * mul2; @@ -127,7 +148,7 @@ int runTimeoutTrans2(NDBT_Context* ctx, NDBT_Step* step){ op1 = (op1 % 5); op2 = (op2 % 5); - ndbout << stepNo << ": TransactionInactiveTimeout="<<timeoutVal + ndbout << stepNo << ": TransactionInactiveTimeout="<< TIMEOUT << ", minSleep="<<minSleep << ", maxSleep="<<maxSleep << ", op1=" << op1 @@ -143,32 +164,36 @@ int runTimeoutTrans2(NDBT_Context* ctx, NDBT_Step* step){ case 1: if(hugoOps.pkReadRecord(pNdb, stepNo, true) != 0){ g_err << stepNo << ": Fail" << __LINE__ << endl; - return NDBT_FAILED; + result = NDBT_FAILED; break; } break; case 2: if(hugoOps.pkUpdateRecord(pNdb, stepNo, true) != 0){ g_err << stepNo << ": Fail" << __LINE__ << endl; - return NDBT_FAILED; + result = NDBT_FAILED; break; } break; case 3: if(hugoOps.pkDeleteRecord(pNdb, stepNo, true) != 0){ g_err << stepNo << ": Fail" << __LINE__ << endl; - return NDBT_FAILED; + result = NDBT_FAILED; break; } break; case 4: if(hugoOps.pkInsertRecord(pNdb, stepNo+records+l, true) != 0){ g_err << stepNo << ": Fail" << __LINE__ << endl; - return NDBT_FAILED; + result = NDBT_FAILED; break; } break; } + + if(result != NDBT_OK) + break; + int res = hugoOps.execute_NoCommit(pNdb); if(res != 0){ g_err << stepNo << ": Fail" << __LINE__ << endl; - return NDBT_FAILED; + result = NDBT_FAILED; break; } int sleep = minSleep + myRandom48(maxSleep-minSleep); @@ -181,25 +206,25 @@ int runTimeoutTrans2(NDBT_Context* ctx, NDBT_Step* step){ case 1: if(hugoOps.pkReadRecord(pNdb, stepNo, true) != 0){ g_err << stepNo << ": Fail" << __LINE__ << endl; - return NDBT_FAILED; + result = NDBT_FAILED; break; } break; case 2: if(hugoOps.pkUpdateRecord(pNdb, stepNo, true) != 0){ g_err << stepNo << ": Fail" << __LINE__ << endl; - return NDBT_FAILED; + result = NDBT_FAILED; break; } break; case 3: if(hugoOps.pkDeleteRecord(pNdb, stepNo, true) != 0){ g_err << stepNo << ": Fail" << __LINE__ << endl; - return NDBT_FAILED; + result = NDBT_FAILED; break; } break; case 4: if(hugoOps.pkInsertRecord(pNdb, stepNo+2*records+l, true) != 0){ g_err << stepNo << ": Fail" << __LINE__ << endl; - return NDBT_FAILED; + result = NDBT_FAILED; break; } break; } @@ -209,7 +234,7 @@ int runTimeoutTrans2(NDBT_Context* ctx, NDBT_Step* step){ if(op1 != 0 && res != 266){ g_err << stepNo << ": Fail: " << res << "!= 237, op1=" << op1 << ", op2=" << op2 << endl; - return NDBT_FAILED; + result = NDBT_FAILED; break; } } while(false); @@ -223,18 +248,10 @@ int runTimeoutTrans2(NDBT_Context* ctx, NDBT_Step* step){ int runDontTimeoutTrans(NDBT_Context* ctx, NDBT_Step* step){ int result = NDBT_OK; int loops = ctx->getNumLoops(); - NdbConfig conf(GETNDB(step)->getNodeId()+1); - unsigned int nodeId = conf.getMasterNodeId(); int stepNo = step->getStepNo(); - Uint32 timeoutVal; - if (!conf.getProperty(nodeId, - NODE_TYPE_DB, - CFG_DB_TRANSACTION_INACTIVE_TIMEOUT, - &timeoutVal)){ - return NDBT_FAILED; - } - int maxSleep = (int)(timeoutVal * 0.5); - ndbout << "TransactionInactiveTimeout="<<timeoutVal + + int maxSleep = (int)(TIMEOUT * 0.5); + ndbout << "TransactionInactiveTimeout="<< TIMEOUT << ", maxSleep="<<maxSleep<<endl; @@ -259,11 +276,8 @@ int runDontTimeoutTrans(NDBT_Context* ctx, NDBT_Step* step){ } while(false); hugoOps.closeTransaction(pNdb); - - } - return result; } @@ -271,18 +285,9 @@ int runBuddyTransNoTimeout(NDBT_Context* ctx, NDBT_Step* step){ int result = NDBT_OK; int loops = ctx->getNumLoops(); int records = ctx->getNumRecords(); - NdbConfig conf(GETNDB(step)->getNodeId()+1); - unsigned int nodeId = conf.getMasterNodeId(); int stepNo = step->getStepNo(); - Uint32 timeoutVal; - if (!conf.getProperty(nodeId, - NODE_TYPE_DB, - CFG_DB_TRANSACTION_INACTIVE_TIMEOUT, - &timeoutVal)){ - return NDBT_FAILED; - } - int maxSleep = (int)(timeoutVal * 0.3); - ndbout << "TransactionInactiveTimeout="<<timeoutVal + int maxSleep = (int)(TIMEOUT * 0.3); + ndbout << "TransactionInactiveTimeout="<< TIMEOUT << ", maxSleep="<<maxSleep<<endl; HugoOperations hugoOps(*ctx->getTab()); @@ -297,12 +302,10 @@ int runBuddyTransNoTimeout(NDBT_Context* ctx, NDBT_Step* step){ CHECK(hugoOps.pkInsertRecord(pNdb, recordNo, true) == 0); CHECK(hugoOps.execute_NoCommit(pNdb) == 0); - for (int i = 0; i < 10; i++){ + for (int i = 0; i < 3; i++){ // Perform buddy scan reads - NdbResultSet* rs = 0; - CHECK((rs = hugoOps.scanReadRecords(pNdb)) != 0); + CHECK((hugoOps.scanReadRecords(pNdb)) == 0); CHECK(hugoOps.execute_NoCommit(pNdb) == 0); - CHECK(hugoOps.readTuples(rs) == 0); int sleep = myRandom48(maxSleep); ndbout << "Sleeping for " << sleep << " milliseconds" << endl; @@ -315,10 +318,7 @@ int runBuddyTransNoTimeout(NDBT_Context* ctx, NDBT_Step* step){ } while(false); hugoOps.closeTransaction(pNdb); - - } - return result; } @@ -329,7 +329,9 @@ TESTCASE("DontTimeoutTransaction", "if we sleep during the transaction. Use a sleep "\ "value which is smaller than TransactionInactiveTimeout"){ INITIALIZER(runLoadTable); + INITIALIZER(setTransactionTimeout); STEPS(runDontTimeoutTrans, 1); + FINALIZER(resetTransactionTimeout); FINALIZER(runClearTable); } TESTCASE("DontTimeoutTransaction5", @@ -338,7 +340,9 @@ TESTCASE("DontTimeoutTransaction5", "value which is smaller than TransactionInactiveTimeout" \ "Five simultaneous threads"){ INITIALIZER(runLoadTable); + INITIALIZER(setTransactionTimeout); STEPS(runDontTimeoutTrans, 5); + FINALIZER(resetTransactionTimeout); FINALIZER(runClearTable); } TESTCASE("TimeoutTransaction", @@ -346,7 +350,9 @@ TESTCASE("TimeoutTransaction", "if we sleep during the transaction. Use a sleep "\ "value which is larger than TransactionInactiveTimeout"){ INITIALIZER(runLoadTable); + INITIALIZER(setTransactionTimeout); STEPS(runTimeoutTrans, 1); + FINALIZER(resetTransactionTimeout); FINALIZER(runClearTable); } TESTCASE("TimeoutTransaction5", @@ -355,7 +361,9 @@ TESTCASE("TimeoutTransaction5", "value which is larger than TransactionInactiveTimeout" \ "Five simultaneous threads"){ INITIALIZER(runLoadTable); + INITIALIZER(setTransactionTimeout); STEPS(runTimeoutTrans, 5); + FINALIZER(resetTransactionTimeout); FINALIZER(runClearTable); } TESTCASE("TimeoutRandTransaction", @@ -363,9 +371,11 @@ TESTCASE("TimeoutRandTransaction", "if we sleep during the transaction. Use a sleep "\ "value which is larger than TransactionInactiveTimeout"){ INITIALIZER(runLoadTable); + INITIALIZER(setTransactionTimeout); TC_PROPERTY("Op1", 7); TC_PROPERTY("Op2", 11); STEPS(runTimeoutTrans2, 5); + FINALIZER(resetTransactionTimeout); FINALIZER(runClearTable); } TESTCASE("BuddyTransNoTimeout", @@ -375,7 +385,9 @@ TESTCASE("BuddyTransNoTimeout", "The total sleep time is longer than TransactionInactiveTimeout" \ "Commit the first transaction, it should not have timed out."){ INITIALIZER(runLoadTable); + INITIALIZER(setTransactionTimeout); STEPS(runBuddyTransNoTimeout, 1); + FINALIZER(resetTransactionTimeout); FINALIZER(runClearTable); } TESTCASE("BuddyTransNoTimeout5", @@ -386,7 +398,9 @@ TESTCASE("BuddyTransNoTimeout5", "Commit the first transaction, it should not have timed out." \ "Five simultaneous threads"){ INITIALIZER(runLoadTable); + INITIALIZER(setTransactionTimeout); STEPS(runBuddyTransNoTimeout, 5); + FINALIZER(resetTransactionTimeout); FINALIZER(runClearTable); } NDBT_TESTSUITE_END(testTimeout); |