With the HammerDB command line its very easy to script the schema build and automated test so that if you don’t have a GUI or don’t want to use one you can still access all of the HammerDB functionality. The following example is with MySQL on Linux but can easily apply to any database you choose.
Firstly if you don’t have MySQL installed copy the client library to your home directory
$ ls -l libmysqlclient.so.20 -rw-r--r-- 1 mysql mysql 4237408 Apr 23 09:21 libmysqlclient.so.20
and add it to your path
$ export LD_LIBRARY_PATH=/home/intel:$LD_LIBRARY_PATH
The CLI command librarycheck will verify if the library can be loaded.
$ ./hammerdbcli HammerDB CLI v3.1 Copyright (C) 2003-2018 Steve Shaw Type "help" for a list of commands The xml is well-formed, applying configuration hammerdb>librarycheck ... Checking database library for MySQL Success ... loaded library mysqltcl for MySQL ...
Using a text editor create a script with your configuration, such as follows. Note that in this example the build is going to be run on the database server itself.
$ more schemabuild.tcl #!/bin/tclsh puts "SETTING CONFIGURATION" dbset db mysql diset connection mysql_host 127.0.0.1 diset connection mysql_port 3306 diset tpcc mysql_count_ware 800 diset tpcc mysql_partition true diset tpcc mysql_num_vu 64 diset tpcc mysql_storage_engine innodb print dict buildschema
Then run the hammerdb CLI and type source schemabuild.tcl – hammerdb will then run the build you specified.
$ ./hammerdbcli HammerDB CLI v3.1 Copyright (C) 2003-2018 Steve Shaw Type "help" for a list of commands The xml is well-formed, applying configuration hammerdb>source schemabuild.tcl
To run the test you can configure a script to automate a sequence of tests just like the autopilot feature in the GUI. This example runs tests from 1 right through to 104 virtual users. Note in this case the driver is now being run from a client system (remember to install the client library and check that it loads here as well) and logtotemp is set so that all of the output is captured to a file.
$ more mysqlrun.tcl #!/bin/tclsh proc runtimer { seconds } { set x 0 set timerstop 0 while {!$timerstop} { incr x after 1000 if { ![ expr {$x % 60} ] } { set y [ expr $x / 60 ] puts "Timer: $y minutes elapsed" } update if { [ vucomplete ] || $x eq $seconds } { set timerstop 1 } } return } puts "SETTING CONFIGURATION" dbset db mysql diset connection mysql_host 192.168.1.1 diset connection mysql_port 3306 diset tpcc mysql_driver timed diset tpcc my_rampup 2 diset tpcc my_duration 5 vuset logtotemp 1 loadscript puts "SEQUENCE STARTED" foreach z { 1 2 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 } { puts "$z VU TEST" vuset vu $z vucreate vurun runtimer 600 vudestroy after 5000 } puts "TEST SEQUENCE COMPLETE"
Then as above run the script, it will now run the script unattended executing the sequence of tests.
$ ./hammerdbcli HammerDB CLI v3.1 Copyright (C) 2003-2018 Steve Shaw Type "help" for a list of commands The xml is well-formed, applying configuration hammerdb>source mysqlrun.tcl
That’s all you need to build a schema and run a sequence of tests with HammerDB without the GUI.