benchmark_driver 0.14.15 → 0.14.16

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: 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