lbspec 0.1.3 → 0.1.4

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.
data/README.md CHANGED
@@ -29,7 +29,9 @@ You can use lbspec to test load balancers.
29
29
  You can use following chains with `#transfer`.
30
30
 
31
31
  - port
32
- - Tests if a virtual host transfers requests to specified port on target nodes.
32
+ - Tests if a virtual host transfers requests to specified port on target nodes.
33
+ - include
34
+ - Tests if a virtual host transfers requests include string.
33
35
  - tcp
34
36
  - Tests with tcp packets for the virtual host.
35
37
  - udp
@@ -25,11 +25,12 @@ RSpec::Matchers.define :transfer do |nodes|
25
25
  @request_node = nil
26
26
  @include_str = nil
27
27
  @output_request = ''
28
+ @output_capture = []
28
29
  @options = {}
29
30
 
30
31
  @capture_command = lambda do |port, prove|
31
32
  port_str = port > 0 ? "port #{port}" : ''
32
- "sudo ngrep #{prove} #{port_str} | grep -v \"match:\""
33
+ "sudo ngrep -W byline #{prove} #{port_str} | grep -v \"match:\""
33
34
  end
34
35
 
35
36
  @udp_request_command = lambda do |addr, port, prove|
@@ -140,21 +141,31 @@ RSpec::Matchers.define :transfer do |nodes|
140
141
  @threads << Thread.new do
141
142
  Net::SSH.start(node, nil, config: true) do |ssh|
142
143
  @ssh << ssh
143
- ssh.open_channel { |channel| run_check channel }
144
+ ssh.open_channel do |channel|
145
+ output = run_check channel
146
+ @output_capture.push(node: node, output: output)
147
+ end
144
148
  end
145
149
  end
146
150
  end
147
151
 
148
152
  def run_check(channel)
153
+ output = ''
149
154
  channel.request_pty do |chan, success|
150
155
  fail 'Could not obtain pty' unless success
151
156
  @nodes_connected.push(true)
152
- exec_capture(chan)
157
+ output = exec_capture(chan)
153
158
  end
159
+ output
154
160
  end
155
161
 
156
162
  def exec_capture(channel)
157
163
  command = capture_command(@node_port, @prove)
164
+ output = exec_capture_command(channel, command)
165
+ command + "\n" + output
166
+ end
167
+
168
+ def exec_capture_command(channel, command)
158
169
  channel.exec command do |ch, stream, data|
159
170
  whole_data = ''
160
171
  ch.on_data do |c, d|
@@ -163,6 +174,7 @@ RSpec::Matchers.define :transfer do |nodes|
163
174
  patterns << @include_str if @include_str
164
175
  @result = match_all?(whole_data, patterns)
165
176
  end
177
+ whole_data
166
178
  end
167
179
  end
168
180
 
@@ -225,19 +237,25 @@ RSpec::Matchers.define :transfer do |nodes|
225
237
 
226
238
  failure_message_for_should do |vhost|
227
239
  result = "expected #{vhost} to transfer requests to"
228
- result << nodes.to_s
229
- result << @chain_str
230
- result << ", but did not.\n"
231
- result << "requested:\n"
232
- result << @output_request
240
+ result <<
241
+ result_string(nodes, @chain_str, @output_request, @output_capture)
233
242
  end
234
243
 
235
244
  failure_message_for_should_not do |vhost|
236
245
  result = "expected #{vhost} not to transfer requests to"
237
- result << nodes.to_s
238
- result << @chain_str
239
- result << ", but did.\n"
240
- result << "requested:\n"
241
- result << @output_request
246
+ result <<
247
+ result_string(nodes, @chain_str, @output_request, @output_capture)
248
+ end
249
+
250
+ def result_string(nodes, chain_str, request_str, capture_str)
251
+ result = nodes.to_s + chain_str
252
+ result << ", but did.\n" + "requested:\n"
253
+ result << request_str.gsub(/^/, ' ')
254
+ result << "\ncaptured:\n"
255
+ @output_capture.each do |o|
256
+ result << o[:node].gsub(/^/, ' ') + "\n"
257
+ result << o[:output].gsub(/^/, ' ') + "\n"
258
+ end
259
+ result
242
260
  end
243
261
  end
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  # Lbspec is an RSpec plugin for easy Loadbalancer testing.
3
3
  module Lbspec
4
- VERSION = '0.1.3'
4
+ VERSION = '0.1.4'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lbspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
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: 2014-03-27 00:00:00.000000000 Z
12
+ date: 2014-03-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -184,7 +184,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
184
  version: '0'
185
185
  segments:
186
186
  - 0
187
- hash: -4298291710759407848
187
+ hash: 2692456461482340401
188
188
  required_rubygems_version: !ruby/object:Gem::Requirement
189
189
  none: false
190
190
  requirements:
@@ -193,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
193
  version: '0'
194
194
  segments:
195
195
  - 0
196
- hash: -4298291710759407848
196
+ hash: 2692456461482340401
197
197
  requirements: []
198
198
  rubyforge_project:
199
199
  rubygems_version: 1.8.21