infrataster 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ce1087098d32e5590380749af3c3d864cb877ff
4
- data.tar.gz: 3db9a8a5b018a199ce49a90853b0906c820d22fb
3
+ metadata.gz: 09a246ee278ac5692659d4002fbe88abe092955d
4
+ data.tar.gz: b410d985ebfd8285de301a37bf5e539d81216336
5
5
  SHA512:
6
- metadata.gz: 6d03e0bee9d2b39ffaaf1f628c541532702aafe38771f4dc870125cc1e647d20cb1650fbbe9598fb31c5473b6208e26f5e97bf2d180424dc42a070be6f4480d5
7
- data.tar.gz: 50e50689ea235aafbf3aa1729716e7996021310e532bf539be391bdc9a8958cfb73bc813e5e0e5a9994172d3d3ec4c648402d4f6a1a6320d720a2907627612f8
6
+ metadata.gz: c821d85b3b61b7869f07d5e1394ad5fe534727e03f39885149c4d06b4beab92eb277da764c9109629422479f6eadfcd36debf2d043f5129fb755b3f938269b87
7
+ data.tar.gz: 3264f6f21d6f416ac97316a7b10fd39f88bd25260cd17d9d14c3c73237ca5a71c802c8f35741f890828ff5f91c95f8f2cb3dead15115366205fdb47d9e6fecf1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Infrataster Changelog
2
2
 
3
+ ## v0.1.4
4
+
5
+ * Include RSpec::Matchers to use be_xxx matchers. (by @KitaitiMakoto)
6
+ * Don't raise any error for subjects which is not related to Infrataster. (by @KitaitiMakoto)
7
+
3
8
  ## v0.1.3
4
9
 
5
10
  * Don't create multiple phantomjs and browsermob proxy. `capybara` resources become faster.
data/README.md CHANGED
@@ -4,9 +4,7 @@
4
4
 
5
5
  Infrastructure Behavior Testing Framework.
6
6
 
7
- ## Usage
8
-
9
- **You can see [example directory](example) too.**
7
+ ## Basic Usage with Vagrant
10
8
 
11
9
  First, create `Gemfile`:
12
10
 
@@ -22,6 +20,32 @@ Install gems:
22
20
  $ bundle install
23
21
  ```
24
22
 
23
+ Install Vagrant: [Official Docs](http://docs.vagrantup.com/v2/installation/index.html)
24
+
25
+ Create Vagrantfile:
26
+
27
+ ```ruby
28
+ # Vagrantfile
29
+ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
30
+ config.vm.box = "hashicorp/precise64"
31
+
32
+ config.vm.define :proxy do |c|
33
+ c.vm.network "private_network", ip: "192.168.33.10"
34
+ c.vm.network "private_network", ip: "171.16.33.10", virtualbox__intnet: "infrataster-example"
35
+ end
36
+
37
+ config.vm.define :app do |c|
38
+ c.vm.network "private_network", ip: "171.16.33.11", virtualbox__intnet: "infrataster-example"
39
+ end
40
+ end
41
+ ```
42
+
43
+ Start VMs:
44
+
45
+ ```
46
+ $ vagrant up
47
+ ```
48
+
25
49
  Initialize rspec directory:
26
50
 
27
51
  ```
@@ -47,21 +71,8 @@ Infrataster::Server.define(
47
71
  vagrant: true, # for vagrant VM
48
72
  from: :proxy # access to this machine via SSH port forwarding from proxy
49
73
  )
50
- Infrataster::Server.define(
51
- :db, # name
52
- '172.16.33.12', # ip address
53
- vagrant: true, # for vagrant VM
54
- from: :app, # access to this machine via SSH port forwarding from app
55
- mysql: {user: 'app', password: 'app'}
56
- # settings for MySQL
57
- )
58
- ```
59
-
60
- If you use `capybara`, you should download and extract [BrowserMob Proxy](http://bmp.lightbody.net/) and set `Infrataster::BrowsermobProxy.bin_path` to binary path in `spec/spec_helper.rb`:
61
74
 
62
- ```ruby
63
- # spec/spec_helper.rb
64
- Infrataster::BrowsermobProxy.bin_path = '/path/to/browsermob/bin/browsermob'
75
+ # Code generated by `rspec --init` is following...
65
76
  ```
66
77
 
67
78
  Then, you can write spec files:
@@ -76,75 +87,174 @@ describe server(:app) do
76
87
  expect(response.body).to include('Hello Sinatra')
77
88
  end
78
89
  it "responds as 'text/html'" do
79
- expect(response.header.content_type).to eq('text/html')
80
- end
81
- end
82
- describe capybara('http://app') do
83
- it "responds content including 'Hello Sinatra'" do
84
- visit '/'
85
- expect(page).to have_content('Hello Sinatra')
90
+ expect(response.headers['content-type']).to match(%r{^text/html})
86
91
  end
87
92
  end
88
93
  end
94
+ ```
89
95
 
90
- describe server(:db) do
91
- describe mysql_query('SHOW STATUS') do
92
- it 'responds uptime' do
93
- row = results.find {|r| r['Variable_name'] == 'Uptime' }
94
- expect(row['Value'].to_i).to be > 0
95
- end
96
- end
97
- end
96
+ Run tests:
98
97
 
99
- describe server(:proxy) do
100
- describe http('http://app') do
98
+ ```
99
+ $ bundle exec rspec
100
+ 2 examples, 2 failures
101
+ ```
102
+
103
+ Currently, the tests failed because the VM doesn't respond to HTTP request.
104
+
105
+ It's time to write provisioning instruction like Chef's cookbooks or Puppet's manifests!
106
+
107
+ ## Server
108
+
109
+ "Server" is a server you tests. This supports Vagrant, which is very useful to run servers for testing. Of course, you can test real servers.
110
+
111
+ You should define servers in `spec_helper.rb` like the following:
112
+
113
+ ```ruby
114
+ Infrataster::Server.define(
115
+ # Name of the server, this will be used in the spec files.
116
+ :proxy,
117
+ # IP address of the server
118
+ '192.168.44.10',
119
+ # If the server is provided by vagrant and this option is true,
120
+ # SSH configuration to connect to this server is got from `vagrant ssh-config` command automatically.
121
+ vagrant: true,
122
+ )
123
+
124
+ Infrataster::Server.define(
125
+ # Name of the server, this will be used in the spec files.
126
+ :app,
127
+ # IP address of the server
128
+ '172.16.44.11',
129
+ # If the server is provided by vagrant and this option is true,
130
+ # SSH configuration to connect to this server is got from `vagrant ssh-config` command automatically.
131
+ vagrant: true,
132
+ # Which gateway is used to connect to this server by SSH port forwarding?
133
+ from: :proxy,
134
+ # options for resources
135
+ mysql: {user: 'app', password: 'app'},
136
+ )
137
+ ```
138
+
139
+ You can specify SSH configuration manually too:
140
+
141
+ ```ruby
142
+ Infrataster::Server.define(
143
+ # ...
144
+ ssh: {host: 'hostname', user: 'testuser', keys: ['/path/to/id_rsa']}
145
+ )
146
+ ```
147
+
148
+ ## Resources
149
+
150
+ "Resource" is what you test by Infrataster. For instance, the following code describes `http` resource.
151
+
152
+ ```ruby
153
+ describe server(:app) do
154
+ describe http('http://example.com') do
101
155
  it "responds content including 'Hello Sinatra'" do
102
156
  expect(response.body).to include('Hello Sinatra')
103
157
  end
104
158
  end
105
- describe http('http://static') do
106
- it "responds content including 'Welcome to nginx!'" do
107
- expect(response.body).to include('Welcome to nginx!')
159
+ end
160
+ ```
161
+
162
+ ### `http` resource
163
+
164
+ `http` resource tests HTTP response when sending HTTP request.
165
+ It accepts `method`, `params` and `header` as options.
166
+
167
+ ```ruby
168
+ describe server(:app) do
169
+ describe http(
170
+ 'http://app.example.com',
171
+ method: :post,
172
+ params: {'foo' => 'bar'},
173
+ headers: {'USER' => 'VALUE'}
174
+ ) do
175
+ it "responds with content including 'app'" do
176
+ expect(response.body).to include('app')
177
+
178
+ # `response` is a instance of `Faraday::Response`
179
+ # See: https://github.com/lostisland/faraday/blob/master/lib/faraday/response.rb
108
180
  end
109
181
  end
110
- describe capybara('http://app') do
111
- it "responds content including 'Hello Sinatra'" do
182
+ end
183
+ ```
184
+
185
+ ### `capybara` resource
186
+
187
+ `capybara` resource tests your web application by simulating real user's interaction.
188
+
189
+ ```ruby
190
+ describe server(:app) do
191
+ describe capybara('http://app.example.com') do
192
+ it 'shows food list' do
112
193
  visit '/'
113
- expect(page).to have_content('Hello Sinatra')
194
+ click_link 'Foods'
195
+ expect(page).to have_content 'Yummy Soup'
114
196
  end
115
197
  end
116
- describe capybara('http://static') do
117
- it "responds content including 'Welcome to nginx!'" do
118
- visit '/'
119
- expect(page).to have_content('Welcome to nginx!')
198
+ end
199
+ ```
200
+
201
+ If you use `capybara`, you should download and extract [BrowserMob Proxy](http://bmp.lightbody.net/) and set `Infrataster::BrowsermobProxy.bin_path` to binary path in `spec/spec_helper.rb`:
202
+
203
+ ```ruby
204
+ # spec/spec_helper.rb
205
+ Infrataster::BrowsermobProxy.bin_path = '/path/to/browsermob/bin/browsermob'
206
+ ```
207
+
208
+ (BrowserMob Proxy is needed to manipulate Host HTTP header.)
209
+
210
+ ### `mysql_query` resource
211
+
212
+ `mysql_query` resource tests responce for mysql query.
213
+
214
+ ```ruby
215
+ describe server(:db) do
216
+ describe mysql_query('SHOW STATUS') do
217
+ it 'returns positive uptime' do
218
+ row = results.find {|r| r['Variable_name'] == 'Uptime' }
219
+ expect(row['Value'].to_i).to be > 0
220
+
221
+ # `results` is a instance of `Mysql2::Result`
222
+ # See: https://github.com/brianmario/mysql2
120
223
  end
121
224
  end
122
225
  end
123
226
  ```
124
227
 
228
+ You can specify username and password by options passed to `Infrataster::Server.define`:
229
+
230
+ ```ruby
231
+ Infrataster::Server.define(
232
+ # ...
233
+ mysql: {user: 'app', password: 'app'}
234
+ )
235
+ ```
236
+
125
237
  ## Example
126
238
 
127
- [infrataster/example](example)
239
+ * [example](example)
240
+ * [spec/integration](spec/integration)
128
241
 
129
- ## How to Run Tests
242
+ ## Tests
130
243
 
131
244
  ### Unit Tests
132
245
 
246
+ Unit tests are under `spec/unit` directory.
247
+
133
248
  ```
134
249
  $ bundle exec rake spec:unit
135
250
  ```
136
251
 
137
252
  ### Integration Tests
138
253
 
139
- Start and provision VMs:
254
+ Integration tests are under `spec/integration` directory.
140
255
 
141
256
  ```
142
257
  $ bundle exec rake spec:integration:prepare
143
- ```
144
-
145
- Run tests:
146
-
147
- ```
148
258
  $ bundle exec rake spec:integration
149
259
  ```
150
260
 
@@ -152,6 +262,10 @@ $ bundle exec rake spec:integration
152
262
 
153
263
  * https://speakerdeck.com/ryotarai/infrataster-infra-behavior-testing-framework-number-oedo04
154
264
 
265
+ ## Changelog
266
+
267
+ [Changelog](CHANGELOG.md)
268
+
155
269
  ## Contributing
156
270
 
157
271
  1. Fork it ( http://github.com/ryotarai/infrataster/fork )
data/Rakefile CHANGED
@@ -20,6 +20,9 @@ namespace :spec do
20
20
  namespace :integration do
21
21
  integration_dir = 'spec/integration'
22
22
 
23
+ task :clean => ['destroy_vm', 'remove_berks'] do
24
+ end
25
+
23
26
  task :prepare => ['download_browsermob', 'start_vm'] do
24
27
  end
25
28
 
@@ -56,6 +59,16 @@ namespace :spec do
56
59
  puts yellow('Starting VM...')
57
60
  system '/usr/bin/vagrant up'
58
61
  end
62
+
63
+ task :destroy_vm do
64
+ puts yellow('Destroying VM...')
65
+ system '/usr/bin/vagrant destroy -f'
66
+ end
67
+
68
+ task :remove_berks do
69
+ dir = File.join(integration_dir, 'vm/vendor/cookbooks')
70
+ FileUtils.rm_rf(dir)
71
+ end
59
72
  end
60
73
  end
61
74
 
data/ci/jenkins_build ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ def exec(cmd, exit_if_fail = true)
4
+ env = {'CI' => 'true'}
5
+ system env, cmd
6
+ if exit_if_fail && $?.exitstatus != 0
7
+ puts "`#{cmd}` failed"
8
+ exit $?.exitstatus
9
+ end
10
+
11
+ $?.exitstatus
12
+ end
13
+
14
+ exec 'bundle install --path=vendor/bundle --jobs=4'
15
+
16
+ exec 'bundle exec rake spec:unit'
17
+
18
+ exec 'bundle exec rake spec:integration:prepare'
19
+ status = exec('bundle exec rake spec:integration', false)
20
+ exec 'bundle exec rake spec:integration:clean'
21
+ exit status
22
+
@@ -21,7 +21,7 @@ module Infrataster
21
21
 
22
22
  private
23
23
  def start_server
24
- BrowserMob::Proxy::Server.new(find_bin).tap do |server|
24
+ BrowserMob::Proxy::Server.new(find_bin, timeout: 60).tap do |server|
25
25
  server.start
26
26
  end
27
27
  end
@@ -40,7 +40,8 @@ module Infrataster
40
40
  proxy = BrowsermobProxy.proxy
41
41
  proxy.header({"Host" => resource.uri.host})
42
42
 
43
- address, port, @gateway_finalize_proc = server.from_gateway_open(resource.uri.port)
43
+ address, port, @gateway_finalize_proc =
44
+ server.open_gateway_on_from_server(resource.uri.port)
44
45
  Capybara.app_host = "http://#{address}:#{port}"
45
46
  end
46
47
 
@@ -48,8 +49,10 @@ module Infrataster
48
49
  @gateway_finalize_proc.call if @gateway_finalize_proc
49
50
  end
50
51
 
51
- def method_missing(method, *args)
52
- session.public_send(method, *args)
52
+ Capybara::Session::DSL_METHODS.each do |method|
53
+ define_method method do |*args, &block|
54
+ page.send method, *args, &block
55
+ end
53
56
  end
54
57
  end
55
58
  end
@@ -4,7 +4,7 @@ module Infrataster
4
4
  module Contexts
5
5
  class HttpContext < BaseContext
6
6
  def response
7
- server.from_gateway(resource.uri.port) do |address, port|
7
+ server.gateway_on_from_server(resource.uri.port) do |address, port|
8
8
  url = "#{resource.uri.scheme}://#{address}:#{port}"
9
9
 
10
10
  conn = Faraday.new(:url => url) do |faraday|
@@ -9,7 +9,7 @@ module Infrataster
9
9
  options = options.merge(server.options[:mysql])
10
10
  end
11
11
 
12
- server.from_gateway(options[:port]) do |address, new_port|
12
+ server.gateway_on_from_server(options[:port]) do |address, new_port|
13
13
  client = Mysql2::Client.new(
14
14
  host: address,
15
15
  port: new_port,
@@ -10,10 +10,12 @@ module Infrataster
10
10
  def from_example(example)
11
11
  example_group = example.metadata[:example_group]
12
12
 
13
- server = find_described(Resources::ServerResource, example_group).server
13
+ server_resource = find_described(Resources::ServerResource, example_group)
14
14
  resource = find_described(Resources::BaseResource, example_group)
15
15
 
16
- resource.context_class.new(server, resource)
16
+ return if [server_resource, resource].any? &:nil?
17
+
18
+ resource.context_class.new(server_resource.server, resource)
17
19
  end
18
20
 
19
21
  private
@@ -25,8 +27,6 @@ module Infrataster
25
27
  parent_example_group = example_group[:example_group]
26
28
  if parent_example_group
27
29
  find_described(resource_class, parent_example_group)
28
- else
29
- raise Error
30
30
  end
31
31
  end
32
32
  end
@@ -3,6 +3,8 @@ require 'infrataster/resources'
3
3
  module Infrataster
4
4
  module Helpers
5
5
  module ResourceHelper
6
+ include RSpec::Matchers
7
+
6
8
  def server(*args)
7
9
  Resources::ServerResource.new(*args)
8
10
  end
@@ -83,7 +83,7 @@ module Infrataster
83
83
  end
84
84
  end
85
85
 
86
- def from_gateway_open(port)
86
+ def open_gateway_on_from_server(port)
87
87
  if from
88
88
  new_port, finalize_proc = from.gateway_open(@address, port)
89
89
  Logger.debug("tunnel: localhost:#{new_port} -> #{from.address} -> #{@address}:#{port}")
@@ -93,7 +93,7 @@ module Infrataster
93
93
  end
94
94
  end
95
95
 
96
- def from_gateway(port)
96
+ def gateway_on_from_server(port)
97
97
  if from
98
98
  from.gateway_open(@address, port) do |new_port|
99
99
  Logger.debug("tunnel: localhost:#{new_port} -> #{from.address} -> #{@address}:#{port}")
@@ -1,3 +1,3 @@
1
1
  module Infrataster
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -1,6 +1,12 @@
1
1
  require 'integration/spec_helper'
2
2
  require 'json'
3
3
 
4
+ describe 'Normal subject not related to Infrataster' do
5
+ it "doesn't raise any error" do
6
+ expect(subject).not_to raise_error
7
+ end
8
+ end
9
+
4
10
  describe server(:proxy) do
5
11
  describe http('http://app.example.com') do
6
12
  it "sends GET request with Host header" do
@@ -24,10 +30,12 @@ describe server(:app) do
24
30
  end
25
31
  end
26
32
 
27
- describe http('http://app.example.com', params: {'foo' => 'bar'}, headers: {'USER' => 'VALUE'}) do
33
+ describe http('http://app.example.com/path/to/resource', params: {'foo' => 'bar'}, headers: {'USER' => 'VALUE'}) do
28
34
  it "sends GET request with params" do
29
35
  expect(body_as_json['method']).to eq('GET')
36
+ expect(body_as_json['path']).to eq('/path/to/resource')
30
37
  expect(body_as_json['params']).to eq({"foo" => "bar"})
38
+ expect(body_as_json['headers']['USER']).not_to be_empty
31
39
  expect(body_as_json['headers']['USER']).to eq('VALUE')
32
40
  end
33
41
  end
@@ -36,6 +44,7 @@ describe server(:app) do
36
44
  it "sends POST request with params" do
37
45
  expect(body_as_json['method']).to eq('POST')
38
46
  expect(body_as_json['params']).to eq({"foo" => "bar"})
47
+ expect(body_as_json['headers']['USER']).not_to be_empty
39
48
  expect(body_as_json['headers']['USER']).to eq('VALUE')
40
49
  end
41
50
  end
@@ -0,0 +1,11 @@
1
+ require 'integration/spec_helper'
2
+
3
+ describe server(:app) do
4
+ describe mysql_query('SHOW STATUS') do
5
+ it 'responds uptime' do
6
+ row = results.find {|r| r['Variable_name'] == 'Uptime' }
7
+ expect(row['Value'].to_i).to be > 0
8
+ end
9
+ end
10
+ end
11
+
@@ -9,7 +9,8 @@ Infrataster::Server.define(
9
9
  :app,
10
10
  '172.16.44.11',
11
11
  vagrant: true,
12
- from: :proxy
12
+ from: :proxy,
13
+ mysql: {user: 'app', password: 'app'},
13
14
  )
14
15
 
15
16
  Infrataster::BrowsermobProxy.bin_path = File.expand_path('../vm/vendor/browsermob/bin/browsermob-proxy', __FILE__)
@@ -1,3 +1,2 @@
1
- vendor/*
2
1
  .vagrant
3
2
  Berksfile.lock
@@ -11,7 +11,11 @@ INTERNAL_ADDRESSES = {
11
11
  }
12
12
 
13
13
  Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
14
- config.vm.box = "hashicorp/precise64"
14
+ if ENV['CI']
15
+ config.vm.box = "hashicorp/precise32"
16
+ else
17
+ config.vm.box = "hashicorp/precise64"
18
+ end
15
19
 
16
20
  config.vm.define :proxy do |c|
17
21
  c.vm.network "private_network", ip: "192.168.44.10"
@@ -2,25 +2,25 @@ require 'sinatra'
2
2
  require 'json'
3
3
 
4
4
  get '/' do
5
- result = {
6
- 'app' => 'sinatra',
7
- 'method' => 'GET',
8
- 'params' => params,
9
- 'headers' => RequestWrapper.new(request).headers,
10
- }
5
+ result.to_json
6
+ end
11
7
 
8
+ get '/path/to/resource' do
12
9
  result.to_json
13
10
  end
14
11
 
15
12
  post '/' do
16
- result = {
13
+ result.to_json
14
+ end
15
+
16
+ def result
17
+ {
17
18
  'app' => 'sinatra',
18
- 'method' => 'POST',
19
+ 'method' => request.request_method,
20
+ 'path' => request.path_info,
19
21
  'params' => params,
20
22
  'headers' => RequestWrapper.new(request).headers,
21
23
  }
22
-
23
- result.to_json
24
24
  end
25
25
 
26
26
  class RequestWrapper
@@ -0,0 +1,127 @@
1
+ #
2
+ # The MySQL database server configuration file.
3
+ #
4
+ # You can copy this to one of:
5
+ # - "/etc/mysql/my.cnf" to set global options,
6
+ # - "~/.my.cnf" to set user-specific options.
7
+ #
8
+ # One can use all long options that the program supports.
9
+ # Run program with --help to get a list of available options and with
10
+ # --print-defaults to see which it would actually understand and use.
11
+ #
12
+ # For explanations see
13
+ # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
14
+
15
+ # This will be passed to all mysql clients
16
+ # It has been reported that passwords should be enclosed with ticks/quotes
17
+ # escpecially if they contain "#" chars...
18
+ # Remember to edit /etc/mysql/debian.cnf when changing the socket location.
19
+ [client]
20
+ port = 3306
21
+ socket = /var/run/mysqld/mysqld.sock
22
+
23
+ # Here is entries for some specific programs
24
+ # The following values assume you have at least 32M ram
25
+
26
+ # This was formally known as [safe_mysqld]. Both versions are currently parsed.
27
+ [mysqld_safe]
28
+ socket = /var/run/mysqld/mysqld.sock
29
+ nice = 0
30
+
31
+ [mysqld]
32
+ #
33
+ # * Basic Settings
34
+ #
35
+ user = mysql
36
+ pid-file = /var/run/mysqld/mysqld.pid
37
+ socket = /var/run/mysqld/mysqld.sock
38
+ port = 3306
39
+ basedir = /usr
40
+ datadir = /var/lib/mysql
41
+ tmpdir = /tmp
42
+ lc-messages-dir = /usr/share/mysql
43
+ skip-external-locking
44
+ #
45
+ # Instead of skip-networking the default is now to listen only on
46
+ # localhost which is more compatible and is not less secure.
47
+ bind-address = 0.0.0.0
48
+ #
49
+ # * Fine Tuning
50
+ #
51
+ key_buffer = 16M
52
+ max_allowed_packet = 16M
53
+ thread_stack = 192K
54
+ thread_cache_size = 8
55
+ # This replaces the startup script and checks MyISAM tables if needed
56
+ # the first time they are touched
57
+ myisam-recover = BACKUP
58
+ #max_connections = 100
59
+ #table_cache = 64
60
+ #thread_concurrency = 10
61
+ #
62
+ # * Query Cache Configuration
63
+ #
64
+ query_cache_limit = 1M
65
+ query_cache_size = 16M
66
+ #
67
+ # * Logging and Replication
68
+ #
69
+ # Both location gets rotated by the cronjob.
70
+ # Be aware that this log type is a performance killer.
71
+ # As of 5.1 you can enable the log at runtime!
72
+ #general_log_file = /var/log/mysql/mysql.log
73
+ #general_log = 1
74
+ #
75
+ # Error log - should be very few entries.
76
+ #
77
+ log_error = /var/log/mysql/error.log
78
+ #
79
+ # Here you can see queries with especially long duration
80
+ #log_slow_queries = /var/log/mysql/mysql-slow.log
81
+ #long_query_time = 2
82
+ #log-queries-not-using-indexes
83
+ #
84
+ # The following can be used as easy to replay backup logs or for replication.
85
+ # note: if you are setting up a replication slave, see README.Debian about
86
+ # other settings you may need to change.
87
+ #server-id = 1
88
+ #log_bin = /var/log/mysql/mysql-bin.log
89
+ expire_logs_days = 10
90
+ max_binlog_size = 100M
91
+ #binlog_do_db = include_database_name
92
+ #binlog_ignore_db = include_database_name
93
+ #
94
+ # * InnoDB
95
+ #
96
+ # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
97
+ # Read the manual for more InnoDB related options. There are many!
98
+ #
99
+ # * Security Features
100
+ #
101
+ # Read the manual, too, if you want chroot!
102
+ # chroot = /var/lib/mysql/
103
+ #
104
+ # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
105
+ #
106
+ # ssl-ca=/etc/mysql/cacert.pem
107
+ # ssl-cert=/etc/mysql/server-cert.pem
108
+ # ssl-key=/etc/mysql/server-key.pem
109
+
110
+
111
+
112
+ [mysqldump]
113
+ quick
114
+ quote-names
115
+ max_allowed_packet = 16M
116
+
117
+ [mysql]
118
+ #no-auto-rehash # faster start of mysql but no tab completition
119
+
120
+ [isamchk]
121
+ key_buffer = 16M
122
+
123
+ #
124
+ # * IMPORTANT: Additional settings that can override those from this file!
125
+ # The files must end with '.cnf', otherwise they'll be ignored.
126
+ #
127
+ !includedir /etc/mysql/conf.d/
@@ -33,3 +33,17 @@ end
33
33
 
34
34
  execute 'supervisorctl restart rackup'
35
35
 
36
+ # db
37
+ package 'mysql-server'
38
+
39
+ service 'mysql' do
40
+ action :start
41
+ supports :restart => true
42
+ end
43
+
44
+ cookbook_file '/etc/mysql/my.cnf' do
45
+ notifies :restart, 'service[mysql]'
46
+ end
47
+
48
+ execute "mysql -uroot -e \"GRANT ALL PRIVILEGES ON *.* TO 'app'@'%' IDENTIFIED BY 'app';\""
49
+
@@ -0,0 +1,2 @@
1
+ *
2
+ !.gitignore
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infrataster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Arai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-28 00:00:00.000000000 Z
11
+ date: 2014-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -178,6 +178,7 @@ files:
178
178
  - LICENSE.txt
179
179
  - README.md
180
180
  - Rakefile
181
+ - ci/jenkins_build
181
182
  - infrataster.gemspec
182
183
  - lib/infrataster.rb
183
184
  - lib/infrataster/browsermob_proxy.rb
@@ -200,6 +201,7 @@ files:
200
201
  - lib/infrataster/version.rb
201
202
  - spec/integration/capybara_spec.rb
202
203
  - spec/integration/http_spec.rb
204
+ - spec/integration/mysql_query_spec.rb
203
205
  - spec/integration/spec_helper.rb
204
206
  - spec/integration/vm/.gitignore
205
207
  - spec/integration/vm/Berksfile
@@ -207,12 +209,14 @@ files:
207
209
  - spec/integration/vm/app/Gemfile
208
210
  - spec/integration/vm/app/app.rb
209
211
  - spec/integration/vm/app/config.ru
212
+ - spec/integration/vm/cookbooks/app/files/default/my.cnf
210
213
  - spec/integration/vm/cookbooks/app/files/default/rackup.conf
211
214
  - spec/integration/vm/cookbooks/app/recipes/default.rb
212
215
  - spec/integration/vm/cookbooks/apt-mirror/recipes/default.rb
213
216
  - spec/integration/vm/cookbooks/proxy/files/default/index.html
214
217
  - spec/integration/vm/cookbooks/proxy/recipes/default.rb
215
218
  - spec/integration/vm/cookbooks/proxy/templates/default/integration-test.erb
219
+ - spec/integration/vm/vendor/.gitignore
216
220
  - spec/unit/lib/infrataster/server_spec.rb
217
221
  - spec/unit/spec_helper.rb
218
222
  homepage: https://github.com/ryotarai/infrataster
@@ -242,6 +246,7 @@ summary: Infrastructure Behavior Testing Framework
242
246
  test_files:
243
247
  - spec/integration/capybara_spec.rb
244
248
  - spec/integration/http_spec.rb
249
+ - spec/integration/mysql_query_spec.rb
245
250
  - spec/integration/spec_helper.rb
246
251
  - spec/integration/vm/.gitignore
247
252
  - spec/integration/vm/Berksfile
@@ -249,11 +254,13 @@ test_files:
249
254
  - spec/integration/vm/app/Gemfile
250
255
  - spec/integration/vm/app/app.rb
251
256
  - spec/integration/vm/app/config.ru
257
+ - spec/integration/vm/cookbooks/app/files/default/my.cnf
252
258
  - spec/integration/vm/cookbooks/app/files/default/rackup.conf
253
259
  - spec/integration/vm/cookbooks/app/recipes/default.rb
254
260
  - spec/integration/vm/cookbooks/apt-mirror/recipes/default.rb
255
261
  - spec/integration/vm/cookbooks/proxy/files/default/index.html
256
262
  - spec/integration/vm/cookbooks/proxy/recipes/default.rb
257
263
  - spec/integration/vm/cookbooks/proxy/templates/default/integration-test.erb
264
+ - spec/integration/vm/vendor/.gitignore
258
265
  - spec/unit/lib/infrataster/server_spec.rb
259
266
  - spec/unit/spec_helper.rb