lib/rocket_job/batch/performance.rb in rocketjob-5.1.1 vs lib/rocket_job/batch/performance.rb in rocketjob-5.2.0.beta1

- old
+ new

@@ -1,25 +1,25 @@ -require 'optparse' -require 'csv' -require 'yaml' +require "optparse" +require "csv" +require "yaml" module RocketJob module Batch class Performance attr_accessor :count, :servers, :workers, :version, :ruby, :environment, :mongo_config, :compress, :encrypt, :slice_size def initialize @count = 10_000_000 - @environment = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development' - @mongo_config = 'config/mongoid.yml' + @environment = ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development" + @mongo_config = "config/mongoid.yml" @compress = false @encrypt = false @slice_size = 1000 end def run_test_case(count = self.count) servers = RocketJob::Server.count - raise 'Please start workers before starting the performance test' if servers == 0 + raise "Please start workers before starting the performance test" if servers.zero? count_running_workers puts "Loading job with #{count} records/lines" args = {log_level: :warn, slice_size: slice_size} @@ -31,54 +31,52 @@ job.upload do |writer| count.times { |i| writer << i } end job.save! - puts 'Waiting for job to complete' - while (!job.reload.completed?) - sleep 3 - end + puts "Waiting for job to complete" + sleep 3 until job.reload.completed? duration = job.completed_at - job.started_at {count: count, duration: duration, records_per_second: (count.to_f / duration).round(3), workers: workers, servers: servers, compress: compress, encrypt: encrypt} end # Export the Results hash to a CSV file def export_results(results) ruby = defined?(JRuby) ? "jruby_#{JRUBY_VERSION}" : "ruby_#{RUBY_VERSION}" version = RocketJob::VERSION - CSV.open("job_results_#{ruby}_v#{version}.csv", 'wb') do |csv| + CSV.open("job_results_#{ruby}_v#{version}.csv", "wb") do |csv| csv << results.first.keys results.each { |result| csv << result.values } end end # Parse command line options def parse(argv) - parser = OptionParser.new do |o| - o.on('-c', '--count COUNT', 'Count of records to enqueue') do |arg| + parser = OptionParser.new do |o| + o.on("-c", "--count COUNT", "Count of records to enqueue") do |arg| self.count = arg.to_i end - o.on('-m', '--mongo MONGO_CONFIG_FILE_NAME', 'Location of mongoid.yml config file') do |arg| + o.on("-m", "--mongo MONGO_CONFIG_FILE_NAME", "Location of mongoid.yml config file") do |arg| self.mongo_config = arg end - o.on('-e', '--environment ENVIRONMENT', 'The environment to run the app on (Default: RAILS_ENV || RACK_ENV || development)') do |arg| + o.on("-e", "--environment ENVIRONMENT", "The environment to run the app on (Default: RAILS_ENV || RACK_ENV || development)") do |arg| self.environment = arg end - o.on('-z', '--compress', 'Turn on compression') do |arg| + o.on("-z", "--compress", "Turn on compression") do self.compress = true end - o.on('-E', '--encrypt', 'Turn on encryption') do |arg| + o.on("-E", "--encrypt", "Turn on encryption") do self.encrypt = true end - o.on('-s', '--slice_size COUNT', 'Slice size') do |arg| + o.on("-s", "--slice_size COUNT", "Slice size") do self.slice_size = arg.to_i end end - parser.banner = 'rocketjob_batch_perf <options>' - parser.on_tail '-h', '--help', 'Show help' do + parser.banner = "rocketjob_batch_perf <options>" + parser.on_tail "-h", "--help", "Show help" do puts parser exit 1 end parser.parse! argv end @@ -86,14 +84,14 @@ def count_running_workers self.servers = 0 self.workers = 0 RocketJob::Server.running.each do |server| next if server.zombie? + self.servers += 1 self.workers += server.heartbeat.workers end puts "Running: #{workers} workers, distributed across #{servers} servers" end - end end end