benchmark_driver 0.10.10 → 0.10.11

Sign up to get free protection for your applications and to get access to all the features.
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