antismoker 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,2 +1,5 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+
4
+ $LOAD_PATH.push(File.expand_path("lib", File.dirname(__FILE__)))
5
+ load "tasks/antismoker.rake"
@@ -16,4 +16,10 @@ Gem::Specification.new do |gem|
16
16
  gem.version = AntiSmoker::VERSION
17
17
 
18
18
  gem.add_dependency("rake")
19
+ gem.add_development_dependency("capistrano")
20
+ gem.add_development_dependency("capistrano-platform-resources", ">= 0.1.0")
21
+ gem.add_development_dependency("capistrano-rbenv", ">= 0.1.0")
22
+ gem.add_development_dependency("net-scp", "~> 1.0.4")
23
+ gem.add_development_dependency("net-ssh", "~> 2.2.2")
24
+ gem.add_development_dependency("vagrant", "~> 1.0.6")
19
25
  end
@@ -34,7 +34,7 @@ module AntiSmoker
34
34
  while Time.now < deadline
35
35
  STDOUT.putc(?.)
36
36
  STDOUT.flush
37
- sleep(n / 3)
37
+ sleep(n.to_f / 3)
38
38
  end
39
39
  end
40
40
 
@@ -1,3 +1,3 @@
1
1
  module AntiSmoker
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1,5 @@
1
+ /.bundle
2
+ /.vagrant
3
+ /known_hosts
4
+ /tmp
5
+ /vendor
@@ -0,0 +1,2 @@
1
+ load "deploy"
2
+ load "../config/deploy"
@@ -0,0 +1,2 @@
1
+ source "https://rubygems.org"
2
+ gemspec(:path => "../..")
@@ -0,0 +1,99 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ Vagrant::Config.run do |config|
5
+ # All Vagrant configuration is done here. The most common configuration
6
+ # options are documented and commented below. For a complete reference,
7
+ # please see the online documentation at vagrantup.com.
8
+
9
+ # Every Vagrant virtual environment requires a box to build off of.
10
+ config.vm.box = "centos6-64"
11
+
12
+ # The url from where the 'config.vm.box' box will be fetched if it
13
+ # doesn't already exist on the user's system.
14
+ config.vm.box_url = "http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.3-x86_64-v20130101.box"
15
+
16
+ # Boot with a GUI so you can see the screen. (Default is headless)
17
+ # config.vm.boot_mode = :gui
18
+
19
+ # Assign this VM to a host-only network IP, allowing you to access it
20
+ # via the IP. Host-only networks can talk to the host machine as well as
21
+ # any other machines on the same network, but cannot be accessed (through this
22
+ # network interface) by any external networks.
23
+ config.vm.network :hostonly, "192.168.33.10"
24
+
25
+ # Assign this VM to a bridged network, allowing you to connect directly to a
26
+ # network using the host's network device. This makes the VM appear as another
27
+ # physical device on your network.
28
+ # config.vm.network :bridged
29
+
30
+ # Forward a port from the guest to the host, which allows for outside
31
+ # computers to access the VM, whereas host only networking does not.
32
+ # config.vm.forward_port 80, 8080
33
+
34
+ # Share an additional folder to the guest VM. The first argument is
35
+ # an identifier, the second is the path on the guest to mount the
36
+ # folder, and the third is the path on the host to the actual folder.
37
+ # config.vm.share_folder "v-data", "/vagrant_data", "../data"
38
+
39
+ # Enable provisioning with Puppet stand alone. Puppet manifests
40
+ # are contained in a directory path relative to this Vagrantfile.
41
+ # You will need to create the manifests directory and a manifest in
42
+ # the file precise-amd64.pp in the manifests_path directory.
43
+ #
44
+ # An example Puppet manifest to provision the message of the day:
45
+ #
46
+ # # group { "puppet":
47
+ # # ensure => "present",
48
+ # # }
49
+ # #
50
+ # # File { owner => 0, group => 0, mode => 0644 }
51
+ # #
52
+ # # file { '/etc/motd':
53
+ # # content => "Welcome to your Vagrant-built virtual machine!
54
+ # # Managed by Puppet.\n"
55
+ # # }
56
+ #
57
+ # config.vm.provision :puppet do |puppet|
58
+ # puppet.manifests_path = "manifests"
59
+ # puppet.manifest_file = "precise-amd64.pp"
60
+ # end
61
+
62
+ # Enable provisioning with chef solo, specifying a cookbooks path, roles
63
+ # path, and data_bags path (all relative to this Vagrantfile), and adding
64
+ # some recipes and/or roles.
65
+ #
66
+ # config.vm.provision :chef_solo do |chef|
67
+ # chef.cookbooks_path = "../my-recipes/cookbooks"
68
+ # chef.roles_path = "../my-recipes/roles"
69
+ # chef.data_bags_path = "../my-recipes/data_bags"
70
+ # chef.add_recipe "mysql"
71
+ # chef.add_role "web"
72
+ #
73
+ # # You may also specify custom JSON attributes:
74
+ # chef.json = { :mysql_password => "foo" }
75
+ # end
76
+
77
+ # Enable provisioning with chef server, specifying the chef server URL,
78
+ # and the path to the validation key (relative to this Vagrantfile).
79
+ #
80
+ # The Opscode Platform uses HTTPS. Substitute your organization for
81
+ # ORGNAME in the URL and validation key.
82
+ #
83
+ # If you have your own Chef Server, use the appropriate URL, which may be
84
+ # HTTP instead of HTTPS depending on your configuration. Also change the
85
+ # validation key to validation.pem.
86
+ #
87
+ # config.vm.provision :chef_client do |chef|
88
+ # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
89
+ # chef.validation_key_path = "ORGNAME-validator.pem"
90
+ # end
91
+ #
92
+ # If you're using the Opscode platform, your validator client is
93
+ # ORGNAME-validator, replacing ORGNAME with your organization name.
94
+ #
95
+ # IF you have your own Chef Server, the default validation client name is
96
+ # chef-validator, unless you changed the configuration.
97
+ #
98
+ # chef.validation_client_name = "ORGNAME-validator"
99
+ end
@@ -0,0 +1,7 @@
1
+ #!/bin/sh -e
2
+
3
+ bundle exec vagrant up
4
+ bundle exec cap test_all
5
+ bundle exec vagrant halt
6
+
7
+ # vim:set ft=sh :
@@ -0,0 +1,215 @@
1
+ set :application, "antismoker"
2
+ set :repository, File.expand_path("../..", File.dirname(__FILE__))
3
+ set :deploy_to do
4
+ File.join("/home", user, application)
5
+ end
6
+ set :deploy_via, :copy
7
+ set :scm, :none
8
+ set :use_sudo, false
9
+ set :user, "vagrant"
10
+ set :password, "vagrant"
11
+ set :ssh_options, {
12
+ :auth_methods => %w(publickey password),
13
+ :keys => File.join(ENV["HOME"], ".vagrant.d", "insecure_private_key"),
14
+ :user_known_hosts_file => "/dev/null"
15
+ }
16
+
17
+ ## rbenv ##
18
+ require "capistrano-rbenv"
19
+ set(:rbenv_ruby_version, "1.9.3-p392")
20
+ set(:rbenv_install_bundler, true)
21
+
22
+ role :web, "192.168.33.10"
23
+ role :app, "192.168.33.10"
24
+ role :db, "192.168.33.10", :primary => true
25
+
26
+ $LOAD_PATH.push(File.expand_path("../../lib", File.dirname(__FILE__)))
27
+ require "antismoker/capistrano"
28
+ require "benchmark"
29
+ set(:rails_env, "production")
30
+ set(:antismoker_http_count, 7)
31
+ set(:antismoker_http_delay, 4)
32
+ set(:antismoker_http_period, 2)
33
+ set(:antismoker_http_timeout, 1)
34
+
35
+ def setup_service!
36
+ case platform_family
37
+ when :debian
38
+ platform.packages.install("apache2")
39
+ when :redhat
40
+ platform.packages.install("httpd")
41
+ run("#{sudo} touch /var/www/html/index.html")
42
+ run("#{sudo} service httpd restart || #{sudo} service httpd start")
43
+ else
44
+ end
45
+ end
46
+
47
+ def reset_all!()
48
+ variables.each_key do |key|
49
+ reset!(key)
50
+ end
51
+ end
52
+
53
+ def assert_equals(x, y)
54
+ raise("assert_equals(#{x.inspect}, #{y.inspect}) failed.") if x != y
55
+ end
56
+
57
+ def assert_not_equals(x, y)
58
+ raise("assert_not_equals(#{x.inspect}, #{y.inspect}) failed.") if x == y
59
+ end
60
+
61
+ def assert_in_time(min, max, &block)
62
+ s = Benchmark.realtime do
63
+ yield
64
+ end
65
+ raise("assert_in_time(#{min}, #{max}) failed. (s=#{s})") if min > s or s > max
66
+ end
67
+
68
+ def assert_aborts(&block)
69
+ begin
70
+ yield
71
+ rescue SystemExit
72
+ aborted = true
73
+ ensure
74
+ raise("assert_aborts failed.") unless aborted
75
+ end
76
+ end
77
+
78
+ def assert_aborts_in_time(min, max, &block)
79
+ assert_in_time(min, max) do
80
+ assert_aborts(&block)
81
+ end
82
+ end
83
+
84
+ def configure(s, options={})
85
+ s = s.to_yaml unless s.is_a?(String)
86
+ top.run("mkdir -p #{File.join(release_path, "config").dump}", options)
87
+ top.put(s, File.join(release_path, "config/antismoker.yml"), options)
88
+ end
89
+
90
+ def antismoker_yml
91
+ {
92
+ fetch(:rails_env, "production") => {
93
+ "127.0.0.1" => {
94
+ "http" => {
95
+ :port => fetch(:antismoker_http_port, 80),
96
+ :path => fetch(:antismoker_http_path, "/"),
97
+ :count => fetch(:antismoker_http_count, 3),
98
+ :delay => fetch(:antismoker_http_delay, 0.0),
99
+ :period => fetch(:antismoker_http_period, 3.0),
100
+ :timeout => fetch(:antismoker_http_timeout, 5.0),
101
+ }
102
+ }
103
+ }
104
+ }.to_yaml
105
+ end
106
+
107
+ on(:load) {
108
+ run("rm -rf #{deploy_to.dump}")
109
+ }
110
+
111
+ task(:test_all) {
112
+ find_and_execute_task("test_default")
113
+ find_and_execute_task("test_rollback")
114
+ }
115
+
116
+ namespace(:test_default) {
117
+ task(:default) {
118
+ methods.grep(/^test_/).each do |m|
119
+ send(m)
120
+ end
121
+ }
122
+ before "test_default", "test_default:setup"
123
+ after "test_default", "test_default:teardown"
124
+
125
+ task(:setup) {
126
+ setup_service!
127
+ find_and_execute_task("deploy:setup")
128
+ configure({rails_env => {}}) # an empty test
129
+ find_and_execute_task("deploy")
130
+ }
131
+
132
+ task(:teardown) {
133
+ }
134
+
135
+ task(:test_success) {
136
+ set(:antismoker_http_port, 80)
137
+ set(:antismoker_http_path, "/")
138
+ set(:antismoker_use_rollback, false)
139
+ configure(antismoker_yml)
140
+ min = antismoker_http_delay
141
+ max = antismoker_http_delay + antismoker_http_timeout
142
+ assert_in_time(min, max) do
143
+ find_and_execute_task("antismoker:invoke")
144
+ end
145
+ }
146
+
147
+ task(:test_failure_with_invalid_port) {
148
+ set(:antismoker_http_port, 8080)
149
+ set(:antismoker_http_path, "/")
150
+ set(:antismoker_use_rollback, false)
151
+ configure(antismoker_yml)
152
+ min = antismoker_http_delay + antismoker_http_count * antismoker_http_period
153
+ max = antismoker_http_delay + antismoker_http_count * (antismoker_http_period + antismoker_http_timeout)
154
+ assert_aborts_in_time(min, max) do
155
+ find_and_execute_task("antismoker:invoke")
156
+ end
157
+ }
158
+
159
+ task(:test_failure_with_invalid_path) {
160
+ set(:antismoker_http_port, 80)
161
+ set(:antismoker_http_path, "/MUST_NOT_EXIST")
162
+ configure(antismoker_yml)
163
+ min = antismoker_http_delay + antismoker_http_count * antismoker_http_period
164
+ max = antismoker_http_delay + antismoker_http_count * (antismoker_http_period + antismoker_http_timeout)
165
+ assert_aborts_in_time(min, max) do
166
+ find_and_execute_task("antismoker:invoke")
167
+ end
168
+ }
169
+ }
170
+
171
+ namespace(:test_rollback) {
172
+ task(:default) {
173
+ methods.grep(/^test_/).each do |m|
174
+ send(m)
175
+ end
176
+ }
177
+ before "test_rollback", "test_rollback:setup"
178
+ after "test_rollback", "test_rollback:teardown"
179
+
180
+ task(:setup) {
181
+ setup_service!
182
+ find_and_execute_task("deploy:setup")
183
+ }
184
+
185
+ task(:teardown) {
186
+ }
187
+
188
+ task(:test_success) {
189
+ original_release = fetch(:current_release)
190
+ reset_all!
191
+ set(:antismoker_http_port, 80)
192
+ set(:antismoker_http_path, "/")
193
+ set(:antismoker_use_rollback, true)
194
+ configure(antismoker_yml)
195
+ find_and_execute_task("deploy")
196
+ reset_all!
197
+ assert_not_equals(current_release, original_release)
198
+ }
199
+
200
+ task(:test_failure) {
201
+ original_release = fetch(:current_release)
202
+ reset_all!
203
+ set(:antismoker_http_port, 8080)
204
+ set(:antismoker_http_path, "/")
205
+ set(:antismoker_use_rollback, true)
206
+ configure(antismoker_yml)
207
+ assert_aborts do
208
+ find_and_execute_task("deploy")
209
+ end
210
+ reset_all!
211
+ assert_equals(current_release, original_release)
212
+ }
213
+ }
214
+
215
+ # vim:set ft=ruby sw=2 ts=2 :
@@ -0,0 +1,5 @@
1
+ /.bundle
2
+ /.vagrant
3
+ /known_hosts
4
+ /tmp
5
+ /vendor
@@ -0,0 +1,2 @@
1
+ load "deploy"
2
+ load "../config/deploy"
@@ -0,0 +1,2 @@
1
+ source "https://rubygems.org"
2
+ gemspec(:path => "../..")
@@ -0,0 +1,99 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ Vagrant::Config.run do |config|
5
+ # All Vagrant configuration is done here. The most common configuration
6
+ # options are documented and commented below. For a complete reference,
7
+ # please see the online documentation at vagrantup.com.
8
+
9
+ # Every Vagrant virtual environment requires a box to build off of.
10
+ config.vm.box = "precise64"
11
+
12
+ # The url from where the 'config.vm.box' box will be fetched if it
13
+ # doesn't already exist on the user's system.
14
+ config.vm.box_url = "http://files.vagrantup.com/precise64.box"
15
+
16
+ # Boot with a GUI so you can see the screen. (Default is headless)
17
+ # config.vm.boot_mode = :gui
18
+
19
+ # Assign this VM to a host-only network IP, allowing you to access it
20
+ # via the IP. Host-only networks can talk to the host machine as well as
21
+ # any other machines on the same network, but cannot be accessed (through this
22
+ # network interface) by any external networks.
23
+ config.vm.network :hostonly, "192.168.33.10"
24
+
25
+ # Assign this VM to a bridged network, allowing you to connect directly to a
26
+ # network using the host's network device. This makes the VM appear as another
27
+ # physical device on your network.
28
+ # config.vm.network :bridged
29
+
30
+ # Forward a port from the guest to the host, which allows for outside
31
+ # computers to access the VM, whereas host only networking does not.
32
+ # config.vm.forward_port 80, 8080
33
+
34
+ # Share an additional folder to the guest VM. The first argument is
35
+ # an identifier, the second is the path on the guest to mount the
36
+ # folder, and the third is the path on the host to the actual folder.
37
+ # config.vm.share_folder "v-data", "/vagrant_data", "../data"
38
+
39
+ # Enable provisioning with Puppet stand alone. Puppet manifests
40
+ # are contained in a directory path relative to this Vagrantfile.
41
+ # You will need to create the manifests directory and a manifest in
42
+ # the file precise-amd64.pp in the manifests_path directory.
43
+ #
44
+ # An example Puppet manifest to provision the message of the day:
45
+ #
46
+ # # group { "puppet":
47
+ # # ensure => "present",
48
+ # # }
49
+ # #
50
+ # # File { owner => 0, group => 0, mode => 0644 }
51
+ # #
52
+ # # file { '/etc/motd':
53
+ # # content => "Welcome to your Vagrant-built virtual machine!
54
+ # # Managed by Puppet.\n"
55
+ # # }
56
+ #
57
+ # config.vm.provision :puppet do |puppet|
58
+ # puppet.manifests_path = "manifests"
59
+ # puppet.manifest_file = "precise-amd64.pp"
60
+ # end
61
+
62
+ # Enable provisioning with chef solo, specifying a cookbooks path, roles
63
+ # path, and data_bags path (all relative to this Vagrantfile), and adding
64
+ # some recipes and/or roles.
65
+ #
66
+ # config.vm.provision :chef_solo do |chef|
67
+ # chef.cookbooks_path = "../my-recipes/cookbooks"
68
+ # chef.roles_path = "../my-recipes/roles"
69
+ # chef.data_bags_path = "../my-recipes/data_bags"
70
+ # chef.add_recipe "mysql"
71
+ # chef.add_role "web"
72
+ #
73
+ # # You may also specify custom JSON attributes:
74
+ # chef.json = { :mysql_password => "foo" }
75
+ # end
76
+
77
+ # Enable provisioning with chef server, specifying the chef server URL,
78
+ # and the path to the validation key (relative to this Vagrantfile).
79
+ #
80
+ # The Opscode Platform uses HTTPS. Substitute your organization for
81
+ # ORGNAME in the URL and validation key.
82
+ #
83
+ # If you have your own Chef Server, use the appropriate URL, which may be
84
+ # HTTP instead of HTTPS depending on your configuration. Also change the
85
+ # validation key to validation.pem.
86
+ #
87
+ # config.vm.provision :chef_client do |chef|
88
+ # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
89
+ # chef.validation_key_path = "ORGNAME-validator.pem"
90
+ # end
91
+ #
92
+ # If you're using the Opscode platform, your validator client is
93
+ # ORGNAME-validator, replacing ORGNAME with your organization name.
94
+ #
95
+ # IF you have your own Chef Server, the default validation client name is
96
+ # chef-validator, unless you changed the configuration.
97
+ #
98
+ # chef.validation_client_name = "ORGNAME-validator"
99
+ end
@@ -0,0 +1,7 @@
1
+ #!/bin/sh -e
2
+
3
+ bundle exec vagrant up
4
+ bundle exec cap test_all
5
+ bundle exec vagrant halt
6
+
7
+ # vim:set ft=sh :
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: antismoker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-09 00:00:00.000000000 Z
12
+ date: 2013-04-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -27,6 +27,102 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: capistrano
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: capistrano-platform-resources
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 0.1.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.1.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: capistrano-rbenv
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: 0.1.0
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 0.1.0
78
+ - !ruby/object:Gem::Dependency
79
+ name: net-scp
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 1.0.4
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 1.0.4
94
+ - !ruby/object:Gem::Dependency
95
+ name: net-ssh
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 2.2.2
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 2.2.2
110
+ - !ruby/object:Gem::Dependency
111
+ name: vagrant
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 1.0.6
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 1.0.6
30
126
  description: Yet another HTTP smoke testing framework.
31
127
  email:
32
128
  - yamashita@geishatokyo.com
@@ -49,6 +145,17 @@ files:
49
145
  - lib/antismoker/tests/http.rb
50
146
  - lib/antismoker/version.rb
51
147
  - lib/tasks/antismoker.rake
148
+ - test/centos6-64/.gitignore
149
+ - test/centos6-64/Capfile
150
+ - test/centos6-64/Gemfile
151
+ - test/centos6-64/Vagrantfile
152
+ - test/centos6-64/run.sh
153
+ - test/config/deploy.rb
154
+ - test/precise64/.gitignore
155
+ - test/precise64/Capfile
156
+ - test/precise64/Gemfile
157
+ - test/precise64/Vagrantfile
158
+ - test/precise64/run.sh
52
159
  homepage: https://github.com/yyuu/antismoker
53
160
  licenses: []
54
161
  post_install_message:
@@ -73,5 +180,15 @@ rubygems_version: 1.8.23
73
180
  signing_key:
74
181
  specification_version: 3
75
182
  summary: Yet another HTTP smoke testing framework.
76
- test_files: []
77
- has_rdoc:
183
+ test_files:
184
+ - test/centos6-64/.gitignore
185
+ - test/centos6-64/Capfile
186
+ - test/centos6-64/Gemfile
187
+ - test/centos6-64/Vagrantfile
188
+ - test/centos6-64/run.sh
189
+ - test/config/deploy.rb
190
+ - test/precise64/.gitignore
191
+ - test/precise64/Capfile
192
+ - test/precise64/Gemfile
193
+ - test/precise64/Vagrantfile
194
+ - test/precise64/run.sh