cwb 0.1.0

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.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +2 -0
  4. data/CHANGELOG.md +3 -0
  5. data/Gemfile +4 -0
  6. data/Guardfile +49 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +31 -0
  9. data/Rakefile +8 -0
  10. data/bin/cwb +4 -0
  11. data/cwb.gemspec +31 -0
  12. data/lib/cwb/benchmark.rb +22 -0
  13. data/lib/cwb/benchmark_suite.rb +35 -0
  14. data/lib/cwb/cli.rb +18 -0
  15. data/lib/cwb/client.rb +138 -0
  16. data/lib/cwb/config.rb +54 -0
  17. data/lib/cwb/directory_parser.rb +60 -0
  18. data/lib/cwb/directory_suite_parser.rb +30 -0
  19. data/lib/cwb/file_parser.rb +32 -0
  20. data/lib/cwb/parser.rb +40 -0
  21. data/lib/cwb/parser_factory.rb +17 -0
  22. data/lib/cwb/version.rb +3 -0
  23. data/lib/cwb.rb +19 -0
  24. data/lib/hash_extension.rb +27 -0
  25. data/lib/inflection.rb +13 -0
  26. data/node.yml +10 -0
  27. data/spec/cwb/benchmark_spec.rb +22 -0
  28. data/spec/cwb/cli_spec.rb +53 -0
  29. data/spec/cwb/client_spec.rb +33 -0
  30. data/spec/cwb_spec.rb +7 -0
  31. data/spec/data/benchmarks/benchmarks.txt +5 -0
  32. data/spec/data/benchmarks/disabled/disabled.rb +7 -0
  33. data/spec/data/benchmarks/my-disabled-suite/my_disabled_suite.rb +7 -0
  34. data/spec/data/benchmarks/node.rb +15 -0
  35. data/spec/data/benchmarks/node.yml +11 -0
  36. data/spec/data/benchmarks/shell-example/shell_example.rb +11 -0
  37. data/spec/data/benchmarks/sysbench/metrics.csv +3 -0
  38. data/spec/data/benchmarks/sysbench/node.yml +10 -0
  39. data/spec/data/benchmarks/sysbench/sysbench.rb +19 -0
  40. data/spec/data/benchmarks-suite/benchmark_suite.txt +3 -0
  41. data/spec/data/benchmarks-suite/benchmarks.txt +3 -0
  42. data/spec/data/benchmarks-suite/disabled/disabled.rb +7 -0
  43. data/spec/data/benchmarks-suite/my-custom-benchmark/my_custom_benchmark.rb +11 -0
  44. data/spec/data/benchmarks-suite/my-custom-suite/my_custom_suite.rb +14 -0
  45. data/spec/data/benchmarks-suite/my-disabled-suite/my_disabled_suite.rb +7 -0
  46. data/spec/data/benchmarks-suite/shell-example/shell_example.rb +11 -0
  47. data/spec/data/benchmarks-suite/sysbench/sysbench.rb +11 -0
  48. data/spec/hash_spec.rb +43 -0
  49. data/spec/spec_helper.rb +35 -0
  50. metadata +242 -0
@@ -0,0 +1,27 @@
1
+ # Implementation based on blogpost: http://reedy.in/words/archive/2015/01/08/deep-fetch/
2
+ # and hashie: https://github.com/intridea/hashie/blob/master/lib/hashie/extensions/deep_fetch.rb
3
+ module HashExtension
4
+ NOT_PRESENT = :symbol_for_non_present
5
+
6
+ def deep_fetch(*keys, default: NOT_PRESENT, &block)
7
+ keys.reduce(self) do |obj, arg|
8
+ begin
9
+ arg = Integer(arg) if obj.is_a? Array
10
+ obj.fetch(arg)
11
+ rescue => e
12
+ break block.call(arg) if block
13
+ if default.nil?
14
+ nil
15
+ elsif default == NOT_PRESENT
16
+ raise KeyError, "Could not fetch keypath (#{keys.join('.')}) at #{arg}", e.backtrace
17
+ else
18
+ default
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ def fetch_keypath(keypath, default: NOT_PRESENT)
25
+ deep_fetch(*keypath.split('.'), default: default)
26
+ end
27
+ end
data/lib/inflection.rb ADDED
@@ -0,0 +1,13 @@
1
+ module Inflection
2
+ def camelize
3
+ self.to_s.split('_').map {|w| w.capitalize}.join
4
+ end
5
+
6
+ def underscore
7
+ self.to_s.gsub(/::/, '/')
8
+ .gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
9
+ .gsub(/([a-z\d])([A-Z])/,'\1_\2')
10
+ .tr("-", "_")
11
+ .downcase
12
+ end
13
+ end
data/node.yml ADDED
@@ -0,0 +1,10 @@
1
+ ---
2
+ cwb:
3
+ server: localhost
4
+ repetitions: 1
5
+ metrics:
6
+ - cpu_model_name
7
+ sysbench:
8
+ commands:
9
+ - sysbench --test=cpu --max-prime-number=20000 run
10
+ - sysbench --test=io run
@@ -0,0 +1,22 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Cwb::Benchmark do
4
+ let(:test_config) { File.join(spec_data, "benchmarks") }
5
+ before { Cwb::Client.instance.reconfigure(Cwb::Config.from_dir(test_config)) }
6
+
7
+ context "sublasses" do
8
+ let(:sysbench) { Sysbench.new }
9
+
10
+ it "should get injected a Cwb::Client instance" do
11
+ expect(sysbench.cwb).to_not be_nil
12
+ end
13
+
14
+ it "should get the value of an existing attribute" do
15
+ expect(sysbench.existing_attribute).to eq "sysbench --test=io run"
16
+ end
17
+
18
+ it "should get an empty value when accessing a non-existing attribute" do
19
+ expect(sysbench.non_existing_attribute).to be_empty
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,53 @@
1
+ require "spec_helper"
2
+
3
+ def init_paths(benchmarks_path)
4
+ let(:benchmarks_path) { benchmarks_path }
5
+ let(:sysbench_path) { File.join(benchmarks_path, "sysbench" , "sysbench.rb") }
6
+ let(:sysbench_msg) { "execute sysbench in #{File.dirname(sysbench_path)}\n" }
7
+ let(:shell_example_path) { File.join(benchmarks_path, "shell-example" , "shell_example.rb") }
8
+ let(:shell_example_msg) { "execute shell-example in #{File.dirname(shell_example_path)}\n" }
9
+ let(:my_custom_benchmark_path) { File.join(benchmarks_path, "my-custom-benchmark", "my_custom_benchmark.rb") }
10
+ let(:my_custom_benchmark_msg) { "execute my-custom-benchmark in #{File.dirname(my_custom_benchmark_path)}\n" }
11
+ let(:failing_benchmark_path) { File.join(benchmarks_path, "disabled", "disabled.rb") }
12
+ end
13
+
14
+ RSpec.describe Cwb::Cli do
15
+ let(:cli) { Cwb::Cli.new }
16
+ let(:success_msg) { "Notify finished postprocessing.\n" }
17
+ let(:error_msg) { "Notify failure on running" }
18
+ init_paths(File.join(spec_data, "benchmarks"))
19
+
20
+ context "file" do
21
+ it "should invoke the execute method of the given benchmark" do
22
+ expect { cli.execute(sysbench_path) }.to output(sysbench_msg + success_msg).to_stdout
23
+ end
24
+
25
+ it "should invoke the execute method when called from the command line" do
26
+ expect(`#{File.join(Cwb::root, "bin", "cwb")} execute #{sysbench_path}`).to eq(sysbench_msg + success_msg)
27
+ expect($?.exitstatus).to eq(0)
28
+ end
29
+
30
+ it "should invoke the execute method when called from the command line via ruby" do
31
+ expect(`cd #{File.dirname(sysbench_path)} && ruby -I "#{File.join(Cwb::root, "lib")}" -r "#{sysbench_path}" -e "Sysbench.new.execute"`).to eq(sysbench_msg)
32
+ expect($?.exitstatus).to eq(0)
33
+ end
34
+ end
35
+
36
+ context "directory" do
37
+ it "should execute all enabled benchmarks (i.e., contained in the benchmarks.txt) in correct order" do
38
+ expect { cli.execute(benchmarks_path) }.to output(sysbench_msg + shell_example_msg + success_msg).to_stdout
39
+ end
40
+
41
+ it "should notify a failed on running message on error" do
42
+ expect { cli.execute(failing_benchmark_path) }.to output(/#{error_msg}/).to_stdout & raise_error
43
+ end
44
+ end
45
+
46
+ context "directory with suite" do
47
+ init_paths(File.join(spec_data, "benchmarks-suite"))
48
+
49
+ it "should execute the benchmarks of the provided suite in correct order" do
50
+ expect { cli.execute(benchmarks_path) }.to output(sysbench_msg + my_custom_benchmark_msg + success_msg).to_stdout
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,33 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Cwb::Client do
4
+ let(:client) { Cwb::Client.instance }
5
+
6
+ context "cwb-server" do
7
+
8
+ end
9
+
10
+ context "local" do
11
+ let(:commands) { [ "sysbench --test=cpu --max-prime-number=20000 run",
12
+ "sysbench --test=io run", ] }
13
+ let(:test_config) { File.join(spec_data, "benchmarks", "sysbench") }
14
+ let(:metrics_file) { File.join(test_config, "metrics.csv") }
15
+ before { Cwb::Client.instance.reconfigure(Cwb::Config.from_dir(test_config)) }
16
+
17
+ it "should log single metric submission to the console" do
18
+ expect { client.submit_metric("time", "0", "340") }.to output("time,0,340\n").to_stdout
19
+ end
20
+
21
+ it "should log bulk metric submission to the console" do
22
+ expect { client.submit_metrics("cpu_load", metrics_file) }.to output("0,30\n500,40\n1000,50\n").to_stdout
23
+ end
24
+
25
+ it "should return an empty string for non-configured attributes" do
26
+ expect(client.deep_fetch("non-existing", "attribute")).to be_empty
27
+ end
28
+
29
+ it "should return attributes from the config file" do
30
+ expect(client.deep_fetch("sysbench", "commands")).to eq(commands)
31
+ end
32
+ end
33
+ end
data/spec/cwb_spec.rb ADDED
@@ -0,0 +1,7 @@
1
+ require "spec_helper"
2
+
3
+ describe Cwb do
4
+ it "has a version number" do
5
+ expect(Cwb::VERSION).not_to be nil
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ sysbench
2
+
3
+ shell-example
4
+
5
+
@@ -0,0 +1,7 @@
1
+ require "cwb"
2
+
3
+ class Disabled < Cwb::Benchmark
4
+ def execute
5
+ fail "Disabled benchmark should never be executed"
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ require "cwb"
2
+
3
+ class MyDisabledSuite < Cwb::BenchmarkSuite
4
+ def execute_suite(cwb_benchmarks)
5
+ fail "Disabled suite should never be reached"
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ require 'yaml'
2
+
3
+ NODE = {
4
+ "cwb" => {
5
+ "server" => "localhost",
6
+ "repetitions" => 1,
7
+ "metrics" => [ "cpu_model_name" ]
8
+ },
9
+ "sysbench" => {
10
+ "commands" => [ "sysbench --test=cpu --max-prime-number=20000 run",
11
+ "sysbench --test=io run",
12
+ ]
13
+ }
14
+ }
15
+ File.write('./node.yml', NODE.to_yaml)
@@ -0,0 +1,11 @@
1
+ ---
2
+ cwb:
3
+ provider_name: virtualbox
4
+ provider_instance_id: cwb-001-002
5
+ repetitions: 1
6
+ metrics:
7
+ - cpu_model_name
8
+ sysbench:
9
+ commands:
10
+ - sysbench --test=cpu --max-prime-number=20000 run
11
+ - sysbench --test=io run
@@ -0,0 +1,11 @@
1
+ require "cwb"
2
+
3
+ class ShellExample < Cwb::Benchmark
4
+ def cwb
5
+ @cwb
6
+ end
7
+
8
+ def execute
9
+ puts "execute shell-example in #{`pwd`}"
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ 0,30
2
+ 500,40
3
+ 1000,50
@@ -0,0 +1,10 @@
1
+ ---
2
+ cwb:
3
+ server: localhost
4
+ repetitions: 1
5
+ metrics:
6
+ - cpu_model_name
7
+ sysbench:
8
+ commands:
9
+ - sysbench --test=cpu --max-prime-number=20000 run
10
+ - sysbench --test=io run
@@ -0,0 +1,19 @@
1
+ require "cwb"
2
+
3
+ class Sysbench < Cwb::Benchmark
4
+ def cwb
5
+ @cwb
6
+ end
7
+
8
+ def existing_attribute
9
+ @cwb.deep_fetch("sysbench", "commands", "1")
10
+ end
11
+
12
+ def non_existing_attribute
13
+ @cwb.deep_fetch("some", "non_existing", "attribute")
14
+ end
15
+
16
+ def execute
17
+ puts "execute sysbench in #{`pwd`}"
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ my-custom-suite
2
+ my-disabled-suite
3
+
@@ -0,0 +1,3 @@
1
+ sysbench
2
+ my-custom-benchmark
3
+ shell-example
@@ -0,0 +1,7 @@
1
+ require "cwb"
2
+
3
+ class MyCustomBenchmark < Cwb::Benchmark
4
+ def execute
5
+ fail "Disabled benchmark should never be executed"
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ require "cwb"
2
+
3
+ class MyCustomBenchmark < Cwb::Benchmark
4
+ def cwb
5
+ @cwb
6
+ end
7
+
8
+ def execute
9
+ puts "execute my-custom-benchmark in #{`pwd`}"
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ require "cwb"
2
+
3
+ class MyCustomSuite < Cwb::BenchmarkSuite
4
+ def cwb
5
+ @cwb
6
+ end
7
+
8
+ def execute_suite(cwb_benchmarks)
9
+ my_list = get_list([Sysbench, MyCustomBenchmark], cwb_benchmarks)
10
+ execute_all(my_list)
11
+ @cwb.notify_finished_execution
12
+ # @cwb.execute(Sysbench.new)
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ require "cwb"
2
+
3
+ class MyDisabledSuite < Cwb::BenchmarkSuite
4
+ def execute_suite(cwb_benchmarks)
5
+ fail "Disabled suite should never be reached"
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ require "cwb"
2
+
3
+ class ShellExample < Cwb::Benchmark
4
+ def cwb
5
+ @cwb
6
+ end
7
+
8
+ def execute
9
+ puts "execute shell-example in #{`pwd`}"
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require "cwb"
2
+
3
+ class Sysbench < Cwb::Benchmark
4
+ def cwb
5
+ @cwb
6
+ end
7
+
8
+ def execute
9
+ puts "execute sysbench in #{`pwd`}"
10
+ end
11
+ end
data/spec/hash_spec.rb ADDED
@@ -0,0 +1,43 @@
1
+ describe HashExtension do
2
+ let(:hash) {
3
+ {
4
+ "webserver" => {
5
+ "users" => {
6
+ "admin" => {
7
+ "password" => "some amazing password"
8
+ }
9
+ }
10
+ }
11
+ }
12
+ }
13
+
14
+ describe "#deep_fetch" do
15
+ it "returns the correct value for the provided keys" do
16
+ expect(hash.deep_fetch("webserver","users","admin","password")).to eq("some amazing password")
17
+ end
18
+ it "raises KeyError if the provided keys do not exist" do
19
+ expect{ hash.deep_fetch("webserver","users","jdoe","password") }.to raise_error(KeyError)
20
+ end
21
+ it "returns the provided default value (String) if the key does not exist" do
22
+ expect(hash.deep_fetch("webserver","users","jdoe","password", default: "Key Missing")).to eq("Key Missing")
23
+ end
24
+ it "returns the provided default value (boolean) if the key does not exist" do
25
+ expect(hash.deep_fetch("webserver","users","jdoe","password", default: false)).to be false
26
+ end
27
+ it "returns the provided default value (nil) if the key does not exist" do
28
+ expect(hash.deep_fetch("webserver","users","jdoe","password", default: nil)).to be nil
29
+ end
30
+ end
31
+
32
+ describe "#fetch_keypath" do
33
+ it "returns the correct value for the provided keypath" do
34
+ expect(hash.fetch_keypath("webserver.users.admin.password")).to eq("some amazing password")
35
+ end
36
+ it "raises KeyError if the provided keys do not exist" do
37
+ expect { hash.fetch_keypath("webserver.users.jdoe.password") }.to raise_error(KeyError)
38
+ end
39
+ it "returns the provided default value if the key does not exist" do
40
+ expect(hash.fetch_keypath("webserver.users.jdoe.password", default: "Key Missing")).to eq("Key Missing")
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,35 @@
1
+ require "simplecov"
2
+ class LineFilter < SimpleCov::Filter
3
+ def matches?(source_file)
4
+ source_file.lines.count < filter_argument
5
+ end
6
+ end
7
+ SimpleCov.start do
8
+ add_group "Long files" do |src_file|
9
+ src_file.lines.count > 100
10
+ end
11
+ add_group "Short files", LineFilter.new(5)
12
+ add_filter "spec/data"
13
+ end
14
+
15
+ require "pry"
16
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
17
+ require "cwb"
18
+
19
+ # Add gem root directory to LOAD_PATH
20
+ $LOAD_PATH << Cwb::root
21
+
22
+ def spec_data
23
+ File.join(Cwb::root, "spec", "data")
24
+ end
25
+
26
+ # Requires supporting ruby files spec/data/ and its subdirectories.
27
+ Dir["spec/data/**/*.rb"].each { |f| require f }
28
+
29
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
30
+ RSpec.configure do |config|
31
+ config.run_all_when_everything_filtered = true
32
+ config.filter_run :focus
33
+
34
+ config.order = "random"
35
+ end
metadata ADDED
@@ -0,0 +1,242 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cwb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Joel Scheuner
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.19'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.19'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.9.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.9.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday_middleware
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.9.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.9'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.9'
125
+ - !ruby/object:Gem::Dependency
126
+ name: guard-rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '4.5'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '4.5'
139
+ description:
140
+ email:
141
+ - joel.scheuner.dev@gmail.com
142
+ executables:
143
+ - cwb
144
+ extensions: []
145
+ extra_rdoc_files: []
146
+ files:
147
+ - ".gitignore"
148
+ - ".rspec"
149
+ - CHANGELOG.md
150
+ - Gemfile
151
+ - Guardfile
152
+ - LICENSE.txt
153
+ - README.md
154
+ - Rakefile
155
+ - bin/cwb
156
+ - cwb.gemspec
157
+ - lib/cwb.rb
158
+ - lib/cwb/benchmark.rb
159
+ - lib/cwb/benchmark_suite.rb
160
+ - lib/cwb/cli.rb
161
+ - lib/cwb/client.rb
162
+ - lib/cwb/config.rb
163
+ - lib/cwb/directory_parser.rb
164
+ - lib/cwb/directory_suite_parser.rb
165
+ - lib/cwb/file_parser.rb
166
+ - lib/cwb/parser.rb
167
+ - lib/cwb/parser_factory.rb
168
+ - lib/cwb/version.rb
169
+ - lib/hash_extension.rb
170
+ - lib/inflection.rb
171
+ - node.yml
172
+ - spec/cwb/benchmark_spec.rb
173
+ - spec/cwb/cli_spec.rb
174
+ - spec/cwb/client_spec.rb
175
+ - spec/cwb_spec.rb
176
+ - spec/data/benchmarks-suite/benchmark_suite.txt
177
+ - spec/data/benchmarks-suite/benchmarks.txt
178
+ - spec/data/benchmarks-suite/disabled/disabled.rb
179
+ - spec/data/benchmarks-suite/my-custom-benchmark/my_custom_benchmark.rb
180
+ - spec/data/benchmarks-suite/my-custom-suite/my_custom_suite.rb
181
+ - spec/data/benchmarks-suite/my-disabled-suite/my_disabled_suite.rb
182
+ - spec/data/benchmarks-suite/shell-example/shell_example.rb
183
+ - spec/data/benchmarks-suite/sysbench/sysbench.rb
184
+ - spec/data/benchmarks/benchmarks.txt
185
+ - spec/data/benchmarks/disabled/disabled.rb
186
+ - spec/data/benchmarks/my-disabled-suite/my_disabled_suite.rb
187
+ - spec/data/benchmarks/node.rb
188
+ - spec/data/benchmarks/node.yml
189
+ - spec/data/benchmarks/shell-example/shell_example.rb
190
+ - spec/data/benchmarks/sysbench/metrics.csv
191
+ - spec/data/benchmarks/sysbench/node.yml
192
+ - spec/data/benchmarks/sysbench/sysbench.rb
193
+ - spec/hash_spec.rb
194
+ - spec/spec_helper.rb
195
+ homepage: https://github.com/sealuzh/cloud-workbench
196
+ licenses:
197
+ - MIT
198
+ metadata: {}
199
+ post_install_message:
200
+ rdoc_options: []
201
+ require_paths:
202
+ - lib
203
+ required_ruby_version: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ required_rubygems_version: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
213
+ requirements: []
214
+ rubyforge_project:
215
+ rubygems_version: 2.2.2
216
+ signing_key:
217
+ specification_version: 4
218
+ summary: Provides Cloud WorkBench (CWB) infrastructure for cloud VMs and local testing.
219
+ test_files:
220
+ - spec/cwb/benchmark_spec.rb
221
+ - spec/cwb/cli_spec.rb
222
+ - spec/cwb/client_spec.rb
223
+ - spec/cwb_spec.rb
224
+ - spec/data/benchmarks-suite/benchmark_suite.txt
225
+ - spec/data/benchmarks-suite/benchmarks.txt
226
+ - spec/data/benchmarks-suite/disabled/disabled.rb
227
+ - spec/data/benchmarks-suite/my-custom-benchmark/my_custom_benchmark.rb
228
+ - spec/data/benchmarks-suite/my-custom-suite/my_custom_suite.rb
229
+ - spec/data/benchmarks-suite/my-disabled-suite/my_disabled_suite.rb
230
+ - spec/data/benchmarks-suite/shell-example/shell_example.rb
231
+ - spec/data/benchmarks-suite/sysbench/sysbench.rb
232
+ - spec/data/benchmarks/benchmarks.txt
233
+ - spec/data/benchmarks/disabled/disabled.rb
234
+ - spec/data/benchmarks/my-disabled-suite/my_disabled_suite.rb
235
+ - spec/data/benchmarks/node.rb
236
+ - spec/data/benchmarks/node.yml
237
+ - spec/data/benchmarks/shell-example/shell_example.rb
238
+ - spec/data/benchmarks/sysbench/metrics.csv
239
+ - spec/data/benchmarks/sysbench/node.yml
240
+ - spec/data/benchmarks/sysbench/sysbench.rb
241
+ - spec/hash_spec.rb
242
+ - spec/spec_helper.rb