Added back in basic benchmark support. To run:
ruby benchmark/benchmark.rb --adapter mysql --num 1000 ruby benchmark/benchmark.rb --adapter mysql --num 1000 --to-csv /tmp/results.csv ruby benchmark/benchmark.rb --adapter mysql --num 1000 --to-html /tmp/results.html
This commit is contained in:
parent
369a5e0e64
commit
5c287f1042
18 changed files with 509 additions and 22 deletions
103
benchmarks/lib/cli_parser.rb
Normal file
103
benchmarks/lib/cli_parser.rb
Normal file
|
@ -0,0 +1,103 @@
|
|||
require 'optparse'
|
||||
require 'ostruct'
|
||||
|
||||
#
|
||||
# == PARAMETERS
|
||||
# * a - database adapter. ie: mysql, postgresql, oracle, etc.
|
||||
# * n - number of objects to test with. ie: 1, 100, 1000, etc.
|
||||
# * t - the table types to test. ie: myisam, innodb, memory, temporary, etc.
|
||||
#
|
||||
module BenchmarkOptionParser
|
||||
BANNER = "Usage: ruby #{$0} [options]\nSee ruby #{$0} -h for more options."
|
||||
|
||||
def self.print_banner
|
||||
puts BANNER
|
||||
end
|
||||
|
||||
def self.print_banner!
|
||||
print_banner
|
||||
exit
|
||||
end
|
||||
|
||||
def self.print_options( options )
|
||||
puts "Benchmarking the following options:"
|
||||
puts " Database adapter: #{options.adapter}"
|
||||
puts " Number of objects: #{options.number_of_objects}"
|
||||
puts " Table types:"
|
||||
print_valid_table_types( options, :prefix=>" " )
|
||||
end
|
||||
|
||||
# TODO IMPLEMENT THIS
|
||||
def self.print_valid_table_types( options, hsh={:prefix=>''} )
|
||||
if options.table_types.keys.size > 0
|
||||
options.table_types.keys.sort.each{ |type| puts hsh[:prefix].to_s + type.to_s }
|
||||
else
|
||||
puts 'No table types defined.'
|
||||
end
|
||||
end
|
||||
|
||||
def self.parse( args )
|
||||
options = OpenStruct.new(
|
||||
:table_types => {},
|
||||
:delete_on_finish => true,
|
||||
:number_of_objects => [],
|
||||
:outputs => [] )
|
||||
|
||||
opts = OptionParser.new do |opts|
|
||||
opts.banner = BANNER
|
||||
|
||||
# parse the database adapter
|
||||
opts.on( "a", "--adapter [String]",
|
||||
"The database adapter to use. IE: mysql, postgresql, oracle" ) do |arg|
|
||||
options.adapter = arg
|
||||
end
|
||||
|
||||
# parse do_not_delete flag
|
||||
opts.on( "d", "--do-not-delete",
|
||||
"By default all records in the benchmark tables will be deleted at the end of the benchmark. " +
|
||||
"This flag indicates not to delete the benchmark data." ) do |arg|
|
||||
options.delete_on_finish = false
|
||||
end
|
||||
|
||||
# parse the number of row objects to test
|
||||
opts.on( "n", "--num [Integer]",
|
||||
"The number of objects to benchmark." ) do |arg|
|
||||
options.number_of_objects << arg.to_i
|
||||
end
|
||||
|
||||
# parse the table types to test
|
||||
opts.on( "t", "--table-type [String]",
|
||||
"The table type to test. This can be used multiple times." ) do |arg|
|
||||
if arg =~ /^all$/
|
||||
options.table_types['all'] = options.benchmark_all_types = true
|
||||
else
|
||||
options.table_types[arg] = true
|
||||
end
|
||||
end
|
||||
|
||||
# print results in CSV format
|
||||
opts.on( "--to-csv [String]", "Print results in a CSV file format" ) do |filename|
|
||||
options.outputs << OpenStruct.new( :format=>'csv', :filename=>filename)
|
||||
end
|
||||
|
||||
# print results in HTML format
|
||||
opts.on( "--to-html [String]", "Print results in HTML format" ) do |filename|
|
||||
options.outputs << OpenStruct.new( :format=>'html', :filename=>filename )
|
||||
end
|
||||
end #end opt.parse!
|
||||
|
||||
begin
|
||||
opts.parse!( args )
|
||||
if options.table_types.size == 0
|
||||
options.table_types['all'] = options.benchmark_all_types = true
|
||||
end
|
||||
rescue Exception => ex
|
||||
print_banner!
|
||||
end
|
||||
|
||||
print_options( options )
|
||||
|
||||
options
|
||||
end
|
||||
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue