#**************************************************************************** # Copyright (c) quickfixengine.org All rights reserved. # # This file is part of the QuickFIX FIX Engine # # This file may be distributed under the terms of the quickfixengine.org # license as defined by quickfixengine.org and appearing in the file # LICENSE included in the packaging of this file. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # # See http://www.quickfixengine.org/LICENSE for licensing information. # # Contact ask@quickfixengine.org if any conditions of this licensing are # not clear to you. #**************************************************************************** require 'ReflectorClient' require 'Comparator' def extendProcess(c) def c.errorAction(lineNum, line) report = " " + $!.to_s + "\n" report += " " + lineNum.to_s + "\n" raise report end def c.compareAction(e, a) if( !defined? @patterns ) @patterns = "10=\\d{1,3}\n52=\\d{8}-\\d{2}:\\d{2}:\\d{2}\n"; end if( !defined? @comp ) @comp = Comparator.new(@patterns) end if( !@comp.compare(e,a) ) e.tr!("\001", "*") a.tr!("\001", "*") report = @comp.reason + "\n" report += " \n" report += " " raise report end end def c.patterns=(p) @patterns = p end c.patterns = File.open("definitions/fields.fmt", "r") end def printResult(test, exception) print "\n" else print "failure' >\n" print " \n", $!, " \n" #print " \n \n" print "\n" end STDOUT.flush end def createProcess(file, address, port) newarray = [1,2,3,4,5,6,7,8,9,10] newarray.each do | num | begin socket = TCPSocket.open(address, port); rescue end if socket == nil sleep 3 next else socket.close break end end file.each_line do | line | if line =~ /^i\d*,?CONNECT/ then return ReflectorClient.new(file, address, port) elsif line =~ /^e\d*,?CONNECT/ then return ReflectorServer.new(file) end end return nil end i = 0 newarray = ARGV[2, ARGV.length-2] exitValue = 0 total = 0 failures = 0 begin print "\n" newarray.each do | v | file = File.open(v, "r") process = createProcess(file, ARGV[0], ARGV[1]) if process.nil? then print " \n" print " \n" print " \n" exitValue += 1 next end file.rewind extendProcess(process) sleep(0.1) total += 1 begin process.start printResult(v, nil) process.stop rescue failures += 1 exitValue += 1 printResult(v, $!) process.stop end end print "\n\n" print "\n" rescue print " ",$!,"\n" print "\n" end exit exitValue if not Object.respond_to?("is_testing") or not Object.is_testing then end