From: Aki Tuomi Date: Thu, 23 Jan 2014 16:34:28 +0000 (+0200) Subject: Proper logging for remotebackend tests to help find out problems X-Git-Tag: rec-3.6.0-rc1~228^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9492f34dca7fcc420c2e0aa3fb9194140ae29f50;p=thirdparty%2Fpdns.git Proper logging for remotebackend tests to help find out problems --- diff --git a/.travis.yml b/.travis.yml index bc9d0a266c..19b9cab582 100644 --- a/.travis.yml +++ b/.travis.yml @@ -73,6 +73,7 @@ script: - cd ../regression-tests.nobackend/ - ./runtests - test ! -s ./failed_tests + - cat /tmp/remotebackend.txt.* | sort notifications: irc: channels: diff --git a/modules/remotebackend/regression-tests/dnsbackend.rb b/modules/remotebackend/regression-tests/dnsbackend.rb index 29a8f38975..b26e478dad 100644 --- a/modules/remotebackend/regression-tests/dnsbackend.rb +++ b/modules/remotebackend/regression-tests/dnsbackend.rb @@ -5,7 +5,7 @@ class DNSBackendHandler < WEBrick::HTTPServlet::AbstractServlet def initialize(server, dnsbackend) @dnsbackend = dnsbackend @semaphore = Mutex.new - @f = File.open("/tmp/tmp.txt","a") + @f = File.open("/tmp/remotebackend.txt","a") @f.sync end diff --git a/modules/remotebackend/regression-tests/pipe-backend.rb b/modules/remotebackend/regression-tests/pipe-backend.rb index ebf7e8c4bf..39db7a2140 100755 --- a/modules/remotebackend/regression-tests/pipe-backend.rb +++ b/modules/remotebackend/regression-tests/pipe-backend.rb @@ -7,16 +7,16 @@ require "backend" h = Handler.new("#{File.dirname(__FILE__)}/remote.sqlite3") -f = File.open "/tmp/tmp.txt","a" +f = File.open "/tmp/remotebackend.txt.#{$$}","a" f.sync = true STDOUT.sync = true begin STDIN.each_line do |line| - f.puts line # expect json input = {} line = line.strip + f.puts "#{Time.now.to_f}: [pipe] #{line}" next if line.empty? begin input = JSON.parse(line) @@ -32,9 +32,10 @@ begin res, log = h.send(method) end puts ({:result => res, :log => log}).to_json - f.puts({:result => res, :log => log}).to_json + f.puts "#{Time.now.to_f} [pipe]: #{({:result => res, :log => log}).to_json}" rescue JSON::ParserError puts ({:result => false, :log => "Cannot parse input #{line}"}).to_json + f.puts "#{Time.now.to_f} [pipe]: #{({:result => false, :log => "Cannot parse input #{line}"}).to_json}" next end end diff --git a/modules/remotebackend/regression-tests/unix-backend.rb b/modules/remotebackend/regression-tests/unix-backend.rb deleted file mode 120000 index ebb5e0c25c..0000000000 --- a/modules/remotebackend/regression-tests/unix-backend.rb +++ /dev/null @@ -1 +0,0 @@ -pipe-backend.rb \ No newline at end of file diff --git a/modules/remotebackend/regression-tests/unix-backend.rb b/modules/remotebackend/regression-tests/unix-backend.rb new file mode 100755 index 0000000000..a1f79daed2 --- /dev/null +++ b/modules/remotebackend/regression-tests/unix-backend.rb @@ -0,0 +1,42 @@ +#!/usr/bin/env ruby +require "rubygems" +require 'bundler/setup' +require 'json' +$:.unshift File.dirname(__FILE__) +require "backend" + +h = Handler.new("#{File.dirname(__FILE__)}/remote.sqlite3") + +f = File.open "/tmp/remotebackend.txt","a" +f.sync = true + +STDOUT.sync = true +begin + STDIN.each_line do |line| + # expect json + input = {} + line = line.strip + f.puts "#{Time.now.to_f}: [unix] #{line}" + next if line.empty? + begin + input = JSON.parse(line) + next unless input and input["method"] + method = "do_#{input["method"].downcase}" + args = input["parameters"] + + if h.respond_to?(method.to_sym) == false + res = false + elsif args.size > 0 + res, log = h.send(method,args) + else + res, log = h.send(method) + end + puts ({:result => res, :log => log}).to_json + f.puts "#{Time.now.to_f} [unix]: #{({:result => res, :log => log}).to_json}" + rescue JSON::ParserError + f.puts "#{Time.now.to_f} [unix]: #{({:result => false, :log => "Cannot parse input #{line}"}).to_json}" + next + end + end +rescue SystemExit, Interrupt +end diff --git a/modules/remotebackend/regression-tests/zeromq-backend.rb b/modules/remotebackend/regression-tests/zeromq-backend.rb index 74d88cadea..63d152631b 100755 --- a/modules/remotebackend/regression-tests/zeromq-backend.rb +++ b/modules/remotebackend/regression-tests/zeromq-backend.rb @@ -1,5 +1,3 @@ -#!/usr/bin/ruby1.9.1 - #!/usr/bin/env ruby require "rubygems" require 'bundler/setup' @@ -10,7 +8,7 @@ require "backend" h = Handler.new("#{File.dirname(__FILE__)}/remote.sqlite3") -f = File.open "/tmp/tmp.txt","a" +f = File.open "/tmp/remotebackend.txt.#{$$}","a" f.sync = true begin @@ -21,10 +19,10 @@ begin while(true) do line = "" rc = socket.recv_string line - f.puts line # expect json input = {} line = line.strip + f.puts "#{Time.now.to_f}: [zmq] #{line}" next if line.empty? begin input = JSON.parse(line) @@ -40,9 +38,10 @@ begin res, log = h.send(method) end socket.send_string ({:result => res, :log => log}).to_json, 0 - f.puts({:result => res, :log => log}).to_json + f.puts "#{Time.now.to_f} [zmq]: #{({:result => res, :log => log}).to_json}" rescue JSON::ParserError socket.send_string ({:result => false, :log => "Cannot parse input #{line}"}).to_json + f.puts "#{Time.now.to_f} [zmq]: #{({:result => false, :log => "Cannot parse input #{line}"}).to_json}" next end end diff --git a/modules/remotebackend/unittest_http.rb b/modules/remotebackend/unittest_http.rb index 3c7c34d949..e4a579ec1d 100755 --- a/modules/remotebackend/unittest_http.rb +++ b/modules/remotebackend/unittest_http.rb @@ -11,7 +11,7 @@ class DNSBackendHandler < WEBrick::HTTPServlet::AbstractServlet def initialize(server, dnsbackend) @dnsbackend = dnsbackend @semaphore = Mutex.new - @f = File.open("/tmp/tmp.txt","a") + @f = File.open("/tmp/remotebackend.txt.#{$$}","a") end def parse_arrays(params) @@ -137,8 +137,7 @@ class DNSBackendHandler < WEBrick::HTTPServlet::AbstractServlet args = parse_arrays args - @f.puts method - @f.puts args + @f.puts "#{Time.now.to_f} [http]: #{({:method=>method,:parameters=>args}).to_json}" @semaphore.synchronize do if @dnsbackend.respond_to?(method.to_sym) @@ -152,6 +151,8 @@ class DNSBackendHandler < WEBrick::HTTPServlet::AbstractServlet res["Content-Type"] = "application/javascript; charset=utf-8" res.body = ({:result => false, :log => ["Method not found"]}).to_json end + + @f.puts "#{Time.now.to_f} [http]: #{res.body}" end end diff --git a/modules/remotebackend/unittest_json.rb b/modules/remotebackend/unittest_json.rb index 54a3e3ba5a..2c713b75a2 100755 --- a/modules/remotebackend/unittest_json.rb +++ b/modules/remotebackend/unittest_json.rb @@ -11,7 +11,8 @@ class DNSBackendHandler < WEBrick::HTTPServlet::AbstractServlet def initialize(server, dnsbackend) @dnsbackend = dnsbackend @semaphore = Mutex.new - @f = File.open("/tmp/tmp.txt","a") + @f = File.open("/tmp/remotebackend.txt.#{$$}","a") + @f.sync end def do_POST(req,res) @@ -23,9 +24,8 @@ class DNSBackendHandler < WEBrick::HTTPServlet::AbstractServlet method = tmp["method"].downcase method = "do_#{method}" args = tmp["parameters"] - - @f.puts method - @f.puts args + + @f.puts "#{Time.now.to_f} [http/json]: #{({:method=>method,:parameters=>args}).to_json}" @semaphore.synchronize do if @dnsbackend.respond_to?(method.to_sym) @@ -39,6 +39,7 @@ class DNSBackendHandler < WEBrick::HTTPServlet::AbstractServlet res["Content-Type"] = "application/javascript; charset=utf-8" res.body = ({:result => false, :log => ["Method not found"]}).to_json end + @f.puts "#{Time.now.to_f} [http/json]: #{res.body}" end end end diff --git a/modules/remotebackend/unittest_pipe.rb b/modules/remotebackend/unittest_pipe.rb index e95652bfdc..4c6a155720 100755 --- a/modules/remotebackend/unittest_pipe.rb +++ b/modules/remotebackend/unittest_pipe.rb @@ -6,12 +6,13 @@ require 'json' require './unittest' h = Handler.new() -f = File.open "/tmp/tmp.txt","a" +f = File.open "/tmp/remotebackend.txt.#{$$}","a" +f.sync STDOUT.sync = true begin STDIN.each_line do |line| - f.puts line + f.puts "#{Time.now.to_f}: [pipe] #{line}" # expect json input = {} line = line.strip @@ -29,9 +30,10 @@ begin res, log = h.send(method) end puts ({:result => res, :log => log}).to_json - f.puts({:result => res, :log => log}).to_json + f.puts "#{Time.now.to_f} [pipe]: #{({:result => res, :log => log}).to_json}" rescue JSON::ParserError puts ({:result => false, :log => "Cannot parse input #{line}"}).to_json + f.puts "#{Time.now.to_f} [pipe]: #{({:result => false, :log => "Cannot parse input #{line}"}).to_json}" next end end diff --git a/modules/remotebackend/unittest_post.rb b/modules/remotebackend/unittest_post.rb index bf9b7ed930..db82974a77 100755 --- a/modules/remotebackend/unittest_post.rb +++ b/modules/remotebackend/unittest_post.rb @@ -11,7 +11,8 @@ class DNSBackendHandler < WEBrick::HTTPServlet::AbstractServlet def initialize(server, dnsbackend) @dnsbackend = dnsbackend @semaphore = Mutex.new - @f = File.open("/tmp/tmp.txt","a") + @f = File.open("/tmp/remotebackend.txt.#{$$}","a") + @f.sync end def do_POST(req,res) @@ -24,9 +25,8 @@ class DNSBackendHandler < WEBrick::HTTPServlet::AbstractServlet method = url.shift.downcase method = "do_#{method}" args = JSON::parse(req.query["parameters"]) - - @f.puts method - @f.puts args + + @f.puts "#{Time.now.to_f} [http/post]: #{({:method=>method,:parameters=>args}).to_json}" @semaphore.synchronize do if @dnsbackend.respond_to?(method.to_sym) @@ -40,6 +40,7 @@ class DNSBackendHandler < WEBrick::HTTPServlet::AbstractServlet res["Content-Type"] = "application/javascript; charset=utf-8" res.body = ({:result => false, :log => ["Method not found"]}).to_json end + @f.puts "#{Time.now.to_f} [http/post]: #{res.body}" end end end diff --git a/modules/remotebackend/unittest_zeromq.rb b/modules/remotebackend/unittest_zeromq.rb index be8569d92b..e656097194 100755 --- a/modules/remotebackend/unittest_zeromq.rb +++ b/modules/remotebackend/unittest_zeromq.rb @@ -7,7 +7,9 @@ require 'zero_mq' require './unittest' h = Handler.new() -f = File.open "/tmp/tmp.txt","a" +f = File.open "/tmp/remotebackend.txt.#{$$}","a" +f.sync = true + runcond=true trap('INT') { runcond = false } @@ -23,10 +25,11 @@ begin while(runcond) do line = "" rc = socket.recv_string line - f.puts line # expect json input = {} line = line.strip + + f.puts "#{Time.now.to_f}: [zmq] #{line}" next if line.empty? begin input = JSON.parse(line) @@ -41,9 +44,10 @@ begin res, log = h.send(method) end socket.send_string ({:result => res, :log => log}).to_json, 0 - f.puts({:result => res, :log => log}).to_json + f.puts "#{Time.now.to_f} [z,q]: #{({:result => res, :log => log}).to_json}" rescue JSON::ParserError socket.send_string ({:result => false, :log => "Cannot parse input #{line}"}).to_json + f.puts "#{Time.now.to_f} [zmq]: #{({:result => false, :log => "Cannot parse input #{line}"}).to_json}" next end end