Skip to content

Commit c3d4cd2

Browse files
committed
Added logging to resolver to assist debugging travis issues.
1 parent 733a4ae commit c3d4cd2

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

lib/rubydns/resolver.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,20 +69,25 @@ def initialize(message, servers, options = {}, &block)
6969

7070
# Measured in seconds:
7171
@timeout = options[:timeout] || 5
72+
73+
@logger = options[:logger]
7274
end
7375

7476
attr :message
7577
attr :packet
78+
attr :logger
7679

7780
def run!
7881
try_next_server!
7982
end
8083

8184
def process_response!(response)
8285
if response.tc != 0
86+
@logger.warn "[#{@message.id}] Received truncated response!" if @logger
8387
# We hardcode this behaviour for now.
8488
try_next_server!
8589
else
90+
@logger.warn "[#{@message.id}] Received valid response #{response.inspect}" if @logger
8691
succeed response
8792
end
8893
end
@@ -98,6 +103,8 @@ def try_next_server!
98103
if @servers.size > 0
99104
@server = @servers.shift
100105

106+
@logger.debug "[#{@message.id}] Sending request to server #{@server.inspect}" if @logger
107+
101108
# We make requests one at a time to the given server, naturally the servers are ordered in terms of priority.
102109
case @server[0]
103110
when :udp
@@ -110,6 +117,8 @@ def try_next_server!
110117

111118
# Setting up the timeout...
112119
EventMachine::Timer.new(@timeout) do
120+
@logger.debug "[#{@message.id}] Request timed out!" if @logger
121+
113122
try_next_server!
114123
end
115124
else
@@ -141,6 +150,8 @@ def receive_data(data)
141150
# The message id must match, and it can't be truncated:
142151
if message.id == @request.message.id
143152
@request.process_response!(message)
153+
else
154+
@request.logger.warn "[#{@request.message.id}] Received response with incorrect message id: #{message.id}" if @request.logger
144155
end
145156
end
146157
end
@@ -181,6 +192,8 @@ def receive_data(data)
181192

182193
if message.id == @request.message.id
183194
@request.process_response!(message)
195+
else
196+
@request.logger.warn "[#{@request.message.id}] Received response with incorrect message id: #{message.id}" if @request.logger
184197
end
185198
elsif @buffer.size > (@length + 2)
186199
@request.try_next_server!

lib/rubydns/server.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,21 +175,21 @@ def process_query(query, &block)
175175

176176
# 4/ Finally, the answer is given back to the calling block:
177177
chain << lambda do
178+
@logger.debug "Passing answer back to caller..."
178179
yield answer
179180
end
180181

181182
# There may be multiple questions per query
182183
query.question.reverse.each do |question, resource_class|
183184
next_link = chain.last
184-
185+
185186
chain << lambda do
186187
@logger.debug "Processing question #{question} #{resource_class}..."
187188

188189
transaction = Transaction.new(self, query, question, resource_class, answer)
189190

190191
# Call the next link in the chain:
191192
transaction.callback do
192-
@logger.warn "Calling next link..."
193193
# 3/ ... which calls the previous item in the chain, i.e. the next question to be answered:
194194
next_link.call
195195
end

test/test_truncation.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def self.run
3030
class TruncationTest < Test::Unit::TestCase
3131
def setup
3232
TruncatedServer.start
33+
TruncatedServer.status
3334
end
3435

3536
def teardown
@@ -38,10 +39,13 @@ def teardown
3839
end
3940

4041
def test_tcp_failover
41-
resolver = RubyDNS::Resolver.new([[:udp, '127.0.0.1', 5320], [:tcp, '127.0.0.1', 5320]])
42+
logger = Logger.new($stderr)
43+
resolver = RubyDNS::Resolver.new([[:udp, '127.0.0.1', 5320], [:tcp, '127.0.0.1', 5320]], :logger => logger)
4244

4345
EventMachine::run do
4446
resolver.query("truncation", IN::TXT) do |response|
47+
48+
4549
text = response.answer.first
4650

4751
assert_equal "Hello World! " * 100, text[2].strings.join

0 commit comments

Comments
 (0)