testData.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #ifndef TESTDATA_H
  14. #define TESTDATA_H
  15. /***************************************************************
  16. * I N C L U D E D   F I L E S                                  *
  17. ***************************************************************/
  18. #include <NdbTick.h>
  19. #include <NdbThread.h>
  20. #include <NDBT_Stats.hpp>
  21. #include <random.h>
  22. #include "testDefinitions.h"
  23. /***************************************************************
  24. * M A C R O S                                                  *
  25. ***************************************************************/
  26. /***************************************************************/
  27. /* C O N S T A N T S                                           */
  28. /***************************************************************/
  29. #define NUM_TRANSACTION_TYPES    5
  30. #define SESSION_LIST_LENGTH   1000
  31. /***************************************************************
  32. * D A T A   S T R U C T U R E S                                *
  33. ***************************************************************/
  34. typedef struct {
  35.   SubscriberNumber subscriberNumber;
  36.   ServerId         serverId;
  37. } SessionElement;
  38. typedef struct {
  39.   SessionElement list[SESSION_LIST_LENGTH];
  40.   unsigned int readIndex;
  41.   unsigned int writeIndex;
  42.   unsigned int numberInList;
  43. } SessionList;  
  44. typedef struct {
  45.   unsigned int  count;
  46.   unsigned int  branchExecuted;
  47.   unsigned int  rollbackExecuted;
  48.   /**
  49.    * Latency measures
  50.    */
  51.   NDB_TICKS     startTime;
  52.   NDBT_Stats    latency;
  53.   unsigned int  latencyCounter;
  54.   inline void startLatency(){
  55.     if((latencyCounter & 127) == 127)
  56.       startTime = NdbTick_CurrentMillisecond();
  57.   }
  58.   inline void stopLatency(){
  59.     if((latencyCounter & 127) == 127){
  60.       const NDB_TICKS tmp = NdbTick_CurrentMillisecond() - startTime;
  61.       latency.addObservation(tmp);
  62.     }
  63.     latencyCounter++;
  64.   }
  65. } TransactionDefinition;
  66. typedef struct {
  67.   RandomSequence transactionSequence;
  68.   RandomSequence rollbackSequenceT4;
  69.   RandomSequence rollbackSequenceT5;
  70.   
  71.   TransactionDefinition transactions[NUM_TRANSACTION_TYPES];
  72.   unsigned int totalTransactions;
  73.     
  74.   double       outerLoopTime;
  75.   double       outerTps;
  76.   
  77.   SessionList  activeSessions;
  78.   
  79. } GeneratorStatistics;
  80. typedef enum{
  81.   Runnable,
  82.   Running
  83. } RunState ;
  84. typedef struct {
  85.   SubscriberNumber    number;
  86.   SubscriberSuffix    suffix;
  87.   SubscriberName      name;
  88.   Location            location;
  89.   ChangedBy           changed_by;
  90.   ChangedTime         changed_time;
  91.   ServerId            server_id;
  92.   ServerBit           server_bit;
  93.   SessionDetails      session_details;
  94.   GroupId             group_id;
  95.   ActiveSessions      sessions;
  96.   Permission          permission;
  97.   unsigned int        do_rollback;
  98.   unsigned int        branchExecuted;
  99.   unsigned int        sessionElement;
  100. } TransactionData ;
  101. typedef struct {
  102.   struct NdbThread* pThread;
  103.   unsigned long randomSeed;
  104.   unsigned long changedTime;
  105.   unsigned int warmUpSeconds;
  106.   unsigned int testSeconds;
  107.   unsigned int coolDownSeconds;
  108.   GeneratorStatistics generator;
  109.   
  110.   /**
  111.    * For async execution
  112.    */
  113.   RunState          runState;
  114.   double            startTime;
  115.   TransactionData   transactionData;
  116.   struct Ndb      * pNDB;
  117. } ThreadData;
  118. /***************************************************************
  119.  * P U B L I C    F U N C T I O N S                             *
  120.  ***************************************************************/
  121. /***************************************************************
  122.  * E X T E R N A L   D A T A                                    *
  123.  ***************************************************************/
  124. #endif /* TESTDATA_H */