- /* 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 TESTDATA_H
- #define TESTDATA_H
- /***************************************************************
- * I N C L U D E D F I L E S *
- ***************************************************************/
- #include <NdbTick.h>
- #include <NdbThread.h>
- #include <NDBT_Stats.hpp>
- #include <random.h>
- #include "testDefinitions.h"
- /***************************************************************
- * M A C R O S *
- ***************************************************************/
- /***************************************************************/
- /* C O N S T A N T S */
- /***************************************************************/
- #define NUM_TRANSACTION_TYPES 5
- #define SESSION_LIST_LENGTH 1000
- /***************************************************************
- * D A T A S T R U C T U R E S *
- ***************************************************************/
- typedef struct {
- SubscriberNumber subscriberNumber;
- ServerId serverId;
- } SessionElement;
- typedef struct {
- SessionElement list[SESSION_LIST_LENGTH];
- unsigned int readIndex;
- unsigned int writeIndex;
- unsigned int numberInList;
- } SessionList;
- typedef struct {
- unsigned int count;
- unsigned int branchExecuted;
- unsigned int rollbackExecuted;
- /**
- * Latency measures
- */
- NDB_TICKS startTime;
- NDBT_Stats latency;
- unsigned int latencyCounter;
- inline void startLatency(){
- if((latencyCounter & 127) == 127)
- startTime = NdbTick_CurrentMillisecond();
- }
- inline void stopLatency(){
- if((latencyCounter & 127) == 127){
- const NDB_TICKS tmp = NdbTick_CurrentMillisecond() - startTime;
- latency.addObservation(tmp);
- }
- latencyCounter++;
- }
- } TransactionDefinition;
- typedef struct {
- RandomSequence transactionSequence;
- RandomSequence rollbackSequenceT4;
- RandomSequence rollbackSequenceT5;
- TransactionDefinition transactions[NUM_TRANSACTION_TYPES];
- unsigned int totalTransactions;
- double outerLoopTime;
- double outerTps;
- SessionList activeSessions;
- } GeneratorStatistics;
- typedef enum{
- Runnable,
- Running
- } RunState ;
- typedef struct {
- SubscriberNumber number;
- SubscriberSuffix suffix;
- SubscriberName name;
- Location location;
- ChangedBy changed_by;
- ChangedTime changed_time;
- ServerId server_id;
- ServerBit server_bit;
- SessionDetails session_details;
- GroupId group_id;
- ActiveSessions sessions;
- Permission permission;
- unsigned int do_rollback;
- unsigned int branchExecuted;
- unsigned int sessionElement;
- } TransactionData ;
- typedef struct {
- struct NdbThread* pThread;
- unsigned long randomSeed;
- unsigned long changedTime;
- unsigned int warmUpSeconds;
- unsigned int testSeconds;
- unsigned int coolDownSeconds;
- GeneratorStatistics generator;
- /**
- * For async execution
- */
- RunState runState;
- double startTime;
- TransactionData transactionData;
- struct Ndb * pNDB;
- } ThreadData;
- /***************************************************************
- * P U B L I C F U N C T I O N S *
- ***************************************************************/
- /***************************************************************
- * E X T E R N A L D A T A *
- ***************************************************************/
- #endif /* TESTDATA_H */