diff options
author | unknown <jmiller/ndbdev@mysql.com/ndb15.mysql.com> | 2008-01-09 18:54:32 +0100 |
---|---|---|
committer | unknown <jmiller/ndbdev@mysql.com/ndb15.mysql.com> | 2008-01-09 18:54:32 +0100 |
commit | 5e85c850accc9d9152032424c61018553324575c (patch) | |
tree | d7c6773a5de8c36224d9d5713680fe03115509c6 /storage | |
parent | 0f5cf86410aa7006f70bf3dc730f2f175d0b1642 (diff) | |
download | mariadb-git-5e85c850accc9d9152032424c61018553324575c.tar.gz |
DbUtil.hpp, DbUtil.cpp, NdbRepStress.cpp:
More code improvments
storage/ndb/test/include/DbUtil.hpp:
More code improvments
storage/ndb/test/src/DbUtil.cpp:
More code improvments
storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp:
More code improvments
Diffstat (limited to 'storage')
-rwxr-xr-x | storage/ndb/test/include/DbUtil.hpp | 7 | ||||
-rw-r--r-- | storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp | 309 | ||||
-rwxr-xr-x | storage/ndb/test/src/DbUtil.cpp | 26 |
3 files changed, 177 insertions, 165 deletions
diff --git a/storage/ndb/test/include/DbUtil.hpp b/storage/ndb/test/include/DbUtil.hpp index 62aaaf7b5a3..5ca5fca290c 100755 --- a/storage/ndb/test/include/DbUtil.hpp +++ b/storage/ndb/test/include/DbUtil.hpp @@ -90,9 +90,10 @@ public: int connect(); int selectDb(); - int selectDb(const char * m_db); - int doQuery(char * stm); - int doQuery(const char * stm); + int selectDb(const char *); + int createDb(BaseString&); + int doQuery(BaseString&); + int doQuery(const char *); int getErrorNumber(); unsigned long selectCountTable(const char * table); diff --git a/storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp b/storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp index 7d9b66d8e72..c3f3649fba1 100644 --- a/storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp +++ b/storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp @@ -17,16 +17,15 @@ #include <NDBT_ReturnCodes.h> #include <HugoTransactions.hpp> #include <UtilTransactions.hpp> -#include <TestNdbEventOperation.hpp> #include <DbUtil.hpp> -#include <NdbAutoPtr.hpp> +#include <mysql.h> + +/* +Will include restart testing in future phases #include <NdbRestarter.hpp> #include <NdbRestarts.hpp> -#include <mysql.h> -#include <signaldata/DumpStateOrd.hpp> +*/ -static BaseString sqlStm; -static BaseString db; static int t1_records = 50000; /**** TOOL SECTION ****/ @@ -42,7 +41,7 @@ static uint urandom(uint m) { if (m == 0) - return 0; + return NDBT_OK; uint r = urandom(); r = r % m; return r; @@ -78,12 +77,6 @@ syncSlaveWithMaster() return NDBT_FAILED; } - //Set the database we are wanting - if (master.selectDb()) - { - return NDBT_FAILED; - } - //Get max epoch from master if(master.doQuery("SELECT MAX(epoch) FROM mysql.ndb_binlog_index")) { @@ -93,7 +86,6 @@ syncSlaveWithMaster() row = mysql_fetch_row(result); masterEpoch = atoi(row[0]); mysql_free_result(result); - master.databaseLogout(); /* Now we will pull current epoch from slave. If not the @@ -111,12 +103,6 @@ syncSlaveWithMaster() return NDBT_FAILED; } - //Set the database we are wanting - if (slave.selectDb()) - { - return NDBT_FAILED; - } - while(slaveEpoch != masterEpoch && loopCnt < maxLoops) { if(slave.doQuery("SELECT epoch FROM mysql.ndb_apply_status")) @@ -153,6 +139,16 @@ syncSlaveWithMaster() int verifySlaveLoad(BaseString *table) { + BaseString sqlStm; + BaseString db; + MYSQL_RES * result; + MYSQL_ROW row; + unsigned int masterCount = 0; + unsigned int slaveCount = 0; + + db.assign("TEST_DB"); + sqlStm.assfmt("SELECT COUNT(*) FROM %s", table); + //First thing to do is sync slave if(syncSlaveWithMaster()) { @@ -161,13 +157,6 @@ verifySlaveLoad(BaseString *table) } //Now that slave is sync we can verify load - sqlStm.assfmt("SELECT COUNT(*) FROM %s", table); - MYSQL_RES * result; - MYSQL_ROW row; - unsigned int masterCount = 0; - unsigned int slaveCount = 0; - - //Create a DB Object for the master DbUtil master(db.c_str()," "); //Login to Master @@ -176,11 +165,6 @@ verifySlaveLoad(BaseString *table) return NDBT_FAILED; } - if (master.selectDb()) - { - return NDBT_FAILED; - } - if(master.doQuery(sqlStm.c_str())) { return NDBT_FAILED; @@ -189,7 +173,6 @@ verifySlaveLoad(BaseString *table) row = mysql_fetch_row(result); masterCount = atoi(row[0]); mysql_free_result(result); - master.databaseLogout(); //Create a DB Object for slave DbUtil slave(db.c_str(),".slave"); @@ -200,11 +183,6 @@ verifySlaveLoad(BaseString *table) return NDBT_FAILED; } - if (slave.selectDb()) - { - return NDBT_FAILED; - } - if(slave.doQuery(sqlStm.c_str())) { return NDBT_FAILED; @@ -223,45 +201,141 @@ verifySlaveLoad(BaseString *table) return NDBT_OK; } -/**** Test Section ****/ - -int -createDB(NDBT_Context* ctx, NDBT_Step* step) +int +createTEST_DB(NDBT_Context* ctx, NDBT_Step* step) { - //Setup the BaseString db to use throughout - db.assign("TEST_DB"); + BaseString cdb; + cdb.assign("TEST_DB"); //Create a dbutil object DbUtil master("mysql",""); + if (master.connect()) + { + if (master.createDb(cdb) == NDBT_OK) + { + return NDBT_OK; + } + } + return NDBT_FAILED; +} + +int +dropTEST_DB(NDBT_Context* ctx, NDBT_Step* step) +{ + //Create an SQL Object + DbUtil master("mysql",""); + //Login to Master if (!master.connect()) { return NDBT_FAILED; } - //Check to see if db already there - if (master.selectDb(db.c_str())) + if(master.doQuery("DROP DATABASE TEST_DB") != NDBT_OK) { return NDBT_FAILED; } - //Create TEST_DB - if (master.doQuery("CREATE DATABASE TEST_DB") != 0) + if(syncSlaveWithMaster() != NDBT_OK) { + g_err << "Drop DB -> Syncing with slave failed" + << endl; + return NDBT_FAILED; + } + return NDBT_OK; +} + +int +verifySlave(BaseString& sqlStm, BaseString& db) +{ + MYSQL_RES* resource; + MYSQL_ROW row; + float masterSum; + float slaveSum; + + //Create SQL Objects + DbUtil master(db.c_str(),""); + DbUtil slave(db.c_str(),".slave"); + + if(syncSlaveWithMaster() != NDBT_OK) + { + g_err << "Verify Slave rep1 -> Syncing with slave failed" + << endl; + return NDBT_FAILED; + } + + //Login to Master + if (!master.connect()) + { + return NDBT_FAILED; + } + + if(master.doQuery(sqlStm.c_str()) != NDBT_OK) + { + return NDBT_FAILED; + } + resource = mysql_use_result(master.getMysql()); + row = mysql_fetch_row(resource); + masterSum = atoi(row[0]); + mysql_free_result(resource); + + //Login to slave + if (!slave.connect()) + { + return NDBT_FAILED; + } + + if(slave.doQuery(sqlStm.c_str()) != NDBT_OK) + { + return NDBT_FAILED; + } + resource = mysql_use_result(slave.getMysql()); + row = mysql_fetch_row(resource); + slaveSum = atoi(row[0]); + mysql_free_result(resource); + + if(masterSum != slaveSum) + { + g_err << "VerifySlave -> masterSum != slaveSum..." << endl; return NDBT_FAILED; } return NDBT_OK; } + +/**** Test Section ****/ + +int +createDB(NDBT_Context* ctx, NDBT_Step* step) +{ + BaseString cdb; + cdb.assign("TEST_DB"); + + //Create a dbutil object + DbUtil master("mysql",""); + + if (master.connect()) + { + if (master.createDb(cdb) == NDBT_OK) + { + return NDBT_OK; + } + } + return NDBT_FAILED; +} + int createTable_rep1(NDBT_Context* ctx, NDBT_Step* step) { BaseString table; + BaseString db; + table.assign("rep1"); + db.assign("TEST_DB"); //Ensure slave is up and ready - if(syncSlaveWithMaster() != 0) + if(syncSlaveWithMaster() != NDBT_OK) { g_err << "Create Table -> Syncing with slave failed" << endl; @@ -277,30 +351,22 @@ createTable_rep1(NDBT_Context* ctx, NDBT_Step* step) return NDBT_FAILED; } - // Set the database we want - if(master.selectDb()) - { - return NDBT_FAILED; - } - - sqlStm.assign("CREATE TABLE rep1 (c1 MEDIUMINT NOT NULL AUTO_INCREMENT," - " c2 FLOAT, c3 CHAR(5), c4 bit(8), c5 FLOAT, c6 INT," - " c7 INT, PRIMARY KEY (c1))ENGINE=NDB"); - - if (master.doQuery(sqlStm.c_str())) + if (master.doQuery("CREATE TABLE rep1 (c1 MEDIUMINT NOT NULL AUTO_INCREMENT," + " c2 FLOAT, c3 CHAR(5), c4 bit(8), c5 FLOAT, c6 INT," + " c7 INT, PRIMARY KEY (c1))ENGINE=NDB")) { return NDBT_FAILED; } ctx->setProperty("TABLES",table.c_str()); HugoTransactions hugoTrans(*ctx->getTab()); - if (hugoTrans.loadTable(GETNDB(step), t1_records, 1, true, 0) != 0) + if (hugoTrans.loadTable(GETNDB(step), t1_records, 1, true, 0) != NDBT_OK) { g_err << "Create Table -> Load failed!" << endl; return NDBT_FAILED; } - if(verifySlaveLoad(&table)!= 0) + if(verifySlaveLoad(&table)!= NDBT_OK) { g_err << "Create Table -> Failed on verify slave load!" << endl; @@ -334,19 +400,15 @@ stressNDB_rep1(NDBT_Context* ctx, NDBT_Step* step) int stressSQL_rep1(NDBT_Context* ctx, NDBT_Step* step) { - //Create an SQL Object - DbUtil master(db.c_str(),""); + BaseString sqlStm; + + DbUtil master("TEST_DB",""); int loops = ctx->getNumLoops(); uint record = 0; //Login to Master if (!master.connect()) { - return NDBT_FAILED; - } - - if(master.selectDb()) - { ctx->stopTest(); return NDBT_FAILED; } @@ -367,101 +429,36 @@ stressSQL_rep1(NDBT_Context* ctx, NDBT_Step* step) int verifySlave_rep1(NDBT_Context* ctx, NDBT_Step* step) { - if(syncSlaveWithMaster() != 0) - { - g_err << "Verify Slave rep1 -> Syncing with slave failed" - << endl; - return NDBT_FAILED; - } - //Create SQL Objects - DbUtil master(db.c_str(),""); - DbUtil slave(db.c_str(),".slave"); - MYSQL_RES *resource; - MYSQL_ROW row; - float masterSum; - float slaveSum; - - sqlStm.assign("SELECT SUM(c3) FROM rep1"); + BaseString sql; + BaseString db; - //Login to Master - if (!master.connect()) - { - return NDBT_FAILED; - } - - if(master.selectDb()) - { - return NDBT_FAILED; - } - - if(master.doQuery(sqlStm.c_str())) - { - return NDBT_FAILED; - } - resource = mysql_use_result(master.getMysql()); - row = mysql_fetch_row(resource); - masterSum = atoi(row[0]); - mysql_free_result(resource); - master.databaseLogout(); - - //Login to slave - if (!slave.connect()) - { - return NDBT_FAILED; - } - - if(slave.selectDb() != 0) - { - return NDBT_FAILED; - } + sql.assign("SELECT SUM(c3) FROM rep1"); + db.assign("TEST_DB"); - if((slave.doQuery(sqlStm.c_str())) != 0) - { - return NDBT_FAILED; - } - resource = mysql_use_result(slave.getMysql()); - row = mysql_fetch_row(resource); - slaveSum = atoi(row[0]); - mysql_free_result(resource); - - if(masterSum != slaveSum) - { - g_err << "VerifySlave -> masterSum != slaveSum..." << endl; + if (verifySlave(sql,db) != NDBT_OK) return NDBT_FAILED; - } return NDBT_OK; } -int -dropTEST_DB(NDBT_Context* ctx, NDBT_Step* step) -{ - //Create an SQL Object - DbUtil master(db.c_str(),""); +/* TOOLS LIST - //Login to Master - if (!master.connect()) - { - return NDBT_FAILED; - } + syncSlaveWithMaster() + {ensures slave is at same epoch as master} - if(master.selectDb() != 0) - { - return NDBT_FAILED; - } + verifySlaveLoad(BaseString *table) + {ensures slave table has same record count as master} - if(master.doQuery("DROP DATABASE TEST_DB") != 0) - { - return NDBT_FAILED; - } + createTEST_DB() + {Creates TEST_DB database on master} - if(syncSlaveWithMaster() != 0) - { - g_err << "Drop DB -> Syncing with slave failed" - << endl; - return NDBT_FAILED; - } - return NDBT_OK; -} + dropTEST_DB() + {Drops TEST_DB database on master} + + verifySlave(BaseString& sql, BaseSting& db) + {The SQL statement must sum a column and will verify + that the sum of the column is equal on master & slave} +*/ + NDBT_TESTSUITE(NdbRepStress); TESTCASE("PHASE_I_Stress","Basic Replication Stressing") @@ -481,7 +478,3 @@ int main(int argc, const char** argv){ return NdbRepStress.execute(argc, argv); } -template class Vector<HugoOperations *>; -template class Vector<NdbEventOperation *>; -template class Vector<NdbRecAttr*>; -template class Vector<Vector<NdbRecAttr*> >; diff --git a/storage/ndb/test/src/DbUtil.cpp b/storage/ndb/test/src/DbUtil.cpp index f6c2aee4df5..1df4f8f745e 100755 --- a/storage/ndb/test/src/DbUtil.cpp +++ b/storage/ndb/test/src/DbUtil.cpp @@ -99,6 +99,7 @@ DbUtil::databaseLogin(const char* system, const char* usr, mysql_get_server_info(mysql), (unsigned long) mysql_get_server_version(mysql)); #endif + this->selectDb(); } /* Database Connect */ @@ -132,7 +133,7 @@ DbUtil::connect() mysql_close(mysql); return DBU_FAILED; } - + this->selectDb(); m_connected = true; return DBU_OK; } @@ -243,15 +244,32 @@ DbUtil::selectDb(const char * m_db) } } +int +DbUtil::createDb(BaseString& m_db) +{ + BaseString stm; + { + if(mysql_select_db(this->getMysql(), m_db.c_str()) == DBU_OK) + { + stm.assfmt("DROP DATABASE %s", m_db.c_str()); + if(this->doQuery(m_db.c_str()) == DBU_FAILED) + return DBU_FAILED; + } + stm.assfmt("CREATE DATABASE %s", m_db.c_str()); + if(this->doQuery(m_db.c_str()) == DBU_FAILED) + return DBU_FAILED; + return DBU_OK; + } +} /* Run Simple Queries */ int -DbUtil::doQuery(char * stm) +DbUtil::doQuery(BaseString& str) { - if(mysql_query(this->getMysql(), stm)) + if(mysql_query(this->getMysql(), str.c_str())) { - this->printError(stm); + this->printError(str.c_str()); return DBU_FAILED; } return DBU_OK; |