benchmark_driver 0.10.10 → 0.10.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d2a58840726187503f4a8cd044cb9f0729d815ac2bc9ca3c12d43088742fff28
4
- data.tar.gz: 4abc5a4af8b071124e33fde1fa5cc169d5ce47221c6ee8cd2d74698270632155
3
+ metadata.gz: 24436275666595b27dd25877162c3beec019cdeff0f299b492e3560290ee2bef
4
+ data.tar.gz: 91de36833aed9e78e16a5d7f345515e1118941397a82491b7de2c37f4e3f332d
5
5
  SHA512:
6
- metadata.gz: 4a56f4da14d42fabf113863b7bc7f76f5e2c7135548778479814ed38b65c63d96db1bd6f5119708e708c93b15e18bb77b81488793f31495ac15ee9c4899487c3
7
- data.tar.gz: 154c05ec72ff9b3c7a6e5a444fab55d88feba526c5291017911208a3d61d1dd455c494bf23ad3ed03fac88b6fd85b8d8fd9dc49d51d8835a1f73ecb01f987bb6
6
+ metadata.gz: 4f7f721f8971d4cf605489a0bbc7ceeb50db1932a1f12bd31adc92076eb6134daacbad8e304b5644d8af59ffa8980c965b5c8c148c6e9b15c84c26b81e62341f
7
+ data.tar.gz: 92d1145452989b637e8042e0e20f3a9771f0ad238fa3226cfaba5b832d4b2c8498598e356b24d085dce07e43bb0d23662a70d311ef38a9df43ba301562acaa92
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # v0.10.11
2
+
3
+ - Add `:required_ruby_option` parameter in YAML format
4
+
1
5
  # v0.10.10
2
6
 
3
7
  - Add `BenchmarkDriver::Config::Executable#description` method to return `ruby -v` result for output plugins.
@@ -42,6 +42,11 @@ module BenchmarkDriver
42
42
  def description
43
43
  @cache[:description] ||= IO.popen([*command, '-v'], &:read).rstrip
44
44
  end
45
+
46
+ # @return [String] - Return RUBY_VERSION
47
+ def version
48
+ @cache[:version] ||= IO.popen([*command, '-e', 'print RUBY_VERSION'], &:read)
49
+ end
45
50
  end
46
51
  Config.defaults[:executables] = [
47
52
  BenchmarkDriver::Config::Executable.new(name: RUBY_VERSION, command: [RbConfig.ruby]),
@@ -7,6 +7,21 @@ module BenchmarkDriver
7
7
  :prelude, # @param [String,nil] prelude (optional)
8
8
  :teardown, # @param [String,nil] after (optional)
9
9
  :loop_count, # @param [Integer,nil] loop_count (optional)
10
+ :required_ruby_version, # @param [String,nil] required_ruby_version (optional)
10
11
  defaults: { prelude: '', teardown: '' },
11
- )
12
+ ) do
13
+ def runnable_execs(executables)
14
+ if required_ruby_version
15
+ executables.select do |executable|
16
+ Gem::Version.new(executable.version) >= Gem::Version.new(required_ruby_version)
17
+ end.tap do |result|
18
+ if result.empty?
19
+ raise "No Ruby executables conforming required_ruby_version (#{required_ruby_version}) are specified"
20
+ end
21
+ end
22
+ else
23
+ executables
24
+ end
25
+ end
26
+ end
12
27
  end
@@ -17,12 +17,14 @@ module BenchmarkDriver
17
17
  # @param [String,Array<String,Hash{ Symbol => String }>,Hash{ Symbol => String }] benchmark
18
18
  # @param [String] teardown
19
19
  # @param [Integer] loop_count
20
+ # @param [String] required_ruby_version
20
21
  # @return [Array<BenchmarkDriver::Default::Job>]
21
- def parse(prelude: nil, benchmark:, teardown: nil, loop_count: nil)
22
+ def parse(prelude: nil, benchmark:, teardown: nil, loop_count: nil, required_ruby_version: nil)
22
23
  parse_benchmark(benchmark).each do |job|
23
24
  job.prelude.prepend("#{prelude}\n") if prelude
24
25
  job.teardown.prepend("#{teardown}\n") if teardown
25
26
  job.loop_count ||= loop_count
27
+ job.required_ruby_version ||= required_ruby_version
26
28
  end.each(&:freeze)
27
29
  end
28
30
 
@@ -56,9 +58,9 @@ module BenchmarkDriver
56
58
  end
57
59
  end
58
60
 
59
- def parse_job_hash(name: nil, prelude: '', script:, teardown: '', loop_count: nil)
61
+ def parse_job_hash(name: nil, prelude: '', script:, teardown: '', loop_count: nil, required_ruby_version: nil)
60
62
  name ||= script
61
- job_class.new(name: name, prelude: prelude, script: script, teardown: teardown, loop_count: loop_count)
63
+ job_class.new(name: name, prelude: prelude, script: script, teardown: teardown, loop_count: loop_count, required_ruby_version: required_ruby_version)
62
64
  end
63
65
 
64
66
  def job_class
@@ -32,7 +32,7 @@ class BenchmarkDriver::Runner::Ips
32
32
  next job if job.loop_count # skip warmup if loop_count is set
33
33
 
34
34
  @output.with_job(job) do
35
- result = run_warmup(job, exec: @config.executables.first)
35
+ result = run_warmup(job, exec: job.runnable_execs(@config.executables).first)
36
36
  metrics = build_metrics(result)
37
37
  @output.report(metrics)
38
38
 
@@ -46,7 +46,7 @@ class BenchmarkDriver::Runner::Ips
46
46
  @output.with_benchmark do
47
47
  jobs.each do |job|
48
48
  @output.with_job(job) do
49
- @config.executables.each do |exec|
49
+ job.runnable_execs(@config.executables).each do |exec|
50
50
  best_metrics = with_repeat(@config.repeat_count) do
51
51
  run_benchmark(job, exec: exec)
52
52
  end
@@ -40,7 +40,7 @@ class BenchmarkDriver::Runner::Memory
40
40
  @output.with_benchmark do
41
41
  jobs.each do |job|
42
42
  @output.with_job(job) do
43
- @config.executables.each do |exec|
43
+ job.runnable_execs(@config.executables).each do |exec|
44
44
  best_metrics = with_repeat(@config.repeat_count) do
45
45
  run_benchmark(job, exec: exec)
46
46
  end
@@ -33,7 +33,7 @@ class BenchmarkDriver::Runner::Once
33
33
  @output.with_benchmark do
34
34
  jobs.each do |job|
35
35
  @output.with_job(job) do
36
- @config.executables.each do |exec|
36
+ job.runnable_execs(@config.executables).each do |exec|
37
37
  metrics = run_benchmark(job, exec: exec) # no repeat support
38
38
  @output.report(metrics)
39
39
  end
@@ -1,3 +1,3 @@
1
1
  module BenchmarkDriver
2
- VERSION = '0.10.10'
2
+ VERSION = '0.10.11'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: benchmark_driver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.10
4
+ version: 0.10.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-17 00:00:00.000000000 Z
11
+ date: 2018-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler