summaryrefslogtreecommitdiff
path: root/storage/ndb/test/ndbapi/bank/Bank.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/ndb/test/ndbapi/bank/Bank.hpp')
-rw-r--r--storage/ndb/test/ndbapi/bank/Bank.hpp145
1 files changed, 145 insertions, 0 deletions
diff --git a/storage/ndb/test/ndbapi/bank/Bank.hpp b/storage/ndb/test/ndbapi/bank/Bank.hpp
new file mode 100644
index 00000000000..d9dd7b25944
--- /dev/null
+++ b/storage/ndb/test/ndbapi/bank/Bank.hpp
@@ -0,0 +1,145 @@
+/* Copyright (C) 2003 MySQL AB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+#ifndef BANK_HPP
+#define BANK_HPP
+
+#include <NdbOut.hpp>
+#include <NdbApi.hpp>
+#include <NDBT.hpp>
+#include <NdbTick.h>
+#include <random.h>
+
+
+class Bank {
+public:
+
+ Bank(Ndb_cluster_connection&);
+
+ int createAndLoadBank(bool overWrite, int num_accounts=10);
+ int dropBank();
+
+ int performTransactions(int maxSleepBetweenTrans = 20, int yield=0);
+ int performMakeGLs(int yield=0);
+ int performValidateAllGLs();
+ int performSumAccounts(int maxSleepBetweenSums = 2000, int yield=0);
+ int performIncreaseTime(int maxSleepBetweenDays = 30, int yield=0);
+private:
+
+ int init();
+
+ enum TransactionTypes{
+ WithDrawal = 2000,
+ Deposit = 3000
+ };
+
+ static const int NOT_ENOUGH_FUNDS = 1000;
+ static const int VERIFICATION_FAILED = 1001;
+
+ int performTransaction();
+ int performTransaction(int fromAccountId,
+ int toAccountId,
+ int amount );
+ int performTransactionImpl1(int fromAccountId,
+ int toAccountId,
+ int amount );
+
+ int performValidateGLs(Uint64 age = 20);
+ int performValidateGL(Uint64 GLTime);
+ int performValidatePurged();
+
+ int performMakeGL(int time);
+ int performMakeGLForAccountType(NdbConnection* pTrans,
+ Uint64 time,
+ Uint32 accountTypeId);
+ int sumTransactionsForGL(const Uint64 time,
+ const Uint32 accountType,
+ Uint32& balance,
+ Uint32& withdrawalCount,
+ Uint32& withdrawalSum,
+ Uint32& depositSum,
+ Uint32& depositCount,
+ Uint32& transactionsCount,
+ NdbConnection* pTrans);
+ int getBalanceForAccountType(const Uint32 accountType,
+ Uint32& balance);
+ int getBalanceForGL(const Uint64 glTime,
+ const Uint32 accountType,
+ Uint32 &balance);
+
+ int checkNoTransactionsOlderThan(const Uint32 accountType,
+ const Uint64 oldest);
+ int getOldestPurgedGL(const Uint32 accountType,
+ Uint64 &oldest);
+ int getOldestNotPurgedGL(Uint64 &oldest,
+ Uint32 &accountTypeId,
+ bool &found);
+ int findLastGL(Uint64 &lastTime);
+ int purgeOldGLTransactions(Uint64 currTime, Uint32 age);
+
+ int purgeTransactions(const Uint64 glTime,
+ const Uint32 accountTypeId);
+ int findTransactionsToPurge(const Uint64 glTime,
+ const Uint32 accountType,
+ NdbConnection* pTrans);
+
+
+ int getSumAccounts(Uint32 &sumAccounts,
+ Uint32 &numAccounts);
+ int getNumAccounts();
+ int getNumAccountTypes();
+ int getMaxAmount();
+
+
+ enum SystemValueId {
+ LastTransactionId = 0,
+ CurrentTime = 1
+ };
+
+
+ int readSystemValue(SystemValueId sysValId, Uint64 & value);
+ int increaseSystemValue(SystemValueId sysValId, Uint64 &value);
+ int increaseSystemValue2(SystemValueId sysValId, Uint64 &value);
+ int writeSystemValue(SystemValueId sysValId, Uint64 value);
+ int getNextTransactionId(Uint64 &value);
+ int incCurrTime(Uint64 &value);
+ int getCurrTime(Uint64 &time);
+
+ int prepareReadSystemValueOp(NdbConnection*, SystemValueId sysValId, Uint64 &time);
+ int prepareGetCurrTimeOp(NdbConnection*, Uint64 &time);
+
+ int createTables();
+ int createTable(const char* tabName);
+
+ int dropTables();
+ int dropTable(const char* tabName);
+
+ int clearTables();
+ int clearTable(const char* tabName);
+
+ int loadGl();
+ int loadAccountType();
+ int loadAccount (int numAccounts);
+ int loadSystemValues();
+
+private:
+
+ Ndb m_ndb;
+ int m_maxAccount;
+ bool m_initialized;
+};
+
+#endif