benchmark_driver-output-charty 0.1.0 → 0.2.0

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: a4ffe9ebe3b4c94f541a12dadf285fef51867f40891a047c9b95c3a884f1c10c
4
- data.tar.gz: e10885bdf8b55ad4e69bab90fc97f4a7a11d5879616a1ce09a909e49ba0a4542
3
+ metadata.gz: 4ffde553e880c170e09f114efaef84f14a4da531dbcac1b9a249ef59a855f8e7
4
+ data.tar.gz: 2869bb6caecf58295468fe67dbde77f0d0eb375002fb316f423ddfd87150f48c
5
5
  SHA512:
6
- metadata.gz: e47450cb7d71180641dabd30eb1a44b07af5767e6b2cdf3a50356027a6d0764cac76528e921efde74dde7149791658aedd7d43a4bde56e47e21d17d406c1c887
7
- data.tar.gz: 0ac28259adbeeba197e6b20b8270fc366662495a9ae248c6250bb03fe87d9762dd8640202731440ac1acdbd4962d19aae746efc89d95885613f81998c1f37a42
6
+ metadata.gz: 3a0809d8e782be74c5ae65dcdd0326939502f16ad1621036794eac89fd51ba90536ff008822de661fbe4c40bcf24b8e8e5c9282017422d685cb339949ab68149
7
+ data.tar.gz: 82292840c90fe8ce63d50264876cb0f8d3dcb7e90c3d0ba2d195d024c8d57dfe49e05d718dc1f82516b849a91d1b382787ced0d0b9592a8bdbd4da63198de021
data/.gitignore CHANGED
@@ -6,3 +6,6 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+
10
+ Gemfile.lock
11
+ charty.png
data/README.md CHANGED
@@ -2,21 +2,19 @@
2
2
 
3
3
  Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/benchmark_driver/output/charty`. To experiment with that code, run `bin/console` for an interactive prompt.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
6
-
7
5
  ## Usage
8
6
 
9
7
  ```
10
8
  $ be benchmark-driver examples/single.yml -o charty --rbenv '2.5.3;2.6.2'
11
9
  ```
12
10
 
13
- ![](https://github.com/284km/benchmark_driver-output-charty/blob/master/images/single.png)
11
+ ![](https://github.com/benchmark-driver/benchmark_driver-output-charty/blob/master/images/single.png)
14
12
 
15
13
  ```
16
14
  $ be benchmark-driver examples/multi.yml -o charty --rbenv '2.5.3;2.6.2'
17
15
  ```
18
16
 
19
- ![](https://github.com/284km/benchmark_driver-output-charty/blob/master/images/multi.png)
17
+ ![](https://github.com/benchmark-driver/benchmark_driver-output-charty/blob/master/images/multi.png)
20
18
 
21
19
  ## Installation
22
20
 
@@ -34,10 +32,6 @@ Or install it yourself as:
34
32
 
35
33
  $ gem install benchmark_driver-output-charty
36
34
 
37
- ## Usage
38
-
39
- TODO: Write usage instructions here
40
-
41
35
  ## Development
42
36
 
43
37
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -46,7 +40,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
46
40
 
47
41
  ## Contributing
48
42
 
49
- Bug reports and pull requests are welcome on GitHub at https://github.com/284km/benchmark_driver-output-charty. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
43
+ Bug reports and pull requests are welcome on GitHub at https://github.com/benchmark-driver/benchmark_driver-output-charty. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
50
44
 
51
45
  ## License
52
46
 
@@ -54,4 +48,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
54
48
 
55
49
  ## Code of Conduct
56
50
 
57
- Everyone interacting in the BenchmarkDriver::Output::Charty project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/284km/benchmark_driver-output-charty/blob/master/CODE_OF_CONDUCT.md).
51
+ Everyone interacting in the BenchmarkDriver::Output::Charty project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/benchmark-driver/benchmark_driver-output-charty/blob/master/CODE_OF_CONDUCT.md).
@@ -4,13 +4,13 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "benchmark_driver-output-charty"
7
- spec.version = "0.1.0"
7
+ spec.version = "0.2.0"
8
8
  spec.authors = ["284km"]
9
9
  spec.email = ["k.furuhashi10@gmail.com"]
10
10
 
11
11
  spec.summary = %q{Show graph on benchmark_driver using charty.gem}
12
12
  spec.description = %q{Show graph on benchmark_driver using charty.gem}
13
- spec.homepage = "https://github.com/284km/benchmark_driver-output-charty"
13
+ spec.homepage = "https://github.com/benchmark-driver/benchmark_driver-output-charty"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
@@ -20,10 +20,10 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.add_dependency "benchmark_driver"
23
+ spec.add_dependency "benchmark_driver", ">= 0.15.1"
24
24
  spec.add_dependency "charty"
25
25
  spec.add_dependency "matplotlib"
26
- spec.add_development_dependency "bundler", "~> 1.17"
27
- spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "bundler"
27
+ spec.add_development_dependency "rake"
28
28
  spec.add_development_dependency "test-unit"
29
29
  end
@@ -4,49 +4,74 @@ require 'benchmark_driver'
4
4
  class BenchmarkDriver::Output::Charty < BenchmarkDriver::BulkOutput
5
5
  GRAPH_PATH = 'charty.png'
6
6
 
7
+ OPTIONS = {
8
+ chart: ['--output-chart CHART', Regexp.union(['bar', 'box']), 'Specify chart type: bar, box (default: bar)'],
9
+ path: ['--output-path PATH', String, "Chart output path (default: #{GRAPH_PATH})"]
10
+ }
11
+
7
12
  # @param [Array<BenchmarkDriver::Metric>] metrics
8
13
  # @param [Array<BenchmarkDriver::Job>] jobs
9
14
  # @param [Array<BenchmarkDriver::Context>] contexts
10
- def initialize(contexts:, **)
15
+ def initialize(contexts:, options:, **)
11
16
  super
12
17
  @contexts = contexts
18
+ @chart = options.fetch(:chart, 'bar')
19
+ @path = options.fetch(:path, GRAPH_PATH)
13
20
  end
14
21
 
15
22
  # @param [Hash{ BenchmarkDriver::Job => Hash{ BenchmarkDriver::Context => { BenchmarkDriver::Metric => Float } } }] result
16
23
  # @param [Array<BenchmarkDriver::Metric>] metrics
17
24
  def bulk_output(job_context_result:, metrics:)
18
25
  print "rendering graph..."
19
- charty = Charty::Plotter.new(:matplot)
26
+ charty = Charty::Plotter.new(:pyplot)
20
27
 
21
28
  metric = metrics.first # only one metric is supported for now
22
29
  if job_context_result.keys.size == 1
23
30
  job = job_context_result.keys.first
24
31
 
25
32
  names = job_context_result[job].keys.map(&:name)
26
- values = job_context_result[job].values.map { |result| result.values.fetch(metric) }
27
- barh = charty.barh do
28
- series names, values
29
- ylabel metric.unit
33
+ case @chart
34
+ when 'bar'
35
+ values = job_context_result[job].values.map { |result| result.values.fetch(metric) }
36
+ chart = charty.barh do
37
+ series names, values
38
+ ylabel metric.unit
39
+ end
40
+ when 'box'
41
+ values = job_context_result[job].values.map { |result| result.all_values.fetch(metric) }
42
+ chart = charty.box_plot do
43
+ labels names
44
+ data values
45
+ ylabel metric.unit
46
+ end
47
+ else
48
+ raise ArgumentError, "unexpected --output-chart: #{@chart}"
30
49
  end
31
- barh.render("charty.png")
32
50
  else
33
51
  jobs = job_context_result.keys
34
- values = @contexts.map{|context|
35
- [
36
- jobs.map{|job| "#{job.name}(#{context.name})" },
37
- jobs.map{|job| job_context_result[job][context].values.fetch(metric).round }
38
- ]
39
- }
40
-
41
- barh = charty.barh do
42
- values.each do |value|
43
- series *value
52
+
53
+ case @chart
54
+ when 'bar'
55
+ values = @contexts.map{|context|
56
+ [
57
+ jobs.map{|job| "#{job.name}(#{context.name})" },
58
+ jobs.map{|job| job_context_result[job][context].values.fetch(metric).round }
59
+ ]
60
+ }
61
+ chart = charty.barh do
62
+ values.each do |value|
63
+ series *value
64
+ end
65
+ ylabel metric.unit
44
66
  end
45
- ylabel metric.unit
67
+ when 'box'
68
+ raise NotImplementedError, "--output-chart=box is not supported with multiple jobs"
69
+ else
70
+ raise ArgumentError, "unexpected --output-chart: #{@chart}"
46
71
  end
47
- barh.render("charty.png")
48
72
  end
49
- puts ": #{GRAPH_PATH}"
73
+ chart.save(@path)
74
+ puts ": #{@path}"
50
75
  end
51
76
 
52
77
  def with_job(job, &block)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: benchmark_driver-output-charty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - 284km
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-16 00:00:00.000000000 Z
11
+ date: 2019-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark_driver
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.15.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 0.15.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: charty
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -56,30 +56,30 @@ dependencies:
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.17'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.17'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '10.0'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '10.0'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: test-unit
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -116,8 +116,7 @@ files:
116
116
  - images/multi.png
117
117
  - images/single.png
118
118
  - lib/benchmark_driver/output/charty.rb
119
- - lib/benchmark_driver/output/charty/version.rb
120
- homepage: https://github.com/284km/benchmark_driver-output-charty
119
+ homepage: https://github.com/benchmark-driver/benchmark_driver-output-charty
121
120
  licenses:
122
121
  - MIT
123
122
  metadata: {}
@@ -1,7 +0,0 @@
1
- module BenchmarkDriver
2
- module Output
3
- module Charty
4
- VERSION = "0.1.0"
5
- end
6
- end
7
- end