haproxy-tools 0.5.0 → 0.6.0
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.
- checksums.yaml +5 -5
- data/.ruby-version +1 -1
- data/.simplecov +1 -13
- data/.standard.yml +1 -0
- data/.travis.yml +1 -3
- data/CHANGES.rdoc +7 -0
- data/Gemfile +1 -1
- data/README.rdoc +1 -2
- data/Rakefile +10 -9
- data/bin/rake +29 -0
- data/bin/rspec +29 -0
- data/bin/standardrb +29 -0
- data/docs/haproxy-1.7-configuration.txt +14 -11
- data/docs/haproxy-1.8-configuration.txt +214 -100
- data/docs/haproxy-1.9-configuration.txt +2213 -1355
- data/haproxy-tools.gemspec +23 -20
- data/lib/haproxy-tools.rb +3 -1
- data/lib/haproxy/config.rb +9 -9
- data/lib/haproxy/parser.rb +42 -39
- data/lib/haproxy/renderer.rb +21 -18
- data/lib/haproxy/treetop/config.treetop +1 -1
- data/lib/haproxy/treetop/nodes.rb +32 -24
- data/lib/haproxy/version.rb +3 -1
- data/lib/haproxy_tools.rb +7 -5
- data/spec/haproxy/config_spec.rb +86 -75
- data/spec/haproxy/parser_spec.rb +111 -87
- data/spec/haproxy/treetop/config_parser_spec.rb +44 -43
- data/spec/spec_helper.rb +9 -6
- metadata +43 -9
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
2
4
|
|
3
5
|
describe HAProxy::Treetop::ConfigParser do
|
4
6
|
before(:each) do
|
@@ -16,84 +18,83 @@ describe HAProxy::Treetop::ConfigParser do
|
|
16
18
|
end
|
17
19
|
|
18
20
|
def parse_single_pool
|
19
|
-
parse_file(
|
21
|
+
parse_file("spec/fixtures/simple.haproxy.cfg")
|
20
22
|
end
|
21
23
|
|
22
24
|
def parse_multi_pool
|
23
|
-
parse_file(
|
25
|
+
parse_file("spec/fixtures/multi-pool.haproxy.cfg")
|
24
26
|
end
|
25
27
|
|
26
28
|
it "can parse servers from a backend server block" do
|
27
29
|
parse_multi_pool
|
28
30
|
|
29
31
|
backend = @result.backends.first
|
30
|
-
backend.servers.size.
|
31
|
-
backend.servers[0].name.
|
32
|
-
backend.servers[0].host.
|
33
|
-
backend.servers[0].port.
|
32
|
+
expect(backend.servers.size).to eq(4)
|
33
|
+
expect(backend.servers[0].name).to eq("prd_www_1")
|
34
|
+
expect(backend.servers[0].host).to eq("10.214.78.95")
|
35
|
+
expect(backend.servers[0].port).to eq("8000")
|
34
36
|
end
|
35
37
|
|
36
|
-
it
|
38
|
+
it "can parse a service address from a frontend header" do
|
37
39
|
parse_multi_pool
|
38
40
|
|
39
41
|
frontend = @result.frontends.first
|
40
|
-
frontend.frontend_header.service_address.host.content.
|
41
|
-
frontend.frontend_header.service_address.port.content.
|
42
|
+
expect(frontend.frontend_header.service_address.host.content).to eq("*")
|
43
|
+
expect(frontend.frontend_header.service_address.port.content).to eq("85")
|
42
44
|
end
|
43
45
|
|
44
|
-
it
|
46
|
+
it "can parse a service address from a listen header" do
|
45
47
|
parse_single_pool
|
46
48
|
|
47
49
|
listener = @result.listeners.first
|
48
|
-
listener.listen_header.service_address.host.content.
|
49
|
-
listener.listen_header.service_address.port.content.
|
50
|
+
expect(listener.listen_header.service_address.host.content).to eq("55.55.55.55")
|
51
|
+
expect(listener.listen_header.service_address.port.content).to eq("80")
|
50
52
|
end
|
51
53
|
|
52
|
-
it
|
54
|
+
it "can parse a file with a listen section" do
|
53
55
|
parse_single_pool
|
54
56
|
|
55
57
|
@result.elements
|
56
|
-
@result.class.
|
57
|
-
@result.elements.size.
|
58
|
+
expect(@result.class).to eq(HAProxy::Treetop::ConfigurationFile)
|
59
|
+
expect(@result.elements.size).to eq(5)
|
58
60
|
|
59
|
-
@result.elements[0].class.
|
60
|
-
@result.elements[1].class.
|
61
|
+
expect(@result.elements[0].class).to eq(HAProxy::Treetop::CommentLine)
|
62
|
+
expect(@result.elements[1].class).to eq(HAProxy::Treetop::BlankLine)
|
61
63
|
|
62
|
-
@result.global.
|
63
|
-
@result.elements[2].class.
|
64
|
+
expect(@result.global).to eq(@result.elements[2])
|
65
|
+
expect(@result.elements[2].class).to eq(HAProxy::Treetop::GlobalSection)
|
64
66
|
|
65
|
-
@result.defaults[0].
|
66
|
-
@result.elements[3].class.
|
67
|
+
expect(@result.defaults[0]).to eq(@result.elements[3])
|
68
|
+
expect(@result.elements[3].class).to eq(HAProxy::Treetop::DefaultsSection)
|
67
69
|
|
68
|
-
@result.listeners[0].
|
69
|
-
@result.elements[4].class.
|
70
|
+
expect(@result.listeners[0]).to eq(@result.elements[4])
|
71
|
+
expect(@result.elements[4].class).to eq(HAProxy::Treetop::ListenSection)
|
70
72
|
end
|
71
73
|
|
72
|
-
it
|
74
|
+
it "can parse a file with frontend/backend sections" do
|
73
75
|
parse_multi_pool
|
74
76
|
|
75
|
-
@result.class.
|
76
|
-
@result.elements.size.
|
77
|
+
expect(@result.class).to eq(HAProxy::Treetop::ConfigurationFile)
|
78
|
+
expect(@result.elements.size).to eq(5)
|
77
79
|
|
78
|
-
@result.global.
|
79
|
-
@result.elements[0].class.
|
80
|
+
expect(@result.global).to eq(@result.elements[0])
|
81
|
+
expect(@result.elements[0].class).to eq(HAProxy::Treetop::GlobalSection)
|
80
82
|
|
81
|
-
@result.defaults[0].
|
82
|
-
@result.elements[1].class.
|
83
|
+
expect(@result.defaults[0]).to eq(@result.elements[1])
|
84
|
+
expect(@result.elements[1].class).to eq(HAProxy::Treetop::DefaultsSection)
|
83
85
|
|
84
|
-
@result.frontends[0].
|
85
|
-
@result.elements[2].class.
|
86
|
+
expect(@result.frontends[0]).to eq(@result.elements[2])
|
87
|
+
expect(@result.elements[2].class).to eq(HAProxy::Treetop::FrontendSection)
|
86
88
|
|
87
|
-
@result.backends[0].
|
88
|
-
@result.backends[1].
|
89
|
-
@result.elements[3].class.
|
90
|
-
@result.elements[4].class.
|
89
|
+
expect(@result.backends[0]).to eq(@result.elements[3])
|
90
|
+
expect(@result.backends[1]).to eq(@result.elements[4])
|
91
|
+
expect(@result.elements[3].class).to eq(HAProxy::Treetop::BackendSection)
|
92
|
+
expect(@result.elements[4].class).to eq(HAProxy::Treetop::BackendSection)
|
91
93
|
end
|
92
94
|
|
93
|
-
it
|
94
|
-
it
|
95
|
-
it
|
96
|
-
it
|
97
|
-
it
|
95
|
+
it "can parse userlist sections"
|
96
|
+
it "can parse valid units of time"
|
97
|
+
it "can parse strings with escaped spaces"
|
98
|
+
it "can parse files with escaped quotes"
|
99
|
+
it "can parse keywords with hyphens"
|
98
100
|
end
|
99
|
-
|
data/spec/spec_helper.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "simplecov"
|
4
|
+
|
5
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
2
6
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
7
|
|
4
|
-
require
|
8
|
+
require "bundler"
|
5
9
|
Bundler.require(:default, :development)
|
6
10
|
|
7
|
-
require
|
11
|
+
require "haproxy_tools"
|
12
|
+
require "awesome_print"
|
8
13
|
|
9
14
|
# Requires supporting files with custom matchers and macros, etc,
|
10
15
|
# in ./support/ and its subdirectories.
|
@@ -13,12 +18,10 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
|
13
18
|
RSpec.configure do |config|
|
14
19
|
config.run_all_when_everything_filtered = true
|
15
20
|
config.filter_run :focus
|
16
|
-
config.expect_with(:rspec) { |c| c.syntax = :should }
|
17
21
|
|
18
22
|
# Run specs in random order to surface order dependencies. If you find an
|
19
23
|
# order dependency and want to debug it, you can fix the order by providing
|
20
24
|
# the seed, which is printed after each run.
|
21
25
|
# --seed 1234
|
22
|
-
config.order =
|
23
|
-
|
26
|
+
config.order = "random"
|
24
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: haproxy-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Wadsworth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-scp
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: awesome_print
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: cane
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: rake
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,7 +95,7 @@ dependencies:
|
|
67
95
|
- !ruby/object:Gem::Version
|
68
96
|
version: '0'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
98
|
+
name: simplecov
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
101
|
- - ">="
|
@@ -81,7 +109,7 @@ dependencies:
|
|
81
109
|
- !ruby/object:Gem::Version
|
82
110
|
version: '0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
112
|
+
name: standard
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - ">="
|
@@ -95,7 +123,7 @@ dependencies:
|
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '0'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
126
|
+
name: yard
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
129
|
- - ">="
|
@@ -111,7 +139,10 @@ dependencies:
|
|
111
139
|
description: Ruby tools for HAProxy, including config file management.
|
112
140
|
email:
|
113
141
|
- jdwadsworth@gmail.com
|
114
|
-
executables:
|
142
|
+
executables:
|
143
|
+
- rake
|
144
|
+
- rspec
|
145
|
+
- standardrb
|
115
146
|
extensions: []
|
116
147
|
extra_rdoc_files: []
|
117
148
|
files:
|
@@ -120,6 +151,7 @@ files:
|
|
120
151
|
- ".rspec"
|
121
152
|
- ".ruby-version"
|
122
153
|
- ".simplecov"
|
154
|
+
- ".standard.yml"
|
123
155
|
- ".travis.yml"
|
124
156
|
- CHANGES.rdoc
|
125
157
|
- Gemfile
|
@@ -127,6 +159,9 @@ files:
|
|
127
159
|
- README.rdoc
|
128
160
|
- Rakefile
|
129
161
|
- TODO
|
162
|
+
- bin/rake
|
163
|
+
- bin/rspec
|
164
|
+
- bin/standardrb
|
130
165
|
- docs/haproxy-1.3-configuration.txt
|
131
166
|
- docs/haproxy-1.4-configuration.txt
|
132
167
|
- docs/haproxy-1.5-configuration.txt
|
@@ -162,15 +197,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
162
197
|
requirements:
|
163
198
|
- - ">="
|
164
199
|
- !ruby/object:Gem::Version
|
165
|
-
version:
|
200
|
+
version: 2.2.0
|
166
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
202
|
requirements:
|
168
203
|
- - ">="
|
169
204
|
- !ruby/object:Gem::Version
|
170
205
|
version: '0'
|
171
206
|
requirements: []
|
172
|
-
|
173
|
-
rubygems_version: 2.6.14
|
207
|
+
rubygems_version: 3.0.3
|
174
208
|
signing_key:
|
175
209
|
specification_version: 4
|
176
210
|
summary: HAProxy Tools for Ruby
|