benchmark_driver 0.14.15 → 0.14.16

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: 64ba53ac98d5df0dcc334972063f4b15f811260b4788d10d2be857ddc27d2a61
4
- data.tar.gz: ffa117eed05ef4dc19fe19f84c700961b5601311d922db324d79facc7ff06ec4
3
+ metadata.gz: 85135f24e2f936e148208e4a5af25ca67635521729fc4dc9ee9b212422c101c6
4
+ data.tar.gz: ac1a8cfd80db996f81fcb4f7e9be7fa7fcc78a4189032008d13304e515ef2ae7
5
5
  SHA512:
6
- metadata.gz: 1f5155178c1ac60b5da8555cbcb45e6330d3d85480270a6cd60353ec885cf56d71fb9d87a869419e3b8032e992247036fe8034d81e9b5ecc0bfdfdcb4e9f7492
7
- data.tar.gz: 299a48296dddab7823e3256578984a42de52ac30dd1fbe560f3fcd1f6c2f5ddfe3e53f9bf1057e1e7c5196622e2c994f388b8ce25289965347277fdf0760c0bf
6
+ metadata.gz: e0bacf5b0207c59aa3130c3982e147e0dfce21166466d7afa6cde5b027da58ebcdcab479e6578223c84fe952450ff8c356f402d583150f0cb939b2afdb1ac5cc
7
+ data.tar.gz: f4c8b9266e1e4f33a69f0130c8407a16017a4846eae7119fe6c404d0422cfcf9035d8ad77d07dc7c2d78185f10bd34aca37883ee70bb07b4c783607477d61f1c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # v0.14.16
2
+
3
+ - Output ERROR metrics for a command failure on ruby\_stdout runner instead of crashing it
4
+
1
5
  # v0.14.15
2
6
 
3
7
  - Remove an extra space from markdown output
@@ -6,6 +6,8 @@ require 'open3'
6
6
 
7
7
  # Use stdout of ruby command
8
8
  class BenchmarkDriver::Runner::RubyStdout
9
+ CommandFailure = Class.new(StandardError)
10
+
9
11
  # JobParser returns this, `BenchmarkDriver::Runner.runner_for` searches "*::Job"
10
12
  Job = ::BenchmarkDriver::Struct.new(
11
13
  :name, # @param [String] name - This is mandatory for all runner
@@ -83,15 +85,20 @@ class BenchmarkDriver::Runner::RubyStdout
83
85
  exec = context.executable
84
86
  repeat_params = { config: @config, larger_better: metric.larger_better }
85
87
  result = BenchmarkDriver::Repeater.with_repeat(repeat_params) do
86
- stdout = with_chdir(job.working_directory) do
87
- with_ruby_prefix(exec) { execute(*exec.command, *job.command) }
88
+ begin
89
+ stdout = with_chdir(job.working_directory) do
90
+ with_ruby_prefix(exec) { execute(*exec.command, *job.command) }
91
+ end
92
+ script = StdoutToMetrics.new(
93
+ stdout: stdout,
94
+ value_from_stdout: job.value_from_stdout,
95
+ environment_from_stdout: job.environment_from_stdout,
96
+ )
97
+ [script.value, script.environment]
98
+ rescue CommandFailure => e
99
+ $stderr.puts("\n```\n#{e.message}```\n")
100
+ [BenchmarkDriver::Result::ERROR, {}]
88
101
  end
89
- script = StdoutToMetrics.new(
90
- stdout: stdout,
91
- value_from_stdout: job.value_from_stdout,
92
- environment_from_stdout: job.environment_from_stdout,
93
- )
94
- [script.value, script.environment]
95
102
  end
96
103
  value, environment = result.value
97
104
 
@@ -129,7 +136,7 @@ class BenchmarkDriver::Runner::RubyStdout
129
136
  def execute(*args)
130
137
  stdout, stderr, status = Open3.capture3(*args)
131
138
  unless status.success?
132
- raise "Failed to execute: #{args.shelljoin} (status: #{$?.exitstatus}):\n[stdout]:\n#{stdout}\n[stderr]:\n#{stderr}"
139
+ raise CommandFailure.new("Failed to execute: #{args.shelljoin} (status: #{$?.exitstatus}):\n\n[stdout]:\n#{stdout}\n[stderr]:\n#{stderr}")
133
140
  end
134
141
  stdout
135
142
  end
@@ -1,3 +1,3 @@
1
1
  module BenchmarkDriver
2
- VERSION = '0.14.15'
2
+ VERSION = '0.14.16'
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.14.15
4
+ version: 0.14.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-30 00:00:00.000000000 Z
11
+ date: 2019-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler