Files
qfixdpl/quickfix/_test/Runner.rb
2026-03-09 15:35:32 -03:00

145 lines
3.5 KiB
Ruby

#****************************************************************************
# 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 += " <line>" + lineNum.to_s + "</line>\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 += " <expected><![CDATA[" + e + "]]></expected>\n"
report += " <received><![CDATA[" + a + "]]></received>"
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 "<test name='", test, "' result='"
if exception == nil then
print "success'/>\n"
else
print "failure' >\n"
print " <message>\n", $!, " </message>\n"
#print " <trace><![CDATA["
#print $!.backtrace.join("]]></trace>\n <trace><![CDATA[")
#print " ]]></trace>\n"
print "</test>\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 "<at>\n"
newarray.each do
| v |
file = File.open(v, "r")
process = createProcess(file, ARGV[0], ARGV[1])
if process.nil? then
print " <test name='", v, "' result='", "failure' >\n"
print " <message><![CDATA[Test definition did "
print "not contain iCONNECT or eCONNECT]]></message>\n"
print " </test>\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<results total='", total, "' failures='", failures, "'/>\n"
print "</at>\n"
rescue
print " ",$!,"\n"
print "</at>\n"
end
exit exitValue
if not Object.respond_to?("is_testing") or not Object.is_testing then
end