Module: BenchmarkDriver::DefaultJobParser

Defined in:
lib/benchmark_driver/default_job_parser.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.for(klass:, metrics:) ⇒ Object

Build default JobParser for given job klass



4
5
6
7
8
9
10
11
12
# File 'lib/benchmark_driver/default_job_parser.rb', line 4

def self.for(klass:, metrics:)
  Module.new.tap do |parser|
    class << parser
      include DefaultJobParser
    end
    parser.define_singleton_method(:job_class) { klass }
    parser.define_singleton_method(:job_metrics) { metrics }
  end
end

Instance Method Details

#parse(contexts: [], prelude: nil, benchmark:, teardown: nil, loop_count: nil, required_ruby_version: nil) ⇒ Array<BenchmarkDriver::Default::Job>

This method is dynamically called by ‘BenchmarkDriver::JobParser.parse`

Parameters:

  • prelude (String) (defaults to: nil)
  • benchmark (String, Array<String,Hash{ Symbol => String }>, Hash{ Symbol => String })
  • teardown (String) (defaults to: nil)
  • loop_count (Integer) (defaults to: nil)
  • required_ruby_version (String) (defaults to: nil)

Returns:

  • (Array<BenchmarkDriver::Default::Job>)


21
22
23
24
25
26
27
28
29
30
# File 'lib/benchmark_driver/default_job_parser.rb', line 21

def parse(contexts: [], prelude: nil, benchmark:, teardown: nil, loop_count: nil, required_ruby_version: nil)
  parse_benchmark(benchmark).each do |job|
    job.contexts = parse_contexts(contexts)
    job.metrics = job_metrics
    job.prelude.prepend("#{prelude}\n") if prelude
    job.teardown.prepend("#{teardown}\n") if teardown
    job.loop_count ||= loop_count
    job.required_ruby_version ||= required_ruby_version
  end.each(&:freeze)
end