7.Benchmark SQL 数据库测试工具代码——TPCC主程序
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50357663
benchmarkSQL的主程序是jTPCC类。
继承了jTPCCConfig中的参数。
设置启动多少个会话进行测试。
记录交易的次数等。
1. MAIN函数实例化jTPCC类。
2. getProp获取属性值。
3. jTPCC构造函数。实现主要逻辑。
先加载配置文件。
输出相关属性值,包括驱动,用户名,数据仓库数量,测试中断数量等。
其中运行时间iRunMins和iRunTxnsPerTerminal只能一个设置为非零值。
此外还有每分钟交易的上限。各个事务的比例分配。
调用updateStatusLine()函数更新状态。
注册数据库驱动。
成功注册驱动后,
根据运行时间还是 每个终端每分钟运行的交易数量来执行测试。
运行时间的变量:executionTimeMillis
每个终端执行交易数量:transactionsPerTerminal
指定newOrderCounter = 0
打印事务比例。
然后:
根据设置启动的会话数量numTerminals,进行启动。
会话数量不能超过warehouse数量乘以10.
将启动的会话记录到usedTerminals二维数组中
int[][] usedTerminals = newint[numWarehouses][10];
设置会话名字,然后实例化jTPCCTerminal (该类是会话具体实现类)。
用数组terminals[]进行保存会话实例。
循环启动设置的会话数量。
接着:
设置变量sessionEndTargetTime,是设置的执行时间,如果超过时间,需要停止测试。
最后启动所有的会话(该类支持多线程并发)
4. signalTerminalsRequestEnd如果变量signalTerminalsRequestEndSent 为FALSE。
然后调用该函数时候入参为TRUE,则调用会话类函数stopRunningWhenPossible。
5. signalTerminalEnded将保持会话类的数组terminals[]每项设置为NULL,同时记录newOrderCounter数量。退出。
每个会话最后结束都会调用该函数,到最后一个会话结束后记录会话结束时间,同时重置变量sessionEndTargetTime,然后打印输出。
调用endReport函数来输出结果。
6. signalTerminalEndedTransaction每个事务结束会调用该函数,记录事务数量。
同时判断是否超过执行时间,如果超过则调用函数signalTerminalsRequestEnd函数来请求停止。
然后调用updateStatusLine函数来更新输出。
7. endReport输出运行结果。
8. printMessage输出信息。
9. errorMessage输出错误信息。
10. exit退出系统。
11. randomNumber随机一个数字。
12. getCurrentTime得到日期的字符串。
13. getFileNameSuffix返回时间格式的字符串。
14. updateStatusLine实时更新测试的状态信息。
fastNewOrderCounter是tpmC。
transactionCount是总共的值。
此外还输出最近5秒换算的平均tpmC。
输出内存相关信息。输出后,情空缓存。