lbspec 0.0.2 → 0.0.3
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/Rakefile +22 -0
- data/lbspec.gemspec +1 -0
- data/lib/lbspec/transfer.rb +52 -5
- data/lib/lbspec/version.rb +1 -1
- data/spec/lbspec_transfer_spec.rb +18 -0
- metadata +23 -1
data/Rakefile
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
# -*- coding: utf-8 -*-
|
3
3
|
|
4
4
|
require 'rake'
|
5
|
+
require 'highline/import'
|
5
6
|
|
6
7
|
task :default => :travis
|
7
8
|
task :travis => [:spec, :rubocop, 'coveralls:push']
|
@@ -19,3 +20,24 @@ end
|
|
19
20
|
Rubocop::RakeTask.new(:rubocop) do |task|
|
20
21
|
task.patterns = %w(lib/**/*.rb spec/**/*.rb)
|
21
22
|
end
|
23
|
+
|
24
|
+
task :release do |t|
|
25
|
+
puts "Releaseing gem"
|
26
|
+
require_relative 'lib/lbspec'
|
27
|
+
version_current = Lbspec::VERSION
|
28
|
+
puts "now v#{version_current}"
|
29
|
+
version_new = ask("Input version")
|
30
|
+
|
31
|
+
file_path = 'lib/lbspec/version.rb'
|
32
|
+
text = File.read(file_path)
|
33
|
+
text = text.gsub(/#{version_current}/, version_new)
|
34
|
+
File.open(file_path, "w") {|file| file.puts text}
|
35
|
+
|
36
|
+
sh('gem build lbspec.gemspec')
|
37
|
+
if agree("Shall we continue? ( yes or no )")
|
38
|
+
puts "Pushing gem..."
|
39
|
+
sh("gem push lbspec-#{version_new}.gem")
|
40
|
+
else
|
41
|
+
puts "Exiting"
|
42
|
+
end
|
43
|
+
end
|
data/lbspec.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_development_dependency "rubocop"
|
25
25
|
spec.add_development_dependency "coveralls"
|
26
26
|
spec.add_development_dependency "debugger"
|
27
|
+
spec.add_development_dependency "highline"
|
27
28
|
|
28
29
|
spec.add_runtime_dependency "rspec"
|
29
30
|
spec.add_runtime_dependency "net-ssh"
|
data/lib/lbspec/transfer.rb
CHANGED
@@ -7,6 +7,9 @@ RSpec::Matchers.define :transfer do |nodes|
|
|
7
7
|
@ssh = []
|
8
8
|
@threads = []
|
9
9
|
@nodes_connected = []
|
10
|
+
@protocol = nil
|
11
|
+
@application = nil
|
12
|
+
@http_path = '/'
|
10
13
|
@vhost_port = 80
|
11
14
|
@node_port = 0
|
12
15
|
@result = false
|
@@ -25,6 +28,28 @@ RSpec::Matchers.define :transfer do |nodes|
|
|
25
28
|
@node_port = port
|
26
29
|
end
|
27
30
|
|
31
|
+
chain :tcp do
|
32
|
+
@protocol = :tcp
|
33
|
+
end
|
34
|
+
|
35
|
+
chain :udp do
|
36
|
+
@protocol = :udp
|
37
|
+
end
|
38
|
+
|
39
|
+
chain :http do
|
40
|
+
@protocol = :tcp
|
41
|
+
@application = :http
|
42
|
+
end
|
43
|
+
|
44
|
+
chain :https do
|
45
|
+
@protocol = :tcp
|
46
|
+
@application = :https
|
47
|
+
end
|
48
|
+
|
49
|
+
chain :path do |path|
|
50
|
+
@http_path = path
|
51
|
+
end
|
52
|
+
|
28
53
|
def gen_keyword
|
29
54
|
Lbspec::Util.gen_keyword
|
30
55
|
end
|
@@ -63,17 +88,15 @@ RSpec::Matchers.define :transfer do |nodes|
|
|
63
88
|
channel.exec capture_cmd do |ch, stream, data|
|
64
89
|
num_match = 0
|
65
90
|
ch.on_data do |c, d|
|
66
|
-
# because of ngrep output condition first
|
67
|
-
# to avoid incorrect match, count 2
|
68
91
|
num_match += 1 if /#{@keyword}/ =~ d
|
69
|
-
@result = true if num_match >
|
92
|
+
@result = true if num_match > 0
|
70
93
|
end
|
71
94
|
end
|
72
95
|
end
|
73
96
|
|
74
97
|
def capture_cmd
|
75
98
|
port_str = @node_port > 0 ? "port #{@node_port}" : ''
|
76
|
-
"sudo ngrep #{@keyword} #{port_str}"
|
99
|
+
"sudo ngrep #{@keyword} #{port_str} | grep -v \"match:\""
|
77
100
|
end
|
78
101
|
|
79
102
|
def disconnect_nodes
|
@@ -90,7 +113,31 @@ RSpec::Matchers.define :transfer do |nodes|
|
|
90
113
|
addr_port = Lbspec::Util.split_addr_port(vhost.to_s)
|
91
114
|
vhost_addr, vhost_port = addr_port[:addr], addr_port[:port]
|
92
115
|
@vhost_port = vhost_port if vhost_port > 0
|
93
|
-
|
116
|
+
if @application
|
117
|
+
send_request_application(vhost_addr, @vhost_port)
|
118
|
+
else
|
119
|
+
send_request_transport(vhost_addr, @vhost_port)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def send_request_application(addr, port)
|
124
|
+
case @application
|
125
|
+
when :http
|
126
|
+
query = "?#{@keyword}"
|
127
|
+
system("curl -sm 1 http://#{addr}:#{port}#{@http_path}#{query}")
|
128
|
+
when :https
|
129
|
+
query = "?#{@keyword}"
|
130
|
+
system("curl -sm 1 -k https://#{addr}:#{port}#{@http_path}#{query}")
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def send_request_transport(addr, port)
|
135
|
+
case @protocol
|
136
|
+
when :udp
|
137
|
+
system("echo #{@keyword} | nc -u #{addr} #{port}")
|
138
|
+
else
|
139
|
+
system("echo #{@keyword} | nc #{addr} #{port}")
|
140
|
+
end
|
94
141
|
end
|
95
142
|
|
96
143
|
description do
|
data/lib/lbspec/version.rb
CHANGED
@@ -31,5 +31,23 @@ describe Lbspec do
|
|
31
31
|
it 'should test transfer vhost:80 and a node on port 80' do
|
32
32
|
'vhost_a:80'.should transfer('node_a').port(80)
|
33
33
|
end
|
34
|
+
it 'should test transfer vhost:80 and a node on port 80/tcp' do
|
35
|
+
'vhost_a:80'.should transfer('node_a').port(80).tcp
|
36
|
+
end
|
37
|
+
it 'should test transfer vhost:80 and a node on port 53/tcp' do
|
38
|
+
'vhost_a:80'.should transfer('node_a').port(53).udp
|
39
|
+
end
|
40
|
+
it 'should test transfer vhost:80 and a node with http' do
|
41
|
+
'vhost_a:80'.should transfer('node_a').http
|
42
|
+
end
|
43
|
+
it 'should test transfer vhost:443 and a node with https' do
|
44
|
+
'vhost_a:443'.should transfer('node_a').port(80).https
|
45
|
+
end
|
46
|
+
it 'should test transfer vhost:443 and a node:80 with https' do
|
47
|
+
'vhost_a:443'.should transfer('node_a').port(80).https
|
48
|
+
end
|
49
|
+
it 'should test transfer vhost:443 and a node with https /test' do
|
50
|
+
'vhost_a:443'.should transfer('node_a').https.path('/test')
|
51
|
+
end
|
34
52
|
end
|
35
53
|
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.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -107,6 +107,22 @@ dependencies:
|
|
107
107
|
- - ! '>='
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: highline
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
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: '0'
|
110
126
|
- !ruby/object:Gem::Dependency
|
111
127
|
name: rspec
|
112
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -180,12 +196,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
180
196
|
- - ! '>='
|
181
197
|
- !ruby/object:Gem::Version
|
182
198
|
version: '0'
|
199
|
+
segments:
|
200
|
+
- 0
|
201
|
+
hash: -4545456457714803124
|
183
202
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
203
|
none: false
|
185
204
|
requirements:
|
186
205
|
- - ! '>='
|
187
206
|
- !ruby/object:Gem::Version
|
188
207
|
version: '0'
|
208
|
+
segments:
|
209
|
+
- 0
|
210
|
+
hash: -4545456457714803124
|
189
211
|
requirements: []
|
190
212
|
rubyforge_project:
|
191
213
|
rubygems_version: 1.8.21
|