polytrix 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.groc.json +7 -0
  4. data/.rspec +11 -0
  5. data/.rspec_parallel +10 -0
  6. data/Gemfile +23 -0
  7. data/README.md +48 -0
  8. data/Rakefile +143 -0
  9. data/Vagrantfile +41 -0
  10. data/features/0_identity_spec.rb +40 -0
  11. data/features/1_cloud_files_spec.rb +48 -0
  12. data/features/2_servers_spec.rb +19 -0
  13. data/features/features_helper.rb +46 -0
  14. data/features/helpers/cloudfiles_helper.rb +31 -0
  15. data/features/helpers/pacto_helper.rb +33 -0
  16. data/features/helpers/teardown_helper.rb +49 -0
  17. data/features/pacto/extensions/loaders/api_blueprint_loader.rb +63 -0
  18. data/features/pacto/extensions/loaders/simple_loader.rb +55 -0
  19. data/features/pacto/extensions/loaders/yaml_or_json_loader.rb +17 -0
  20. data/features/pacto/extensions/matchers.rb +38 -0
  21. data/features/phase2/feature_coverage_report.rb +109 -0
  22. data/features/phase2/run_all_features.rb +14 -0
  23. data/features/static_site/fixtures/index.html +6 -0
  24. data/lib/polytrix/challenge.rb +27 -0
  25. data/lib/polytrix/challenge_builder.rb +16 -0
  26. data/lib/polytrix/challenge_runner.rb +87 -0
  27. data/lib/polytrix/configuration.rb +31 -0
  28. data/lib/polytrix/core/file_finder.rb +43 -0
  29. data/lib/polytrix/core/implementor.rb +17 -0
  30. data/lib/polytrix/core/result_tracker.rb +25 -0
  31. data/lib/polytrix/documentation_generator.rb +18 -0
  32. data/lib/polytrix/manifest.rb +46 -0
  33. data/lib/polytrix/result.rb +9 -0
  34. data/lib/polytrix/rspec/documentation_formatter.rb +41 -0
  35. data/lib/polytrix/rspec.rb +75 -0
  36. data/lib/polytrix/runners/linux_challenge_runner.rb +22 -0
  37. data/lib/polytrix/runners/middleware/change_directory.rb +20 -0
  38. data/lib/polytrix/runners/middleware/feature_executor.rb +23 -0
  39. data/lib/polytrix/runners/middleware/pacto.rb +59 -0
  40. data/lib/polytrix/runners/middleware/setup_env_vars.rb +38 -0
  41. data/lib/polytrix/runners/windows_challenge_runner.rb +25 -0
  42. data/lib/polytrix/version.rb +3 -0
  43. data/lib/polytrix.rb +56 -0
  44. data/packer/.gitignore +3 -0
  45. data/packer/Berksfile +15 -0
  46. data/packer/Gemfile +5 -0
  47. data/packer/Vagrantfile +128 -0
  48. data/packer/cookbooks/drg/metadata.rb +27 -0
  49. data/packer/cookbooks/drg/recipes/admins.rb +22 -0
  50. data/packer/cookbooks/drg/recipes/default.rb +9 -0
  51. data/packer/cookbooks/drg/recipes/dotnet.rb +4 -0
  52. data/packer/cookbooks/drg/recipes/golang.rb +4 -0
  53. data/packer/cookbooks/drg/recipes/java.rb +5 -0
  54. data/packer/cookbooks/drg/recipes/php.rb +10 -0
  55. data/packer/cookbooks/drg/recipes/ruby.rb +29 -0
  56. data/packer/cookbooks/drg/recipes/system.rb +13 -0
  57. data/packer/create_box.sh +10 -0
  58. data/packer/http/preseed.cfg +87 -0
  59. data/packer/packer.json +91 -0
  60. data/packer/scripts/root_setup.sh +37 -0
  61. data/packer/scripts/setup.sh +32 -0
  62. data/pacto/config/pacto_server.rb +40 -0
  63. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/extensions.json +64 -0
  64. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/flavors/id.json +100 -0
  65. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/images/id.json +176 -0
  66. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/servers/id.json +189 -0
  67. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/servers.json +63 -0
  68. data/pacto/contracts/dns.api.rackspacecloud.com/v1.0/_tenant_id/domains.json +62 -0
  69. data/pacto/contracts/identity.api.rackspacecloud.com/v2.0/tokens.json +192 -0
  70. data/pacto/contracts/monitoring.api.rackspacecloud.com/v1.0/_tenant_id/account.json +39 -0
  71. data/pacto/contracts/ord.autoscale.api.rackspacecloud.com/v1.0/_tenant_id/groups.json +38 -0
  72. data/pacto/contracts/ord.blockstorage.api.rackspacecloud.com/v1/_tenant_id/volumes.json +30 -0
  73. data/pacto/contracts/ord.databases.api.rackspacecloud.com/v1.0/_tenant_id/instances.json +30 -0
  74. data/pacto/contracts/ord.loadbalancers.api.rackspacecloud.com/v1.0/_tenant_id/loadbalancers.json +114 -0
  75. data/pacto/contracts/ord.queues.api.rackspacecloud.com/v1/_tenant_id/queues.json +13 -0
  76. data/pacto/contracts/ord.servers.api.rackspacecloud.com/v2/_tenant_id/os-networksv2.json +46 -0
  77. data/pacto/contracts/ord.servers.api.rackspacecloud.com/v2/_tenant_id/servers/detail.json +230 -0
  78. data/pacto/contracts/storage101.dfw1.clouddrive.com/v1/mosso_account/container/object.json +15 -0
  79. data/pacto/contracts/storage101.dfw1.clouddrive.com/v1/mosso_account.json +43 -0
  80. data/pacto/contracts/storage101.ord1.clouddrive.com/v1/_mosso_id.json +44 -0
  81. data/pacto/pacto_server.rb +100 -0
  82. data/pacto/rackspace_uri_map.yaml +229 -0
  83. data/polytrix.gemspec +27 -0
  84. data/scripts/bootstrap +10 -0
  85. data/scripts/cibuild +4 -0
  86. data/sdks/fog/.gitignore +1 -0
  87. data/sdks/fog/Gemfile +5 -0
  88. data/sdks/fog/challenges/all_connections.rb +45 -0
  89. data/sdks/fog/challenges/authenticate_token.rb +15 -0
  90. data/sdks/fog/challenges/cdn_enable_container.rb +20 -0
  91. data/sdks/fog/challenges/create_a_container.rb +17 -0
  92. data/sdks/fog/challenges/create_server.rb +36 -0
  93. data/sdks/fog/challenges/get_object_metadata.rb +13 -0
  94. data/sdks/fog/challenges/list_containers.rb +10 -0
  95. data/sdks/fog/challenges/provision_scalable_webapp.rb +30 -0
  96. data/sdks/fog/challenges/upload_folder.rb +25 -0
  97. data/sdks/fog/scripts/bootstrap +4 -0
  98. data/sdks/fog/scripts/bootstrap.ps1 +1 -0
  99. data/sdks/fog/scripts/wrapper +2 -0
  100. data/sdks/fog/scripts/wrapper.ps1 +1 -0
  101. data/sdks/gophercloud/.gitignore +2 -0
  102. data/sdks/gophercloud/challenges/authenticate_token.go +23 -0
  103. data/sdks/gophercloud/scripts/bootstrap +6 -0
  104. data/sdks/gophercloud/scripts/wrapper +10 -0
  105. data/sdks/jclouds/.gitignore +1 -0
  106. data/sdks/jclouds/challenges/AuthenticateToken.java +115 -0
  107. data/sdks/jclouds/pom.xml +34 -0
  108. data/sdks/jclouds/scripts/bootstrap +3 -0
  109. data/sdks/jclouds/scripts/wrapper +7 -0
  110. data/sdks/openstack.net/.gitignore +4 -0
  111. data/sdks/openstack.net/.nuget/Microsoft.Build.dll +0 -0
  112. data/sdks/openstack.net/.nuget/NuGet.Config +6 -0
  113. data/sdks/openstack.net/.nuget/NuGet.exe +0 -0
  114. data/sdks/openstack.net/.nuget/NuGet.targets +136 -0
  115. data/sdks/openstack.net/Challenge.cs +10 -0
  116. data/sdks/openstack.net/RunChallenge.cs +19 -0
  117. data/sdks/openstack.net/challenges/AuthenticateToken.cs +24 -0
  118. data/sdks/openstack.net/challenges/Weird.cs +133 -0
  119. data/sdks/openstack.net/openstack.net.csproj +58 -0
  120. data/sdks/openstack.net/openstack.net.sln +27 -0
  121. data/sdks/openstack.net/openstack.net.userprefs +8 -0
  122. data/sdks/openstack.net/packages.config +6 -0
  123. data/sdks/openstack.net/scripts/bootstrap +2 -0
  124. data/sdks/openstack.net/scripts/bootstrap.ps1 +2 -0
  125. data/sdks/openstack.net/scripts/wrapper +7 -0
  126. data/sdks/openstack.net/scripts/wrapper.ps1 +1 -0
  127. data/sdks/php-opencloud/.gitignore +4 -0
  128. data/sdks/php-opencloud/challenges/all_connections.php +64 -0
  129. data/sdks/php-opencloud/challenges/authenticate_token.php +14 -0
  130. data/sdks/php-opencloud/challenges/create_server.php +39 -0
  131. data/sdks/php-opencloud/challenges/get_object_metadata.php +19 -0
  132. data/sdks/php-opencloud/composer.json +5 -0
  133. data/sdks/php-opencloud/scripts/bootstrap +4 -0
  134. data/sdks/php-opencloud/scripts/bootstrap.ps1 +2 -0
  135. data/sdks/php-opencloud/scripts/wrapper +2 -0
  136. data/sdks/php-opencloud/scripts/wrapper.ps1 +1 -0
  137. data/sdks/pkgcloud/.gitignore +1 -0
  138. data/sdks/pkgcloud/challenges/authenticate_token.js +17 -0
  139. data/sdks/pkgcloud/challenges/get_object_metadata.js +18 -0
  140. data/sdks/pkgcloud/scripts/bootstrap +2 -0
  141. data/sdks/pkgcloud/scripts/bootstrap.ps1 +1 -0
  142. data/sdks/pkgcloud/scripts/wrapper +2 -0
  143. data/sdks/pkgcloud/scripts/wrapper.ps1 +1 -0
  144. data/sdks/pyrax/.gitignore +2 -0
  145. data/sdks/pyrax/challenges/all_connections.py +61 -0
  146. data/sdks/pyrax/challenges/authenticate_token.py +17 -0
  147. data/sdks/pyrax/challenges/cdn_enable_container.py +22 -0
  148. data/sdks/pyrax/challenges/create_a_container.py +21 -0
  149. data/sdks/pyrax/challenges/create_server.py +35 -0
  150. data/sdks/pyrax/challenges/get_object_metadata.py +17 -0
  151. data/sdks/pyrax/challenges/upload_folder.py +32 -0
  152. data/sdks/pyrax/requirements.txt +21 -0
  153. data/sdks/pyrax/scripts/bootstrap +9 -0
  154. data/sdks/pyrax/scripts/bootstrap.ps1 +7 -0
  155. data/sdks/pyrax/scripts/wrapper +3 -0
  156. data/sdks/pyrax/scripts/wrapper.ps1 +2 -0
  157. data/spec/fixtures/factorial.py +18 -0
  158. data/spec/fixtures/polytrix.yml +16 -0
  159. data/spec/fixtures/src-doc/quine.md.erb +20 -0
  160. data/spec/polytrix/challenge_builder_spec.rb +16 -0
  161. data/spec/polytrix/challenge_runner_spec.rb +14 -0
  162. data/spec/polytrix/challenge_spec.rb +20 -0
  163. data/spec/polytrix/configuration_spec.rb +10 -0
  164. data/spec/polytrix/documentation_generator_spec.rb +36 -0
  165. data/spec/polytrix/file_finder_spec.rb +24 -0
  166. data/spec/polytrix/manifest_spec.rb +26 -0
  167. data/spec/polytrix/middleware/feature_executor_spec.rb +48 -0
  168. data/spec/polytrix_spec.rb +13 -0
  169. data/spec/rspec_spec.rb +17 -0
  170. data/spec/spec_helper.rb +7 -0
  171. metadata +325 -0
@@ -0,0 +1,24 @@
1
+ module Polytrix
2
+ module Core
3
+ describe FileFinder do
4
+ subject(:finder) do
5
+ Object.new.extend(Polytrix::Core::FileFinder)
6
+ end
7
+
8
+ it 'finds files within the search path' do
9
+ search_path = 'spec/fixtures/src-doc'
10
+ file = finder.find_file search_path, 'quine'
11
+ expect(file.relative_path_from path(search_path)).to eq(path('quine.md.erb'))
12
+ end
13
+
14
+ it 'raises FileNotFound except if a file is not found' do
15
+ expect { finder.find_file 'spec/fixtures/src-doc', 'quinez' }.to raise_error FileFinder::FileNotFound
16
+ end
17
+
18
+ private
19
+ def path(p)
20
+ Pathname.new p
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,26 @@
1
+ module Polytrix
2
+ module Core
3
+ describe Manifest do
4
+ describe '#from_yaml' do
5
+ subject(:manifest) { described_class.from_yaml 'spec/fixtures/polytrix.yml' }
6
+
7
+ it 'initializes a manifest' do
8
+ expect(manifest).to be_an_instance_of Polytrix::Manifest
9
+ end
10
+
11
+ it 'processes ERB' do
12
+ expect(manifest.global_env['LOCALE']).to eq(ENV['LANG'])
13
+ end
14
+
15
+ it 'parses global_env' do
16
+ expect(manifest.global_env).to be_an_instance_of Polytrix::Manifest::Environment
17
+ end
18
+
19
+ it 'parses suites' do
20
+ expect(manifest.suites).to be_an_instance_of Polytrix::Manifest::Suites
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,48 @@
1
+ module Polytrix
2
+ module Runners
3
+ module Middleware
4
+ describe FeatureExecutor do
5
+ let(:app) { double('Middleware Chain') }
6
+ let(:challenge_runner) { double('ChallengeRunner') }
7
+ subject(:middleware) { described_class.new app }
8
+
9
+ describe '#call' do
10
+ let(:env) do
11
+ {
12
+ basedir: Pathname.new('spec/fixtures'),
13
+ env_file: 'tmp/vars.sh',
14
+ source_file: Pathname.new('spec/fixtures/test.js'),
15
+ command: 'some command to execute',
16
+ challenge_runner: challenge_runner
17
+ }
18
+ end
19
+
20
+ before do
21
+ allow(challenge_runner).to receive(:challenge_command).with(env[:env_file], Pathname.new('test.js')).and_return('some command to execute')
22
+ allow(challenge_runner).to receive(:run_command).with('some command to execute').and_return Polytrix::Result.new(process: 'a', source: 'b', data: 'c')
23
+ allow(app).to receive(:call).with(env)
24
+ end
25
+
26
+ # Most of this belongs in the ChallengeRunner...
27
+ xit 'finds the challenge' do
28
+ end
29
+
30
+ xit 'setups the env vars' do
31
+ end
32
+
33
+ xit 'gets the command' do
34
+ end
35
+
36
+ it 'returns a result' do
37
+ expect(middleware.call(env)).to be_an_instance_of Polytrix::Result
38
+ end
39
+
40
+ it 'continues the middleware chain' do
41
+ expect(app).to receive(:call).with env
42
+ middleware.call(env)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Polytrix do
4
+ describe '.load_manifest' do
5
+ it 'parses the YAML file' do
6
+ expect do
7
+ described_class.load_manifest 'spec/fixtures/polytrix.yml'
8
+ end.to change {
9
+ described_class.manifest
10
+ }.from(nil).to(be_an_instance_of(Polytrix::Manifest))
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ # This is more of an integration test, but makes sure the rspec API is working.
4
+ # Expect results to all be pending, because there's no implementors in this proj.
5
+
6
+ describe 'Katas' do
7
+ code_sample 'Hello World' do |execution_result|
8
+ # You can make assertions about the process using the Mixlib::ShellOut API
9
+ expect(execution_result.process.stdout).to include 'Hello, world!'
10
+ expect(execution_result.process.stderr).to be_empty
11
+ expect(execution_result.process.exitstatus).to eq(0)
12
+ end
13
+
14
+ code_sample 'Quine' do |execution_result|
15
+ expect(execution_result.process.stdout).to eq File.read(execution_result.source)
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ require 'polytrix'
5
+ require 'polytrix/rspec'
6
+
7
+ Polytrix.implementors = Dir['sdks/*'].map{|sdk| File.basename sdk}
metadata ADDED
@@ -0,0 +1,325 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: polytrix
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Max Lincoln
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mixlib-shellout
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: middleware
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.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.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.14'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.14'
55
+ - !ruby/object:Gem::Dependency
56
+ name: hashie
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.5'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.5'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
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
+ description: A polyglot test runner for sample code
98
+ email:
99
+ - max@devopsy.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - ".groc.json"
106
+ - ".rspec"
107
+ - ".rspec_parallel"
108
+ - Gemfile
109
+ - README.md
110
+ - Rakefile
111
+ - Vagrantfile
112
+ - features/0_identity_spec.rb
113
+ - features/1_cloud_files_spec.rb
114
+ - features/2_servers_spec.rb
115
+ - features/features_helper.rb
116
+ - features/helpers/cloudfiles_helper.rb
117
+ - features/helpers/pacto_helper.rb
118
+ - features/helpers/teardown_helper.rb
119
+ - features/pacto/extensions/loaders/api_blueprint_loader.rb
120
+ - features/pacto/extensions/loaders/simple_loader.rb
121
+ - features/pacto/extensions/loaders/yaml_or_json_loader.rb
122
+ - features/pacto/extensions/matchers.rb
123
+ - features/phase2/feature_coverage_report.rb
124
+ - features/phase2/run_all_features.rb
125
+ - features/static_site/fixtures/index.html
126
+ - lib/polytrix.rb
127
+ - lib/polytrix/challenge.rb
128
+ - lib/polytrix/challenge_builder.rb
129
+ - lib/polytrix/challenge_runner.rb
130
+ - lib/polytrix/configuration.rb
131
+ - lib/polytrix/core/file_finder.rb
132
+ - lib/polytrix/core/implementor.rb
133
+ - lib/polytrix/core/result_tracker.rb
134
+ - lib/polytrix/documentation_generator.rb
135
+ - lib/polytrix/manifest.rb
136
+ - lib/polytrix/result.rb
137
+ - lib/polytrix/rspec.rb
138
+ - lib/polytrix/rspec/documentation_formatter.rb
139
+ - lib/polytrix/runners/linux_challenge_runner.rb
140
+ - lib/polytrix/runners/middleware/change_directory.rb
141
+ - lib/polytrix/runners/middleware/feature_executor.rb
142
+ - lib/polytrix/runners/middleware/pacto.rb
143
+ - lib/polytrix/runners/middleware/setup_env_vars.rb
144
+ - lib/polytrix/runners/windows_challenge_runner.rb
145
+ - lib/polytrix/version.rb
146
+ - packer/.gitignore
147
+ - packer/Berksfile
148
+ - packer/Gemfile
149
+ - packer/Vagrantfile
150
+ - packer/cookbooks/drg/metadata.rb
151
+ - packer/cookbooks/drg/recipes/admins.rb
152
+ - packer/cookbooks/drg/recipes/default.rb
153
+ - packer/cookbooks/drg/recipes/dotnet.rb
154
+ - packer/cookbooks/drg/recipes/golang.rb
155
+ - packer/cookbooks/drg/recipes/java.rb
156
+ - packer/cookbooks/drg/recipes/php.rb
157
+ - packer/cookbooks/drg/recipes/ruby.rb
158
+ - packer/cookbooks/drg/recipes/system.rb
159
+ - packer/create_box.sh
160
+ - packer/http/preseed.cfg
161
+ - packer/packer.json
162
+ - packer/scripts/root_setup.sh
163
+ - packer/scripts/setup.sh
164
+ - pacto/config/pacto_server.rb
165
+ - pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/extensions.json
166
+ - pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/flavors/id.json
167
+ - pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/images/id.json
168
+ - pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/servers.json
169
+ - pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/servers/id.json
170
+ - pacto/contracts/dns.api.rackspacecloud.com/v1.0/_tenant_id/domains.json
171
+ - pacto/contracts/identity.api.rackspacecloud.com/v2.0/tokens.json
172
+ - pacto/contracts/monitoring.api.rackspacecloud.com/v1.0/_tenant_id/account.json
173
+ - pacto/contracts/ord.autoscale.api.rackspacecloud.com/v1.0/_tenant_id/groups.json
174
+ - pacto/contracts/ord.blockstorage.api.rackspacecloud.com/v1/_tenant_id/volumes.json
175
+ - pacto/contracts/ord.databases.api.rackspacecloud.com/v1.0/_tenant_id/instances.json
176
+ - pacto/contracts/ord.loadbalancers.api.rackspacecloud.com/v1.0/_tenant_id/loadbalancers.json
177
+ - pacto/contracts/ord.queues.api.rackspacecloud.com/v1/_tenant_id/queues.json
178
+ - pacto/contracts/ord.servers.api.rackspacecloud.com/v2/_tenant_id/os-networksv2.json
179
+ - pacto/contracts/ord.servers.api.rackspacecloud.com/v2/_tenant_id/servers/detail.json
180
+ - pacto/contracts/storage101.dfw1.clouddrive.com/v1/mosso_account.json
181
+ - pacto/contracts/storage101.dfw1.clouddrive.com/v1/mosso_account/container/object.json
182
+ - pacto/contracts/storage101.ord1.clouddrive.com/v1/_mosso_id.json
183
+ - pacto/pacto_server.rb
184
+ - pacto/rackspace_uri_map.yaml
185
+ - polytrix.gemspec
186
+ - scripts/bootstrap
187
+ - scripts/cibuild
188
+ - sdks/fog/.gitignore
189
+ - sdks/fog/Gemfile
190
+ - sdks/fog/challenges/all_connections.rb
191
+ - sdks/fog/challenges/authenticate_token.rb
192
+ - sdks/fog/challenges/cdn_enable_container.rb
193
+ - sdks/fog/challenges/create_a_container.rb
194
+ - sdks/fog/challenges/create_server.rb
195
+ - sdks/fog/challenges/get_object_metadata.rb
196
+ - sdks/fog/challenges/list_containers.rb
197
+ - sdks/fog/challenges/provision_scalable_webapp.rb
198
+ - sdks/fog/challenges/upload_folder.rb
199
+ - sdks/fog/scripts/bootstrap
200
+ - sdks/fog/scripts/bootstrap.ps1
201
+ - sdks/fog/scripts/wrapper
202
+ - sdks/fog/scripts/wrapper.ps1
203
+ - sdks/gophercloud/.gitignore
204
+ - sdks/gophercloud/challenges/authenticate_token.go
205
+ - sdks/gophercloud/scripts/bootstrap
206
+ - sdks/gophercloud/scripts/wrapper
207
+ - sdks/jclouds/.gitignore
208
+ - sdks/jclouds/challenges/AuthenticateToken.java
209
+ - sdks/jclouds/pom.xml
210
+ - sdks/jclouds/scripts/bootstrap
211
+ - sdks/jclouds/scripts/wrapper
212
+ - sdks/openstack.net/.gitignore
213
+ - sdks/openstack.net/.nuget/Microsoft.Build.dll
214
+ - sdks/openstack.net/.nuget/NuGet.Config
215
+ - sdks/openstack.net/.nuget/NuGet.exe
216
+ - sdks/openstack.net/.nuget/NuGet.targets
217
+ - sdks/openstack.net/Challenge.cs
218
+ - sdks/openstack.net/RunChallenge.cs
219
+ - sdks/openstack.net/challenges/AuthenticateToken.cs
220
+ - sdks/openstack.net/challenges/Weird.cs
221
+ - sdks/openstack.net/openstack.net.csproj
222
+ - sdks/openstack.net/openstack.net.sln
223
+ - sdks/openstack.net/openstack.net.userprefs
224
+ - sdks/openstack.net/packages.config
225
+ - sdks/openstack.net/scripts/bootstrap
226
+ - sdks/openstack.net/scripts/bootstrap.ps1
227
+ - sdks/openstack.net/scripts/wrapper
228
+ - sdks/openstack.net/scripts/wrapper.ps1
229
+ - sdks/php-opencloud/.gitignore
230
+ - sdks/php-opencloud/challenges/all_connections.php
231
+ - sdks/php-opencloud/challenges/authenticate_token.php
232
+ - sdks/php-opencloud/challenges/create_server.php
233
+ - sdks/php-opencloud/challenges/get_object_metadata.php
234
+ - sdks/php-opencloud/composer.json
235
+ - sdks/php-opencloud/scripts/bootstrap
236
+ - sdks/php-opencloud/scripts/bootstrap.ps1
237
+ - sdks/php-opencloud/scripts/wrapper
238
+ - sdks/php-opencloud/scripts/wrapper.ps1
239
+ - sdks/pkgcloud/.gitignore
240
+ - sdks/pkgcloud/challenges/authenticate_token.js
241
+ - sdks/pkgcloud/challenges/get_object_metadata.js
242
+ - sdks/pkgcloud/scripts/bootstrap
243
+ - sdks/pkgcloud/scripts/bootstrap.ps1
244
+ - sdks/pkgcloud/scripts/wrapper
245
+ - sdks/pkgcloud/scripts/wrapper.ps1
246
+ - sdks/pyrax/.gitignore
247
+ - sdks/pyrax/challenges/all_connections.py
248
+ - sdks/pyrax/challenges/authenticate_token.py
249
+ - sdks/pyrax/challenges/cdn_enable_container.py
250
+ - sdks/pyrax/challenges/create_a_container.py
251
+ - sdks/pyrax/challenges/create_server.py
252
+ - sdks/pyrax/challenges/get_object_metadata.py
253
+ - sdks/pyrax/challenges/upload_folder.py
254
+ - sdks/pyrax/requirements.txt
255
+ - sdks/pyrax/scripts/bootstrap
256
+ - sdks/pyrax/scripts/bootstrap.ps1
257
+ - sdks/pyrax/scripts/wrapper
258
+ - sdks/pyrax/scripts/wrapper.ps1
259
+ - spec/fixtures/factorial.py
260
+ - spec/fixtures/polytrix.yml
261
+ - spec/fixtures/src-doc/quine.md.erb
262
+ - spec/polytrix/challenge_builder_spec.rb
263
+ - spec/polytrix/challenge_runner_spec.rb
264
+ - spec/polytrix/challenge_spec.rb
265
+ - spec/polytrix/configuration_spec.rb
266
+ - spec/polytrix/documentation_generator_spec.rb
267
+ - spec/polytrix/file_finder_spec.rb
268
+ - spec/polytrix/manifest_spec.rb
269
+ - spec/polytrix/middleware/feature_executor_spec.rb
270
+ - spec/polytrix_spec.rb
271
+ - spec/rspec_spec.rb
272
+ - spec/spec_helper.rb
273
+ homepage: ''
274
+ licenses:
275
+ - MIT
276
+ metadata: {}
277
+ post_install_message:
278
+ rdoc_options: []
279
+ require_paths:
280
+ - lib
281
+ required_ruby_version: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ required_rubygems_version: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - ">="
289
+ - !ruby/object:Gem::Version
290
+ version: '0'
291
+ requirements: []
292
+ rubyforge_project:
293
+ rubygems_version: 2.2.0
294
+ signing_key:
295
+ specification_version: 4
296
+ summary: A polyglot test runner for sample code
297
+ test_files:
298
+ - features/0_identity_spec.rb
299
+ - features/1_cloud_files_spec.rb
300
+ - features/2_servers_spec.rb
301
+ - features/features_helper.rb
302
+ - features/helpers/cloudfiles_helper.rb
303
+ - features/helpers/pacto_helper.rb
304
+ - features/helpers/teardown_helper.rb
305
+ - features/pacto/extensions/loaders/api_blueprint_loader.rb
306
+ - features/pacto/extensions/loaders/simple_loader.rb
307
+ - features/pacto/extensions/loaders/yaml_or_json_loader.rb
308
+ - features/pacto/extensions/matchers.rb
309
+ - features/phase2/feature_coverage_report.rb
310
+ - features/phase2/run_all_features.rb
311
+ - features/static_site/fixtures/index.html
312
+ - spec/fixtures/factorial.py
313
+ - spec/fixtures/polytrix.yml
314
+ - spec/fixtures/src-doc/quine.md.erb
315
+ - spec/polytrix/challenge_builder_spec.rb
316
+ - spec/polytrix/challenge_runner_spec.rb
317
+ - spec/polytrix/challenge_spec.rb
318
+ - spec/polytrix/configuration_spec.rb
319
+ - spec/polytrix/documentation_generator_spec.rb
320
+ - spec/polytrix/file_finder_spec.rb
321
+ - spec/polytrix/manifest_spec.rb
322
+ - spec/polytrix/middleware/feature_executor_spec.rb
323
+ - spec/polytrix_spec.rb
324
+ - spec/rspec_spec.rb
325
+ - spec/spec_helper.rb