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.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.rspec +2 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +4 -0
- data/Guardfile +49 -0
- data/LICENSE.txt +22 -0
- data/README.md +31 -0
- data/Rakefile +8 -0
- data/bin/cwb +4 -0
- data/cwb.gemspec +31 -0
- data/lib/cwb/benchmark.rb +22 -0
- data/lib/cwb/benchmark_suite.rb +35 -0
- data/lib/cwb/cli.rb +18 -0
- data/lib/cwb/client.rb +138 -0
- data/lib/cwb/config.rb +54 -0
- data/lib/cwb/directory_parser.rb +60 -0
- data/lib/cwb/directory_suite_parser.rb +30 -0
- data/lib/cwb/file_parser.rb +32 -0
- data/lib/cwb/parser.rb +40 -0
- data/lib/cwb/parser_factory.rb +17 -0
- data/lib/cwb/version.rb +3 -0
- data/lib/cwb.rb +19 -0
- data/lib/hash_extension.rb +27 -0
- data/lib/inflection.rb +13 -0
- data/node.yml +10 -0
- data/spec/cwb/benchmark_spec.rb +22 -0
- data/spec/cwb/cli_spec.rb +53 -0
- data/spec/cwb/client_spec.rb +33 -0
- data/spec/cwb_spec.rb +7 -0
- data/spec/data/benchmarks/benchmarks.txt +5 -0
- data/spec/data/benchmarks/disabled/disabled.rb +7 -0
- data/spec/data/benchmarks/my-disabled-suite/my_disabled_suite.rb +7 -0
- data/spec/data/benchmarks/node.rb +15 -0
- data/spec/data/benchmarks/node.yml +11 -0
- data/spec/data/benchmarks/shell-example/shell_example.rb +11 -0
- data/spec/data/benchmarks/sysbench/metrics.csv +3 -0
- data/spec/data/benchmarks/sysbench/node.yml +10 -0
- data/spec/data/benchmarks/sysbench/sysbench.rb +19 -0
- data/spec/data/benchmarks-suite/benchmark_suite.txt +3 -0
- data/spec/data/benchmarks-suite/benchmarks.txt +3 -0
- data/spec/data/benchmarks-suite/disabled/disabled.rb +7 -0
- data/spec/data/benchmarks-suite/my-custom-benchmark/my_custom_benchmark.rb +11 -0
- data/spec/data/benchmarks-suite/my-custom-suite/my_custom_suite.rb +14 -0
- data/spec/data/benchmarks-suite/my-disabled-suite/my_disabled_suite.rb +7 -0
- data/spec/data/benchmarks-suite/shell-example/shell_example.rb +11 -0
- data/spec/data/benchmarks-suite/sysbench/sysbench.rb +11 -0
- data/spec/hash_spec.rb +43 -0
- data/spec/spec_helper.rb +35 -0
- 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,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,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,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,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
         | 
    
        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
         | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | @@ -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
         |