klarlack 0.0.3 → 0.0.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/VERSION.yml +1 -1
- data/lib/klarlack.rb +1 -1
- data/lib/varnish/client.rb +14 -4
- data/spec/klarlack_spec.rb +34 -2
- metadata +3 -3
data/VERSION.yml
CHANGED
data/lib/klarlack.rb
CHANGED
data/lib/varnish/client.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module Varnish
|
2
2
|
class Error < StandardError; end
|
3
|
+
class BrokenConnection < Error; end
|
4
|
+
class CommandFailed < Error; end
|
3
5
|
class Client
|
4
6
|
# Default management port of varnishd
|
5
7
|
DEFAULT_PORT = 6082
|
@@ -215,16 +217,16 @@ module Varnish
|
|
215
217
|
private
|
216
218
|
|
217
219
|
# Sends a command to varnishd.
|
218
|
-
# Raises
|
220
|
+
# Raises a Varnish::CommandFailed error when a non-200 status is returned
|
219
221
|
# Returns the response text
|
220
222
|
def cmd(name, *params)
|
221
223
|
@mutex.synchronize do
|
222
224
|
connect unless connected?
|
223
225
|
@conn.write "#{name} #{params.join(' ').gsub('\\', '\\\\\\')}\n"
|
224
|
-
status, length =
|
225
|
-
content =
|
226
|
+
status, length = conn_gets.split # <status> <content_length>\n
|
227
|
+
content = conn_read(length.to_i + 1) # +1 = \n
|
226
228
|
content.chomp!
|
227
|
-
raise
|
229
|
+
raise CommandFailed, "Command #{name} returned with status #{status}: #{content}" if status.to_i != 200
|
228
230
|
content
|
229
231
|
end
|
230
232
|
end
|
@@ -250,6 +252,14 @@ module Varnish
|
|
250
252
|
@conn
|
251
253
|
end
|
252
254
|
|
255
|
+
def conn_gets
|
256
|
+
@conn.gets || raise(BrokenConnection, "Expected to read one line from Varnish, got nil")
|
257
|
+
end
|
258
|
+
|
259
|
+
def conn_read(bytes)
|
260
|
+
@conn.read(bytes) || raise(BrokenConnection, "Expected to read #{bytes} bytes from Varnish, got nil")
|
261
|
+
end
|
262
|
+
|
253
263
|
# converts +value+ into a boolean
|
254
264
|
def bool(value)
|
255
265
|
!!value
|
data/spec/klarlack_spec.rb
CHANGED
@@ -128,6 +128,24 @@ describe Varnish::Client do
|
|
128
128
|
end
|
129
129
|
|
130
130
|
end
|
131
|
+
|
132
|
+
describe '(broken connection)' do
|
133
|
+
|
134
|
+
before(:each) do
|
135
|
+
fake_connection!(:connected => true, :return => "200 1\n")
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'should fail with a Varnish::Error when the connection does return nil for gets' do
|
139
|
+
@conn.stub!(:gets).and_return(nil)
|
140
|
+
lambda { @varnish.ping }.should raise_error(Varnish::BrokenConnection)
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'should fail with a Varnish::Error when the connection does return nil for read' do
|
144
|
+
@conn.stub!(:read).and_return(nil)
|
145
|
+
lambda { @varnish.ping }.should raise_error(Varnish::BrokenConnection)
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
131
149
|
|
132
150
|
describe '(daemon lifecycle)' do
|
133
151
|
|
@@ -142,12 +160,12 @@ describe Varnish::Client do
|
|
142
160
|
|
143
161
|
it 'starting an already started daemon should raise an error' do
|
144
162
|
ensure_started
|
145
|
-
lambda { @varnish.start }.should raise_error(Varnish::
|
163
|
+
lambda { @varnish.start }.should raise_error(Varnish::CommandFailed)
|
146
164
|
end
|
147
165
|
|
148
166
|
it 'stopping an already stopped daemon should raise an error' do
|
149
167
|
ensure_stopped
|
150
|
-
lambda { @varnish.stop }.should raise_error(Varnish::
|
168
|
+
lambda { @varnish.stop }.should raise_error(Varnish::CommandFailed)
|
151
169
|
end
|
152
170
|
|
153
171
|
end
|
@@ -161,5 +179,19 @@ describe Varnish::Client do
|
|
161
179
|
@varnish.stop if @varnish.running?
|
162
180
|
while(!@varnish.stopped?) do sleep 0.1 end
|
163
181
|
end
|
182
|
+
|
183
|
+
class FakeConn
|
184
|
+
attr_accessor :retval
|
185
|
+
def read(*args) @retval end
|
186
|
+
def gets(*args) @retval end
|
187
|
+
def write(str) str.to_s.size end
|
188
|
+
end
|
189
|
+
|
190
|
+
def fake_connection!(opts = {})
|
191
|
+
@conn = FakeConn.new
|
192
|
+
@conn.retval = opts[:return] || ''
|
193
|
+
@varnish.stub!(:connected?).and_return(opts[:connected] || false)
|
194
|
+
@varnish.instance_variable_set('@conn', @conn)
|
195
|
+
end
|
164
196
|
|
165
197
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: klarlack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Max Sch\xC3\xB6fmann"
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-03 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -58,7 +58,7 @@ requirements: []
|
|
58
58
|
rubyforge_project:
|
59
59
|
rubygems_version: 1.3.5
|
60
60
|
signing_key:
|
61
|
-
specification_version:
|
61
|
+
specification_version: 3
|
62
62
|
summary: ruby client for varnishd's admin interface
|
63
63
|
test_files:
|
64
64
|
- spec/klarlack_spec.rb
|