adding quickfix
This commit is contained in:
72
quickfix/_test/Comparator.rb
Normal file
72
quickfix/_test/Comparator.rb
Normal file
@ -0,0 +1,72 @@
|
||||
#****************************************************************************
|
||||
# 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.
|
||||
#****************************************************************************
|
||||
|
||||
class Comparator < Hash
|
||||
|
||||
def initialize(patterns)
|
||||
patterns.each_line do
|
||||
| line |
|
||||
line.chomp!
|
||||
array = line.split("=")
|
||||
num = array[0].to_i
|
||||
regex = Regexp.new(array[1])
|
||||
self[num] = regex;
|
||||
end
|
||||
end
|
||||
|
||||
def compare(left, right)
|
||||
@reason = nil
|
||||
left_array = left.split("\001")
|
||||
right_array = right.split("\001")
|
||||
# check for number of fields
|
||||
if left_array.size != right_array.size
|
||||
@reason = "Number of fields do not match"
|
||||
return false
|
||||
end
|
||||
left_array.each_index do
|
||||
| index |
|
||||
left_field = left_array[index].split("=")
|
||||
right_field = right_array[index].split("=")
|
||||
# check if field is in same order
|
||||
if left_field[0] != right_field[0]
|
||||
@reason = "Expected field (" + left_field[0] + ") but found field (" + right_field[0] + ")"
|
||||
return false
|
||||
end
|
||||
|
||||
regexp = self[left_field[0].to_i]
|
||||
# do a straight comparison or regex comparison
|
||||
if regexp == nil
|
||||
if left_field[1] != right_field[1]
|
||||
@reason = "Value in field (" + left_field[0] + ") should be (" + left_field[1] + ") but was (" + right_field[1] + ")"
|
||||
return false
|
||||
end
|
||||
else
|
||||
if !(regexp === right_field[1])
|
||||
@reason = "Field (" + left_field[0] + ") does not match pattern"
|
||||
return false
|
||||
end
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
def reason()
|
||||
return @reason
|
||||
end
|
||||
|
||||
end
|
||||
37
quickfix/_test/ComparatorTestCase.rb
Normal file
37
quickfix/_test/ComparatorTestCase.rb
Normal file
@ -0,0 +1,37 @@
|
||||
require 'Comparator'
|
||||
require 'runit/testcase'
|
||||
|
||||
class ComparatorTestCase < RUNIT::TestCase
|
||||
|
||||
def test_parsePatterns
|
||||
patterns = "10=\\d{1,3}\n52=\\d{8}-\\d2:\\d2:\\d2\n"
|
||||
comp = Comparator.new(patterns)
|
||||
assert_equals(/\d{1,3}/, comp[10])
|
||||
assert_equals(/\d{8}-\d2:\d2:\d2/, comp[52])
|
||||
end
|
||||
|
||||
def test_compare
|
||||
patterns = "10=\\d{1,3}\n52=\\d{8}-\\d{2}:\\d{2}:\\d{2}\n"
|
||||
comp = Comparator.new(patterns)
|
||||
# matching fields
|
||||
assert(comp.compare("1=hello\0012=goodbye\001", "1=hello\0012=goodbye\001"))
|
||||
assert(comp.reason == nil)
|
||||
# non-matching field
|
||||
assert(!comp.compare("1=helloo\0012=goodbye\001", "1=hello\0012=goodbye\001"))
|
||||
assert(comp.reason == "Value in field (1) should be (helloo) but was (hello)")
|
||||
# out of order fields
|
||||
assert(!comp.compare("2=hello\0011=goodbye\001", "1=hello\0012=goodbye\001"))
|
||||
assert(comp.reason == "Expected field (2) but found field (1)")
|
||||
# different number of fields
|
||||
assert(!comp.compare("1=hello\001", "1=hello\0012=goodbye\001"))
|
||||
assert(comp.reason == "Number of fields do not match")
|
||||
# mathing non-deterministic field
|
||||
assert(comp.compare(
|
||||
"1=hello\0012=goodbye\00152=12345678-12:23:34\001", "1=hello\0012=goodbye\00152=87654321-98:87:76\001"))
|
||||
# non-matching non-deterministic field
|
||||
assert(!comp.compare(
|
||||
"1=hello\0012=goodbye\00152=12345678-12:23:34\001", "1=hello\0012=goodbye\00152=7654321-98:87:76\001"))
|
||||
assert(comp.reason == "Field (52) does not match pattern")
|
||||
end
|
||||
|
||||
end
|
||||
53
quickfix/_test/FixParser.rb
Normal file
53
quickfix/_test/FixParser.rb
Normal file
@ -0,0 +1,53 @@
|
||||
#****************************************************************************
|
||||
# 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 "socket"
|
||||
|
||||
class FixParser
|
||||
|
||||
def initialize(io)
|
||||
@io = io
|
||||
end
|
||||
|
||||
def readFixMessage()
|
||||
if(@io.eof?)
|
||||
raise "Was disconnected, expected data"
|
||||
end
|
||||
|
||||
m = ""
|
||||
# read to begining of MsgLen field
|
||||
m = @io.gets("\0019=")
|
||||
# read contents of MsgLen field
|
||||
length = @io.gets("\001")
|
||||
m += length
|
||||
length.chop!
|
||||
|
||||
# regex checks to make sure length is an integer
|
||||
# if it isn't there is nothing we can do so
|
||||
# close the connection
|
||||
if( (/^\d*$/ === length) == nil )
|
||||
@io.close
|
||||
end
|
||||
# read body
|
||||
m += @io.read(Integer(length))
|
||||
# read CheckSum
|
||||
m += @io.gets("\001")
|
||||
return m
|
||||
end
|
||||
|
||||
end
|
||||
46
quickfix/_test/FixParserTestCase.rb
Normal file
46
quickfix/_test/FixParserTestCase.rb
Normal file
@ -0,0 +1,46 @@
|
||||
require 'FixParser'
|
||||
require 'runit/testcase'
|
||||
require "thread"
|
||||
require 'SocketServer'
|
||||
|
||||
class FixParserTestCase < RUNIT::TestCase
|
||||
|
||||
def test_readFixMessage
|
||||
fixMsg1 = "8=FIX.4.2\0019=12\00135=A\001108=30\00110=31\001"
|
||||
fixMsg2 = "8=FIX.4.2\0019=17\00135=4\00136=88\001123=Y\00110=34\001"
|
||||
|
||||
server = SocketServer.new
|
||||
def server.message=(m)
|
||||
@message = m
|
||||
end
|
||||
|
||||
def server.connectAction(s)
|
||||
end
|
||||
|
||||
def server.receiveAction(s)
|
||||
s.write(@message)
|
||||
end
|
||||
|
||||
def server.disconnectAction(s)
|
||||
end
|
||||
|
||||
server.message = fixMsg1 + fixMsg2
|
||||
Thread.start do
|
||||
server.listen(RUNIT::TestCase.port)
|
||||
end
|
||||
server.wait
|
||||
|
||||
s = TCPSocket.open("localhost", RUNIT::TestCase.port)
|
||||
parser = FixParser.new(s)
|
||||
begin
|
||||
assert_equals(fixMsg1, parser.readFixMessage)
|
||||
assert_equals(fixMsg2, parser.readFixMessage)
|
||||
rescue IOError
|
||||
# I have no idea why this is being thrown
|
||||
end
|
||||
|
||||
s.close
|
||||
server.stop()
|
||||
end
|
||||
|
||||
end
|
||||
150
quickfix/_test/Reflector.rb
Normal file
150
quickfix/_test/Reflector.rb
Normal file
@ -0,0 +1,150 @@
|
||||
#****************************************************************************
|
||||
# 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.
|
||||
#****************************************************************************
|
||||
|
||||
class Reflector < Array
|
||||
|
||||
def identifyMessage(message)
|
||||
if [?I, ?E, ?R, ?i, ?e].include?(message[0])
|
||||
return message[0]
|
||||
else
|
||||
return ?X
|
||||
end
|
||||
end
|
||||
|
||||
def processFile(messages)
|
||||
lineNum = 0
|
||||
messages.each_line do
|
||||
| line |
|
||||
lineNum += 1
|
||||
line.chomp!
|
||||
if line.empty? then
|
||||
elsif (/^[IEie]\d{1},/ === line) then
|
||||
cid = line[1].to_i - 48
|
||||
body = fixify!(timify!(line[3, line.length]))
|
||||
else
|
||||
cid = 1
|
||||
body = fixify!(timify!(line[1, line.length]))
|
||||
end
|
||||
|
||||
begin
|
||||
processLine(lineNum, line, body, cid)
|
||||
rescue
|
||||
errorAction(lineNum, line);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def processLine(lineNum, line, body, cid)
|
||||
if line.empty?
|
||||
elsif line[0] == ?\#
|
||||
elsif identifyMessage(line) == ?I
|
||||
initiateAction(body, cid)
|
||||
elsif identifyMessage(line) == ?E
|
||||
expectedAction(body, cid)
|
||||
elsif identifyMessage(line) == ?i
|
||||
if body == "CONNECT"
|
||||
connectAction(cid)
|
||||
elsif body == "DISCONNECT"
|
||||
disconnectAction(cid)
|
||||
elsif body.index("SET_SESSION") == 0
|
||||
setSeqnum(body)
|
||||
else
|
||||
raise "Syntax error: " + body
|
||||
end
|
||||
elsif identifyMessage(line) == ?e
|
||||
if body == "CONNECT"
|
||||
waitConnectAction(cid)
|
||||
elsif body == "DISCONNECT"
|
||||
waitDisconnectAction(cid)
|
||||
else
|
||||
raise "Syntax error: " + body
|
||||
end
|
||||
else
|
||||
raise "Syntax error: " + body
|
||||
end
|
||||
end
|
||||
|
||||
def fixify!(message)
|
||||
hasLength = (message =~ /[\001]9=.*?[\001]/)
|
||||
length = ""
|
||||
|
||||
head = message.slice!(/^8=.*?[\001]/)
|
||||
|
||||
if head == nil
|
||||
return message
|
||||
end
|
||||
|
||||
checksum = message.slice(/[\001]10=.*[\001]$/)
|
||||
if(checksum != nil)
|
||||
message.slice!(/[\001]10=.*[\001]$/)
|
||||
end
|
||||
|
||||
message.chomp!
|
||||
if hasLength == nil
|
||||
length = "9=" + message.length.to_s + "\001"
|
||||
end
|
||||
|
||||
if checksum == nil
|
||||
checksumStr = sprintf("%03d", (head + length + message).sum(8));
|
||||
checksum = "10=" + checksumStr + "\001"
|
||||
end
|
||||
|
||||
message.replace(head + length + message + checksum)
|
||||
return message
|
||||
end
|
||||
|
||||
def timify!(message)
|
||||
copy = ""
|
||||
copy.replace(message)
|
||||
t = getTime
|
||||
|
||||
strtime = t.strftime("%Y%m%d-%H:%M:%S")
|
||||
message.sub!("<TIME>", strtime)
|
||||
if( message != copy )
|
||||
return timify!(message)
|
||||
end
|
||||
|
||||
pos1 = /\<TIME[+-]\d+\>/ =~ message
|
||||
pos2 = /\>/ =~ message
|
||||
if( pos1 != nil )
|
||||
op = message[pos1 + 5]
|
||||
num = message.slice(pos1+6..pos2-1)
|
||||
if( op == ?+ )
|
||||
t += num.to_i
|
||||
else
|
||||
t -= num.to_i
|
||||
end
|
||||
|
||||
strtime = t.strftime("%Y%m%d-%H:%M:%S")
|
||||
exp = Regexp.compile("<TIME[" + op.chr + "]" + num + ">")
|
||||
message.sub!(exp, strtime)
|
||||
if( message != copy )
|
||||
return timify!(message)
|
||||
end
|
||||
end
|
||||
|
||||
return message
|
||||
end
|
||||
|
||||
def getTime
|
||||
t = Time.new
|
||||
t = t.gmtime
|
||||
return t
|
||||
end
|
||||
|
||||
end
|
||||
135
quickfix/_test/ReflectorClient.rb
Normal file
135
quickfix/_test/ReflectorClient.rb
Normal file
@ -0,0 +1,135 @@
|
||||
#****************************************************************************
|
||||
# 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 'Reflector'
|
||||
require 'FixParser'
|
||||
require "socket"
|
||||
require 'uri'
|
||||
require 'net/http'
|
||||
|
||||
class ReflectorClient
|
||||
|
||||
def initialize(messages, address, port)
|
||||
@reflector = Reflector.new
|
||||
@messages = messages
|
||||
@sockets = Hash.new(nil)
|
||||
@parsers = Hash.new(nil)
|
||||
|
||||
def @reflector.address=(a)
|
||||
@address = a
|
||||
end
|
||||
|
||||
def @reflector.port=(p)
|
||||
@port = p
|
||||
end
|
||||
|
||||
def @reflector.client=(c)
|
||||
@client = c
|
||||
end
|
||||
|
||||
def @reflector.sockets=(s)
|
||||
@sockets = s
|
||||
end
|
||||
|
||||
def @reflector.parsers=(p)
|
||||
@parsers = p
|
||||
end
|
||||
|
||||
def @reflector.connectAction(cid)
|
||||
socket = TCPSocket.open(@address, @port)
|
||||
if socket == nil
|
||||
raise IOError("failed to connect")
|
||||
end
|
||||
@sockets[cid] = socket
|
||||
@parsers[cid] = FixParser.new(socket)
|
||||
end
|
||||
|
||||
def @reflector.disconnectAction(cid)
|
||||
@sockets[cid].close
|
||||
@sockets.delete(cid)
|
||||
@parsers.delete(cid)
|
||||
end
|
||||
|
||||
def @reflector.setSeqnum(body)
|
||||
left_array = body.split(" ")
|
||||
uri = URI('http://localhost:8095/seqnum?SESSION='+left_array[1]+'&'+left_array[2])
|
||||
Net::HTTP.get_response(uri)
|
||||
end
|
||||
|
||||
def @reflector.waitConnectAction(cid)
|
||||
end
|
||||
|
||||
def @reflector.waitDisconnectAction(cid)
|
||||
begin
|
||||
socket = @sockets[cid]
|
||||
if IO.select([socket], nil, nil, 10) == nil then
|
||||
raise "Connection hangs after ten seconds."
|
||||
elsif !socket.eof? then
|
||||
raise "Expected disconnection, got data"
|
||||
end
|
||||
rescue Errno::ECONNRESET
|
||||
# Ignore, server has already disconnected the socket
|
||||
end
|
||||
end
|
||||
|
||||
def @reflector.initiateAction(msg, cid)
|
||||
if( @sockets[cid] == nil )
|
||||
raise "Unable to send message because connection was dropped"
|
||||
end
|
||||
@sockets[cid].write(msg)
|
||||
@client.initiateAction(msg, cid)
|
||||
end
|
||||
|
||||
def @reflector.expectedAction(msg, cid)
|
||||
m = @parsers[cid].readFixMessage
|
||||
@client.expectedAction(msg, cid)
|
||||
@client.compareAction(msg, m)
|
||||
end
|
||||
|
||||
def @reflector.errorAction(lineNum, line)
|
||||
@client.errorAction(lineNum, line)
|
||||
end
|
||||
|
||||
@reflector.client = self
|
||||
@reflector.address = address
|
||||
@reflector.port = port
|
||||
@reflector.sockets = @sockets
|
||||
@reflector.parsers = @parsers
|
||||
end
|
||||
|
||||
def start()
|
||||
@reflector.processFile(@messages)
|
||||
end
|
||||
|
||||
def stop()
|
||||
@sockets.each do
|
||||
|cid, s|
|
||||
begin
|
||||
s.close
|
||||
rescue
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def initiateAction(msg, cid)
|
||||
end
|
||||
def expectedAction(msg, cid)
|
||||
end
|
||||
def responseAction(msg, cid)
|
||||
end
|
||||
end
|
||||
55
quickfix/_test/ReflectorClientTestCase.rb
Normal file
55
quickfix/_test/ReflectorClientTestCase.rb
Normal file
@ -0,0 +1,55 @@
|
||||
require 'ReflectorClient'
|
||||
require 'runit/testcase'
|
||||
require 'ReflectorServer'
|
||||
require "thread"
|
||||
|
||||
class ReflectorClientTestCase < RUNIT::TestCase
|
||||
|
||||
def test_reflectMessages
|
||||
|
||||
serverMessages = "E8=FIX.4.2\0019=13\00135=AC\001108=30\00110=31\001\n"
|
||||
serverMessages += "I8=FIX.4.2\0019=13\00135=AS\001108=10\00110=31\001\n"
|
||||
serverMessages += "E8=FIX.4.2\0019=13\00135=BC\001108=25\00110=31\001\n"
|
||||
serverMessages += "I8=FIX.4.2\0019=13\00135=BS\001108=15\00110=31\001\n"
|
||||
|
||||
clientMessages = "iCONNECT\n"
|
||||
clientMessages += "I8=FIX.4.2\0019=13\00135=AC\001108=30\00110=31\001\n"
|
||||
clientMessages += "E8=FIX.4.2\0019=13\00135=AS\001108=10\00110=31\001\n"
|
||||
clientMessages += "I8=FIX.4.2\0019=13\00135=BC\001108=25\00110=31\001\n"
|
||||
clientMessages += "E8=FIX.4.2\0019=13\00135=BS\001108=15\00110=31\001\n"
|
||||
clientMessages += "iDISCONNECT\n"
|
||||
|
||||
server = ReflectorServer.new(serverMessages)
|
||||
client = ReflectorClient.new(clientMessages, "localhost", RUNIT::TestCase.port)
|
||||
|
||||
def client.next
|
||||
begin
|
||||
return @queue.pop 0
|
||||
rescue
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
def client.compareAction(e, a)
|
||||
if !defined? @queue
|
||||
@queue = Queue.new
|
||||
end
|
||||
@queue.push(e)
|
||||
@queue.push(a)
|
||||
end
|
||||
|
||||
Thread.start do
|
||||
server.listen(RUNIT::TestCase.port)
|
||||
end
|
||||
server.wait
|
||||
|
||||
client.start()
|
||||
assert_equals("8=FIX.4.2\0019=13\00135=AS\001108=10\00110=31\001", client.next)
|
||||
assert_equals("8=FIX.4.2\0019=13\00135=AS\001108=10\00110=31\001", client.next)
|
||||
assert_equals("8=FIX.4.2\0019=13\00135=BS\001108=15\00110=31\001", client.next)
|
||||
assert_equals("8=FIX.4.2\0019=13\00135=BS\001108=15\00110=31\001", client.next)
|
||||
assert_equals(nil, client.next)
|
||||
server.stop
|
||||
end
|
||||
|
||||
end
|
||||
111
quickfix/_test/ReflectorServer.rb
Normal file
111
quickfix/_test/ReflectorServer.rb
Normal file
@ -0,0 +1,111 @@
|
||||
#****************************************************************************
|
||||
# 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 'SocketServer'
|
||||
require 'Reflector'
|
||||
|
||||
class ReflectorServer < SocketServer
|
||||
|
||||
def initialize(messages, address = "localhost", port = 5000)
|
||||
@reflector = Reflector.new
|
||||
@parser = nil
|
||||
@socket = nil
|
||||
@messages = messages
|
||||
@port = port
|
||||
|
||||
def @reflector.socket=(s)
|
||||
@socket = s
|
||||
end
|
||||
|
||||
def @reflector.socket
|
||||
return @socket
|
||||
end
|
||||
|
||||
def @reflector.server=(s)
|
||||
@server = s
|
||||
end
|
||||
|
||||
def @reflector.parser=(s)
|
||||
@parser = s
|
||||
end
|
||||
|
||||
def @reflector.expectedAction(msg, cid)
|
||||
m = @parser.readFixMessage
|
||||
@server.compareAction(msg, m)
|
||||
end
|
||||
|
||||
def @reflector.initiateAction(msg, cid)
|
||||
@socket.write(msg)
|
||||
end
|
||||
|
||||
def @reflector.waitConnectAction(cid)
|
||||
@server.waitConnectAction
|
||||
end
|
||||
|
||||
def @reflector.waitDisconnectAction(cid)
|
||||
begin
|
||||
if IO.select([@socket], nil, nil, 10) == nil then
|
||||
raise "Connection hangs after five seconds."
|
||||
elsif !@socket.eof? then
|
||||
raise "Expected disconnection, got data"
|
||||
end
|
||||
rescue Errno::ECONNRESET
|
||||
# Ignore, client has already disconnected the socket
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def connectAction(s)
|
||||
if @socket == nil
|
||||
@socket = s
|
||||
@reflector.socket = s
|
||||
@reflector.server = self
|
||||
else
|
||||
s.close
|
||||
end
|
||||
end
|
||||
|
||||
def waitConnectAction
|
||||
gs = TCPServer.open(@port)
|
||||
addr = gs.addr
|
||||
addr.shift
|
||||
if IO.select([gs], nil, nil, 10) == nil then
|
||||
raise "Connection hangs after ten seconds."
|
||||
end
|
||||
@socket = gs.accept
|
||||
@parser = FixParser.new(@socket)
|
||||
@reflector.parser = @parser
|
||||
@reflector.socket = @socket
|
||||
end
|
||||
|
||||
def disconnectAction(s)
|
||||
end
|
||||
|
||||
def receiveAction(s)
|
||||
end
|
||||
|
||||
def compareAction(e, a)
|
||||
end
|
||||
|
||||
def start
|
||||
@reflector.server = self
|
||||
@reflector.processFile(@messages)
|
||||
end
|
||||
|
||||
end
|
||||
33
quickfix/_test/ReflectorServerTestCase.rb
Normal file
33
quickfix/_test/ReflectorServerTestCase.rb
Normal file
@ -0,0 +1,33 @@
|
||||
require 'ReflectorServer'
|
||||
require 'runit/testcase'
|
||||
require "thread"
|
||||
|
||||
class ReflectorServerTestCase < RUNIT::TestCase
|
||||
|
||||
def test_reflectMessages
|
||||
messages = "E8=FIX.4.2\0019=12\00135=A\001108=30\00110=31\001\n"
|
||||
messages += "R8=FIX.4.2\0019=12\00135=A\001108=10\00110=31\001\n"
|
||||
messages += "E8=FIX.4.2\0019=12\00135=A\001108=25\00110=31\001\n"
|
||||
messages += "R8=FIX.4.2\0019=12\00135=A\001108=15\00110=31\001\n"
|
||||
|
||||
server = ReflectorServer.new(messages)
|
||||
Thread.start do
|
||||
server.listen(RUNIT::TestCase.port)
|
||||
end
|
||||
server.wait
|
||||
|
||||
s = TCPSocket.open("localhost", RUNIT::TestCase.port)
|
||||
parser = FixParser.new(s)
|
||||
|
||||
begin
|
||||
s.write("8=FIX.4.2\0019=12\00135=A\001108=30\00110=31\001")
|
||||
assert_equals("8=FIX.4.2\0019=12\00135=A\001108=10\00110=31\001", parser.readFixMessage)
|
||||
s.write("8=FIX.4.2\0019=12\00135=A\001108=30\00125=31\001")
|
||||
assert_equals("8=FIX.4.2\0019=12\00135=A\001108=15\00110=31\001", parser.readFixMessage)
|
||||
rescue IOError
|
||||
end
|
||||
|
||||
s.close
|
||||
server.stop
|
||||
end
|
||||
end
|
||||
208
quickfix/_test/ReflectorTestCase.rb
Normal file
208
quickfix/_test/ReflectorTestCase.rb
Normal file
@ -0,0 +1,208 @@
|
||||
require 'Reflector'
|
||||
|
||||
class MockReflector < Reflector
|
||||
def getTime
|
||||
t = Time.gm(2000, "jan", 1, 20, 15, 1)
|
||||
return t
|
||||
end
|
||||
end
|
||||
|
||||
require 'runit/testcase'
|
||||
|
||||
class ReflectorTestCase < RUNIT::TestCase
|
||||
|
||||
def test_identifyMessage
|
||||
reflector = Reflector.new
|
||||
message = "I8=FIX42"
|
||||
assert(reflector.identifyMessage(message) == ?I)
|
||||
message = "E8=FIX42"
|
||||
assert(reflector.identifyMessage(message) == ?E)
|
||||
message = "R8=FIX42"
|
||||
assert(reflector.identifyMessage(message) == ?R)
|
||||
message = "8=FIX42"
|
||||
assert(reflector.identifyMessage(message) == ?X)
|
||||
message = "iACTION"
|
||||
assert(reflector.identifyMessage(message) == ?i)
|
||||
message = "eACTION"
|
||||
assert(reflector.identifyMessage(message) == ?e)
|
||||
end
|
||||
|
||||
def test_timify_and_fixify
|
||||
reflector = MockReflector.new
|
||||
|
||||
str = reflector.fixify!(reflector.timify!("8=FIX.4.235=D34=249=PATS52=<TIME>56=RCG1=acct111=121=138=240=154=155=ESU260=<TIME>167=FUT204=1207=CME9701=omni19702=19706=E9707=1239708=G"))
|
||||
assert_equals("8=FIX.4.29=17135=D34=249=PATS52=20000101-20:15:0156=RCG1=acct111=121=138=240=154=155=ESU260=20000101-20:15:01167=FUT204=1207=CME9701=omni19702=19706=E9707=1239708=G10=121", str)
|
||||
|
||||
str = reflector.fixify!(reflector.timify!("8=FIX.4.235=D34=249=PATS52=<TIME>56=RCG1=acct111=121=138=240=154=155=ESU260=<TIME>167=FUT204=1207=CME9701=omni19702=19706=E9707=1239708=G9709=PEA"))
|
||||
assert_equals("8=FIX.4.29=18035=D34=249=PATS52=20000101-20:15:0156=RCG1=acct111=121=138=240=154=155=ESU260=20000101-20:15:01167=FUT204=1207=CME9701=omni19702=19706=E9707=1239708=G9709=PEA10=102", str)
|
||||
|
||||
end
|
||||
|
||||
def test_fixify_bang
|
||||
reflector = Reflector.new
|
||||
|
||||
str = "8=FIX.4.235=A34=149=TW52=20000426-12:05:06" +
|
||||
"56=ISLD98=0108=30"
|
||||
reflector.fixify!(str)
|
||||
assert_equals("8=FIX.4.29=5735=A34=149=TW52=20000426-12:05:0656=ISLD98=0108=3010=005", str)
|
||||
|
||||
str = "8=FIX.4.29=5735=A34=149=TW52=20000426-12:05:06" +
|
||||
"56=ISLD98=0108=3010=005"
|
||||
reflector.fixify!(str)
|
||||
assert_equals("8=FIX.4.29=5735=A34=149=TW52=20000426-12:05:0656=ISLD98=0108=3010=005", str)
|
||||
end
|
||||
|
||||
def test_timify_bang
|
||||
reflector = Reflector.new
|
||||
|
||||
str = "8=FIX.4.29=5735=A34=149=TW52=20011010-10:10:1056=ISLD98=0108=3010=005"
|
||||
reflector.timify!(str)
|
||||
assert_equals("8=FIX.4.29=5735=A34=149=TW52=20011010-10:10:1056=ISLD98=0108=3010=005", str)
|
||||
|
||||
str = "8=FIX.4.29=5735=A34=149=TW52=<TIME>56=ISLD98=0" +
|
||||
"108=3010=005"
|
||||
reflector.timify!(str)
|
||||
match = (/8=FIX.4.29=5735=A34=149=TW52=\d{8}-\d{2}:\d{2}:\d{2}56=ISLD98=0108=3010=005/ === str)
|
||||
assert(match != nil)
|
||||
|
||||
str = "8=FIX.4.29=5735=A34=149=TW52=<TIME>56=ISLD" +
|
||||
"122=<TIME>98=0108=3010=005"
|
||||
reflector.timify!(str)
|
||||
match = (/8=FIX.4.29=5735=A34=149=TW52=\d{8}-\d{2}:\d{2}:\d{2}56=ISLD122=\d{8}-\d{2}:\d{2}:\d{2}98=0108=3010=005/ === str)
|
||||
assert(match != nil)
|
||||
|
||||
str = "8=FIX.4.29=5735=A34=149=TW52=<TIME+9>56=ISLD98=0" +
|
||||
"108=3010=005"
|
||||
reflector.timify!(str)
|
||||
match = (/8=FIX.4.29=5735=A34=149=TW52=\d{8}-\d{2}:\d{2}:\d{2}56=ISLD98=0108=3010=005/ === str)
|
||||
assert(match != nil)
|
||||
|
||||
str = "8=FIX.4.29=5735=A34=149=TW52=<TIME>56=ISLD98=0" +
|
||||
"108=3060=<TIME>10=005"
|
||||
reflector.timify!(str)
|
||||
match = (/8=FIX.4.29=5735=A34=149=TW52=\d{8}-\d{2}:\d{2}:\d{2}56=ISLD98=0108=3060=\d{8}-\d{2}:\d{2}:\d{2}10=005/ === str)
|
||||
assert(match != nil)
|
||||
|
||||
str = "8=FIX.4.235=D34=249=PATS52=<TIME>56=RCG1=acct111=121=138=240=154=155=ESU2" +
|
||||
"60=<TIME>167=FUT204=1207=CME9701=omni19702=19706=E9707=1239708=G9710=PEA"
|
||||
reflector.timify!(str)
|
||||
match = (/8=FIX.4.235=D34=249=PATS52=\d{8}-\d{2}:\d{2}:\d{2}56=RCG1=acct111=121=138=240=154=155=ESU260=\d{8}-\d{2}:\d{2}:\d{2}167=FUT204=1207=CME9701=omni19702=19706=E9707=1239708=G9710=PEA/ === str)
|
||||
assert(match != nil)
|
||||
end
|
||||
|
||||
def test_identifyFile
|
||||
reflector = Reflector.new
|
||||
messages = "E8=1\nI8=2\n\nI8=3\nE8=4\n#foo\nE8=5\nE8=6\nI8=7\niCONNECT\neDISCONNECT\neCONNECT\niDISCONNECT\nE2,8=8\n"
|
||||
cum = ""
|
||||
|
||||
def reflector.ini=(i)
|
||||
@ini = i
|
||||
end
|
||||
def reflector.ini
|
||||
return @ini
|
||||
end
|
||||
|
||||
def reflector.cum=(c)
|
||||
@cum = c
|
||||
end
|
||||
def reflector.cum
|
||||
return @cum
|
||||
end
|
||||
|
||||
def reflector.exp=(e)
|
||||
@exp = e
|
||||
end
|
||||
def reflector.exp
|
||||
return @exp
|
||||
end
|
||||
|
||||
def reflector.icon=(i)
|
||||
@icon = i
|
||||
end
|
||||
def reflector.icon
|
||||
return @icon
|
||||
end
|
||||
|
||||
def reflector.idis=(i)
|
||||
@idis = i
|
||||
end
|
||||
def reflector.idis
|
||||
return @idis
|
||||
end
|
||||
|
||||
def reflector.econ=(e)
|
||||
@econ = e
|
||||
end
|
||||
def reflector.econ
|
||||
return @econ
|
||||
end
|
||||
|
||||
def reflector.edis=(e)
|
||||
@edis = e
|
||||
end
|
||||
def reflector.edis
|
||||
return @edis
|
||||
end
|
||||
|
||||
def reflector.err=(e)
|
||||
@err = e
|
||||
end
|
||||
def reflector.err
|
||||
return @err
|
||||
end
|
||||
|
||||
reflector.ini = ""; reflector.cum = "";
|
||||
reflector.exp = ""; reflector.icon = "";
|
||||
reflector.idis = ""; reflector.econ = "";
|
||||
reflector.edis = ""; reflector.err = "";
|
||||
|
||||
def reflector.initiateAction(msg, cid)
|
||||
@cum += cid.to_s + "," + msg + "|"
|
||||
@ini += cid.to_s + "," + msg + "|"
|
||||
end
|
||||
|
||||
def reflector.expectedAction(msg, cid)
|
||||
@cum += cid.to_s + "," + msg + "|"
|
||||
@exp += cid.to_s + "," + msg + "|"
|
||||
end
|
||||
|
||||
def reflector.connectAction(cid)
|
||||
@cum += cid.to_s + "," + "iCONNECT" + "|"
|
||||
@icon += cid.to_s + "," + "iCONNECT" + "|"
|
||||
end
|
||||
|
||||
def reflector.disconnectAction(cid)
|
||||
@cum += cid.to_s + "," + "iDISCONNECT" + "|"
|
||||
@idis += cid.to_s + "," + "iDISCONNECT" + "|"
|
||||
end
|
||||
|
||||
def reflector.waitConnectAction(cid)
|
||||
@cum += cid.to_s + "," + "eCONNECT" + "|"
|
||||
@econ += cid.to_s + "," + "eCONNECT" + "|"
|
||||
end
|
||||
|
||||
def reflector.waitDisconnectAction(cid)
|
||||
@cum += cid.to_s + "," + "eDISCONNECT" + "|"
|
||||
@edis += cid.to_s + "," + "eDISCONNECT" + "|"
|
||||
end
|
||||
|
||||
def reflector.errorAction(lineNum, msg)
|
||||
@cum += msg + "|"
|
||||
@err += msg + "|"
|
||||
end
|
||||
|
||||
reflector.processFile(messages)
|
||||
|
||||
#messages = "E8=1\nI8=2\n\nI8=3\nE8=4\n#foo\nE8=5\nE8=6\nI8=7\niCONNECT\neDISCONNECT\neCONNECT\niDISCONNECT\nE2,8=8\n"
|
||||
|
||||
assert_equals("1,8=1|1,8=2|1,8=3|1,8=4|1,8=5|1,8=6|1,8=7|" +
|
||||
"1,iCONNECT|1,eDISCONNECT|1,eCONNECT|1,iDISCONNECT|2,8=8|",
|
||||
reflector.cum)
|
||||
assert_equals("1,8=2|1,8=3|1,8=7|", reflector.ini)
|
||||
assert_equals("1,8=1|1,8=4|1,8=5|1,8=6|2,8=8|", reflector.exp)
|
||||
assert_equals("1,iCONNECT|", reflector.icon)
|
||||
assert_equals("1,iDISCONNECT|", reflector.idis)
|
||||
assert_equals("1,eCONNECT|", reflector.econ)
|
||||
assert_equals("1,eDISCONNECT|", reflector.edis)
|
||||
end
|
||||
end
|
||||
144
quickfix/_test/Runner.rb
Normal file
144
quickfix/_test/Runner.rb
Normal file
@ -0,0 +1,144 @@
|
||||
#****************************************************************************
|
||||
# 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
|
||||
21
quickfix/_test/RunnerTestCase.rb
Normal file
21
quickfix/_test/RunnerTestCase.rb
Normal file
@ -0,0 +1,21 @@
|
||||
require 'Runner'
|
||||
require 'runit/testcase'
|
||||
|
||||
class RunnerTestCase < RUNIT::TestCase
|
||||
def test_createProcess
|
||||
process = createProcess("foo\nbar\niCONNECT\nbaz", "localhost", 39333)
|
||||
assert process.kind_of?(ReflectorClient)
|
||||
process = createProcess("iCONNECT\nfoo\nbar\nbaz", "localhost", 39333)
|
||||
assert process.kind_of?(ReflectorClient)
|
||||
process = createProcess("foo\nbar\neCONNECT\nbaz", "localhost", 39333)
|
||||
assert process.kind_of?(ReflectorServer)
|
||||
process = createProcess("eCONNECT\nfoo\nbar\nbaz", "localhost", 39333)
|
||||
assert process.kind_of?(ReflectorServer)
|
||||
process = createProcess("foo\nbar\nbaz", "localhost", 39333)
|
||||
assert process.nil?
|
||||
process = createProcess("foo\nbar\nbazeCONNECT", "localhost", 39333)
|
||||
assert process.nil?
|
||||
process = createProcess("", "localhost", 39333)
|
||||
assert process.nil?
|
||||
end
|
||||
end
|
||||
57
quickfix/_test/SocketServer.rb
Normal file
57
quickfix/_test/SocketServer.rb
Normal file
@ -0,0 +1,57 @@
|
||||
#****************************************************************************
|
||||
# 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 "socket"
|
||||
|
||||
class SocketServer
|
||||
|
||||
def listen(port)
|
||||
|
||||
@gs = TCPServer.open(port)
|
||||
addr = @gs.addr
|
||||
addr.shift
|
||||
|
||||
while !@gs.closed?
|
||||
ns = @gs.accept
|
||||
Thread.start do
|
||||
s = ns
|
||||
connectAction(s)
|
||||
receiveAction(s)
|
||||
s.close
|
||||
disconnectAction(s)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def stop
|
||||
if not @gs.nil?
|
||||
@gs.close
|
||||
end
|
||||
end
|
||||
|
||||
def closed?
|
||||
return @gs.closed?
|
||||
end
|
||||
|
||||
def wait
|
||||
while( closed? )
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
68
quickfix/_test/SocketServerTestCase.rb
Normal file
68
quickfix/_test/SocketServerTestCase.rb
Normal file
@ -0,0 +1,68 @@
|
||||
require 'SocketServer'
|
||||
require 'runit/testcase'
|
||||
require "thread"
|
||||
|
||||
class SocketServerTestCase < RUNIT::TestCase
|
||||
|
||||
def test_listen
|
||||
socketServer = SocketServer.new
|
||||
connectQueue = Queue.new
|
||||
receiveQueue = Queue.new
|
||||
disconnectQueue = Queue.new
|
||||
|
||||
def socketServer.connectQueue=(q)
|
||||
@connectQueue = q
|
||||
end
|
||||
def socketServer.connectQueue
|
||||
return @connectQueue
|
||||
end
|
||||
|
||||
def socketServer.receiveQueue=(q)
|
||||
@receiveQueue = q
|
||||
end
|
||||
def socketServer.receiveQueue
|
||||
return @receiveQueue
|
||||
end
|
||||
|
||||
def socketServer.disconnectQueue=(q)
|
||||
@disconnectQueue = q
|
||||
end
|
||||
def socketServer.disconnectQueue
|
||||
return @disconnectQueue
|
||||
end
|
||||
|
||||
def socketServer.connectAction(s)
|
||||
@connectQueue.push(true)
|
||||
end
|
||||
|
||||
def socketServer.disconnectAction(s)
|
||||
@disconnectQueue.push(true)
|
||||
end
|
||||
|
||||
def socketServer.receiveAction(s)
|
||||
while( str = s.gets )
|
||||
@receiveQueue.push(str)
|
||||
end
|
||||
end
|
||||
|
||||
socketServer.connectQueue = connectQueue
|
||||
socketServer.receiveQueue = receiveQueue
|
||||
socketServer.disconnectQueue = disconnectQueue
|
||||
|
||||
Thread.start do
|
||||
socketServer.listen(RUNIT::TestCase.port)
|
||||
end
|
||||
socketServer.wait
|
||||
|
||||
s = TCPSocket.open("localhost", RUNIT::TestCase.port)
|
||||
assert(connectQueue.pop)
|
||||
s.write("test\r\n")
|
||||
s.write("test2\r\n")
|
||||
assert_equals("test\r\n", receiveQueue.pop)
|
||||
assert_equals("test2\r\n", receiveQueue.pop)
|
||||
s.close
|
||||
assert(disconnectQueue.pop)
|
||||
socketServer.stop()
|
||||
end
|
||||
|
||||
end
|
||||
10
quickfix/_test/atfixturerun.rb
Normal file
10
quickfix/_test/atfixturerun.rb
Normal file
@ -0,0 +1,10 @@
|
||||
$kidpid = fork;
|
||||
|
||||
if($kidpid == 0) {
|
||||
chdir("..");
|
||||
exec("debug/quickfix -t server -f cfg/at_server_test.cfg");
|
||||
}
|
||||
sleep(6000);
|
||||
`bash -c "./runall"`;
|
||||
|
||||
kill($kidpid);
|
||||
11
quickfix/_test/cfg/lastseqnumprocessed/fix42.cfg
Normal file
11
quickfix/_test/cfg/lastseqnumprocessed/fix42.cfg
Normal file
@ -0,0 +1,11 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5003
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.2
|
||||
DataDictionary=../spec/FIX42.xml
|
||||
EnableLastMsgSeqNumProcessed=Y
|
||||
11
quickfix/_test/cfg/lastseqnumprocessed/fix43.cfg
Normal file
11
quickfix/_test/cfg/lastseqnumprocessed/fix43.cfg
Normal file
@ -0,0 +1,11 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5004
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.3
|
||||
DataDictionary=../spec/FIX43.xml
|
||||
EnableLastMsgSeqNumProcessed=Y
|
||||
11
quickfix/_test/cfg/lastseqnumprocessed/fix44.cfg
Normal file
11
quickfix/_test/cfg/lastseqnumprocessed/fix44.cfg
Normal file
@ -0,0 +1,11 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5005
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.4
|
||||
DataDictionary=../spec/FIX44.xml
|
||||
EnableLastMsgSeqNumProcessed=Y
|
||||
14
quickfix/_test/cfg/lastseqnumprocessed/fix50.cfg
Normal file
14
quickfix/_test/cfg/lastseqnumprocessed/fix50.cfg
Normal file
@ -0,0 +1,14 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5006
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
SessionQualifier=FIX50
|
||||
DefaultApplVerID=FIX.5.0
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50.xml
|
||||
EnableLastMsgSeqNumProcessed=Y
|
||||
14
quickfix/_test/cfg/lastseqnumprocessed/fix50sp1.cfg
Normal file
14
quickfix/_test/cfg/lastseqnumprocessed/fix50sp1.cfg
Normal file
@ -0,0 +1,14 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5007
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
SessionQualifier=FIX50SP1
|
||||
DefaultApplVerID=FIX.5.0SP1
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50SP1.xml
|
||||
EnableLastMsgSeqNumProcessed=Y
|
||||
14
quickfix/_test/cfg/lastseqnumprocessed/fix50sp2.cfg
Normal file
14
quickfix/_test/cfg/lastseqnumprocessed/fix50sp2.cfg
Normal file
@ -0,0 +1,14 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5008
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
SessionQualifier=FIX50SP2
|
||||
DefaultApplVerID=FIX.5.0SP2
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50SP2.xml
|
||||
EnableLastMsgSeqNumProcessed=Y
|
||||
10
quickfix/_test/cfg/nextexpectedseqnum/fix44.cfg
Normal file
10
quickfix/_test/cfg/nextexpectedseqnum/fix44.cfg
Normal file
@ -0,0 +1,10 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5005
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.4
|
||||
DataDictionary=../spec/FIX44.xml
|
||||
EnableNextExpectedMsgSeqNum=Y
|
||||
12
quickfix/_test/cfg/nextexpectedseqnum/fix50.cfg
Normal file
12
quickfix/_test/cfg/nextexpectedseqnum/fix50.cfg
Normal file
@ -0,0 +1,12 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5006
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
DefaultApplVerID=FIX.5.0
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50.xml
|
||||
EnableNextExpectedMsgSeqNum=Y
|
||||
12
quickfix/_test/cfg/nextexpectedseqnum/fix50sp1.cfg
Normal file
12
quickfix/_test/cfg/nextexpectedseqnum/fix50sp1.cfg
Normal file
@ -0,0 +1,12 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5007
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
DefaultApplVerID=FIX.5.0SP1
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50SP1.xml
|
||||
EnableNextExpectedMsgSeqNum=Y
|
||||
12
quickfix/_test/cfg/nextexpectedseqnum/fix50sp2.cfg
Normal file
12
quickfix/_test/cfg/nextexpectedseqnum/fix50sp2.cfg
Normal file
@ -0,0 +1,12 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5008
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
DefaultApplVerID=FIX.5.0SP2
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50SP2.xml
|
||||
EnableNextExpectedMsgSeqNum=Y
|
||||
11
quickfix/_test/cfg/resendreqchunksize/fix40.cfg
Normal file
11
quickfix/_test/cfg/resendreqchunksize/fix40.cfg
Normal file
@ -0,0 +1,11 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5001
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.0
|
||||
DataDictionary=../spec/FIX40.xml
|
||||
ResendRequestChunkSize=5
|
||||
11
quickfix/_test/cfg/resendreqchunksize/fix41.cfg
Normal file
11
quickfix/_test/cfg/resendreqchunksize/fix41.cfg
Normal file
@ -0,0 +1,11 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5002
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.1
|
||||
DataDictionary=../spec/FIX41.xml
|
||||
ResendRequestChunkSize=5
|
||||
11
quickfix/_test/cfg/resendreqchunksize/fix42.cfg
Normal file
11
quickfix/_test/cfg/resendreqchunksize/fix42.cfg
Normal file
@ -0,0 +1,11 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5003
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.2
|
||||
DataDictionary=../spec/FIX42.xml
|
||||
ResendRequestChunkSize=5
|
||||
11
quickfix/_test/cfg/resendreqchunksize/fix43.cfg
Normal file
11
quickfix/_test/cfg/resendreqchunksize/fix43.cfg
Normal file
@ -0,0 +1,11 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5004
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.3
|
||||
DataDictionary=../spec/FIX43.xml
|
||||
ResendRequestChunkSize=5
|
||||
11
quickfix/_test/cfg/resendreqchunksize/fix44.cfg
Normal file
11
quickfix/_test/cfg/resendreqchunksize/fix44.cfg
Normal file
@ -0,0 +1,11 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5005
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.4
|
||||
DataDictionary=../spec/FIX44.xml
|
||||
ResendRequestChunkSize=5
|
||||
14
quickfix/_test/cfg/resendreqchunksize/fix50.cfg
Normal file
14
quickfix/_test/cfg/resendreqchunksize/fix50.cfg
Normal file
@ -0,0 +1,14 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5006
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
SessionQualifier=FIX50
|
||||
DefaultApplVerID=FIX.5.0
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50.xml
|
||||
ResendRequestChunkSize=5
|
||||
14
quickfix/_test/cfg/resendreqchunksize/fix50sp1.cfg
Normal file
14
quickfix/_test/cfg/resendreqchunksize/fix50sp1.cfg
Normal file
@ -0,0 +1,14 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5007
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
SessionQualifier=FIX50SP1
|
||||
DefaultApplVerID=FIX.5.0SP1
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50SP1.xml
|
||||
ResendRequestChunkSize=5
|
||||
14
quickfix/_test/cfg/resendreqchunksize/fix50sp2.cfg
Normal file
14
quickfix/_test/cfg/resendreqchunksize/fix50sp2.cfg
Normal file
@ -0,0 +1,14 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5008
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
SessionQualifier=FIX50SP2
|
||||
DefaultApplVerID=FIX.5.0SP2
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50SP2.xml
|
||||
ResendRequestChunkSize=5
|
||||
10
quickfix/_test/cfg/server/fix40.cfg
Normal file
10
quickfix/_test/cfg/server/fix40.cfg
Normal file
@ -0,0 +1,10 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5001
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.0
|
||||
DataDictionary=../spec/FIX40.xml
|
||||
10
quickfix/_test/cfg/server/fix41.cfg
Normal file
10
quickfix/_test/cfg/server/fix41.cfg
Normal file
@ -0,0 +1,10 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5002
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.1
|
||||
DataDictionary=../spec/FIX41.xml
|
||||
10
quickfix/_test/cfg/server/fix42.cfg
Normal file
10
quickfix/_test/cfg/server/fix42.cfg
Normal file
@ -0,0 +1,10 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5003
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.2
|
||||
DataDictionary=../spec/FIX42.xml
|
||||
10
quickfix/_test/cfg/server/fix43.cfg
Normal file
10
quickfix/_test/cfg/server/fix43.cfg
Normal file
@ -0,0 +1,10 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5004
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.3
|
||||
DataDictionary=../spec/FIX43.xml
|
||||
10
quickfix/_test/cfg/server/fix44.cfg
Normal file
10
quickfix/_test/cfg/server/fix44.cfg
Normal file
@ -0,0 +1,10 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5005
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIX.4.4
|
||||
DataDictionary=../spec/FIX44.xml
|
||||
13
quickfix/_test/cfg/server/fix50.cfg
Normal file
13
quickfix/_test/cfg/server/fix50.cfg
Normal file
@ -0,0 +1,13 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5006
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
SessionQualifier=FIX50
|
||||
DefaultApplVerID=FIX.5.0
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50.xml
|
||||
13
quickfix/_test/cfg/server/fix50sp1.cfg
Normal file
13
quickfix/_test/cfg/server/fix50sp1.cfg
Normal file
@ -0,0 +1,13 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5007
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
SessionQualifier=FIX50SP1
|
||||
DefaultApplVerID=FIX.5.0SP1
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50SP1.xml
|
||||
13
quickfix/_test/cfg/server/fix50sp2.cfg
Normal file
13
quickfix/_test/cfg/server/fix50sp2.cfg
Normal file
@ -0,0 +1,13 @@
|
||||
[DEFAULT]
|
||||
SocketAcceptPort=5008
|
||||
SenderCompID=ISLD
|
||||
TargetCompID=TW
|
||||
ResetOnLogon=Y
|
||||
FileLogPath=tmp
|
||||
|
||||
[SESSION]
|
||||
BeginString=FIXT.1.1
|
||||
SessionQualifier=FIX50SP2
|
||||
DefaultApplVerID=FIX.5.0SP2
|
||||
TransportDataDictionary=../spec/FIXT11.xml
|
||||
AppDataDictionary=../spec/FIX50SP2.xml
|
||||
5
quickfix/_test/definitions/fields.fmt
Normal file
5
quickfix/_test/definitions/fields.fmt
Normal file
@ -0,0 +1,5 @@
|
||||
10=\d{3}
|
||||
42=\d{8}-\d{2}:\d{2}:\d{2}
|
||||
52=\d{8}-\d{2}:\d{2}:\d{2}|\d{8}-\d{2}:\d{2}:\d{2}[.]\d{3}
|
||||
60=\d{8}-\d{2}:\d{2}:\d{2}
|
||||
122=\d{8}-\d{2}:\d{2}:\d{2}
|
||||
@ -0,0 +1,21 @@
|
||||
iCONNECT
|
||||
|
||||
I8=FIX.4.235=A34=149=TW52=<TIME>56=ISLD369=098=0108=2
|
||||
E8=FIX.4.29=6635=A34=149=ISLD52=00000000-00:00:00.00056=TW369=198=0108=210=0
|
||||
|
||||
I8=FIX.4.235=134=249=TW52=<TIME>56=ISLD369=1112=HELLO
|
||||
E8=FIX.4.29=6535=034=249=ISLD52=00000000-00:00:00.00056=TW369=2112=HELLO10=0
|
||||
|
||||
I8=FIX.4.235=034=349=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
I8=FIX.4.235=034=449=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
E8=FIX.4.29=5535=034=349=ISLD52=00000000-00:00:00.00056=TW369=410=0
|
||||
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.235=534=549=TW52=<TIME>56=ISLD369=3
|
||||
E8=FIX.4.29=5535=534=449=ISLD52=00000000-00:00:00.00056=TW369=510=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,21 @@
|
||||
iCONNECT
|
||||
|
||||
I8=FIX.4.335=A34=149=TW52=<TIME>56=ISLD369=098=0108=2
|
||||
E8=FIX.4.39=6635=A34=149=ISLD52=00000000-00:00:00.00056=TW369=198=0108=210=0
|
||||
|
||||
I8=FIX.4.335=134=249=TW52=<TIME>56=ISLD369=1112=HELLO
|
||||
E8=FIX.4.39=6535=034=249=ISLD52=00000000-00:00:00.00056=TW369=2112=HELLO10=0
|
||||
|
||||
I8=FIX.4.335=034=349=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
I8=FIX.4.335=034=449=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
E8=FIX.4.39=5535=034=349=ISLD52=00000000-00:00:00.00056=TW369=410=0
|
||||
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.335=534=549=TW52=<TIME>56=ISLD369=3
|
||||
E8=FIX.4.39=5535=534=449=ISLD52=00000000-00:00:00.00056=TW369=510=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,21 @@
|
||||
iCONNECT
|
||||
|
||||
I8=FIX.4.435=A34=149=TW52=<TIME>56=ISLD369=098=0108=2
|
||||
E8=FIX.4.49=6635=A34=149=ISLD52=00000000-00:00:00.00056=TW369=198=0108=210=0
|
||||
|
||||
I8=FIX.4.435=134=249=TW52=<TIME>56=ISLD369=1112=HELLO
|
||||
E8=FIX.4.49=6535=034=249=ISLD52=00000000-00:00:00.00056=TW369=2112=HELLO10=0
|
||||
|
||||
I8=FIX.4.435=034=349=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
I8=FIX.4.435=034=449=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
E8=FIX.4.49=5535=034=349=ISLD52=00000000-00:00:00.00056=TW369=410=0
|
||||
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.435=534=549=TW52=<TIME>56=ISLD369=3
|
||||
E8=FIX.4.49=5535=534=449=ISLD52=00000000-00:00:00.00056=TW369=510=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,21 @@
|
||||
iCONNECT
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD369=098=0108=21137=7
|
||||
E8=FIXT.1.19=7335=A34=149=ISLD52=00000000-00:00:00.00056=TW369=198=0108=21137=710=0
|
||||
|
||||
I8=FIXT.1.135=134=249=TW52=<TIME>56=ISLD369=1112=HELLO
|
||||
E8=FIXT.1.19=6535=034=249=ISLD52=00000000-00:00:00.00056=TW369=2112=HELLO10=0
|
||||
|
||||
I8=FIXT.1.135=034=349=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
I8=FIXT.1.135=034=449=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
E8=FIXT.1.19=5535=034=349=ISLD52=00000000-00:00:00.00056=TW369=410=0
|
||||
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=549=TW52=<TIME>56=ISLD369=3
|
||||
E8=FIXT.1.19=5535=534=449=ISLD52=00000000-00:00:00.00056=TW369=510=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,21 @@
|
||||
iCONNECT
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD369=098=0108=21137=8
|
||||
E8=FIXT.1.19=7335=A34=149=ISLD52=00000000-00:00:00.00056=TW369=198=0108=21137=810=0
|
||||
|
||||
I8=FIXT.1.135=134=249=TW52=<TIME>56=ISLD369=1112=HELLO
|
||||
E8=FIXT.1.19=6535=034=249=ISLD52=00000000-00:00:00.00056=TW369=2112=HELLO10=0
|
||||
|
||||
I8=FIXT.1.135=034=349=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
I8=FIXT.1.135=034=449=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
E8=FIXT.1.19=5535=034=349=ISLD52=00000000-00:00:00.00056=TW369=410=0
|
||||
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=549=TW52=<TIME>56=ISLD369=3
|
||||
E8=FIXT.1.19=5535=534=449=ISLD52=00000000-00:00:00.00056=TW369=510=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,21 @@
|
||||
iCONNECT
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD369=098=0108=21137=9
|
||||
E8=FIXT.1.19=7335=A34=149=ISLD52=00000000-00:00:00.00056=TW369=198=0108=21137=910=0
|
||||
|
||||
I8=FIXT.1.135=134=249=TW52=<TIME>56=ISLD369=1112=HELLO
|
||||
E8=FIXT.1.19=6535=034=249=ISLD52=00000000-00:00:00.00056=TW369=2112=HELLO10=0
|
||||
|
||||
I8=FIXT.1.135=034=349=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
I8=FIXT.1.135=034=449=TW52=<TIME>56=ISLD369=2
|
||||
|
||||
E8=FIXT.1.19=5535=034=349=ISLD52=00000000-00:00:00.00056=TW369=410=0
|
||||
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=549=TW52=<TIME>56=ISLD369=3
|
||||
E8=FIXT.1.19=5535=534=449=ISLD52=00000000-00:00:00.00056=TW369=510=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,16 @@
|
||||
iCONNECT
|
||||
|
||||
#------------------------
|
||||
# logon message and response
|
||||
# send logon with sequence number equals to 1
|
||||
# expect for a logon response with NextExpectedMsgSeqNum field equals to 2
|
||||
#------------------------
|
||||
|
||||
I8=FIX.4.435=A34=149=TW52=<TIME>56=ISLD98=0789=1108=2
|
||||
E8=FIX.4.49=6635=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=2789=210=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.435=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.49=4935=534=249=ISLD52=00000000-00:00:00.00056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,10 @@
|
||||
# If message NextExpectedMsgSeqNum field is too high, we must disconnect
|
||||
|
||||
iCONNECT
|
||||
iSET_SESSION FIX.4.4:ISLD->TW NEXTSENDERSEQNUM=1
|
||||
iSET_SESSION FIX.4.4:ISLD->TW NEXTTARGETSEQNUM=1
|
||||
|
||||
I8=FIX.4.435=A34=100049=TW52=<TIME>56=ISLD98=0789=1200108=30
|
||||
|
||||
E8=FIX.4.49=13535=534=149=ISLD52=00000000-00:00:00.00056=TW58=Tag 789 (NextExpectedMsgSeqNum) is higher than expected. Expected 1, Received 120010=0
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,14 @@
|
||||
iCONNECT
|
||||
iSET_SESSION FIX.4.4:ISLD->TW NEXTSENDERSEQNUM=2000
|
||||
iSET_SESSION FIX.4.4:ISLD->TW NEXTTARGETSEQNUM=1
|
||||
|
||||
I8=FIX.4.435=A34=149=TW52=<TIME>56=ISLD98=0789=1108=30
|
||||
|
||||
E8=FIX.4.49=7035=A34=200049=ISLD52=00000000-00:00:00.00056=TW98=0108=30789=210=0
|
||||
E8=FIX.4.49=9435=434=143=Y49=ISLD52=<TIME>56=TW122=<TIME>36=2001123=Y
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.435=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.49=5235=534=200149=ISLD52=00000000-00:00:00.00056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,14 @@
|
||||
# FIX Logon using tag 141/ResetSeqNumFlag and tag 789/NextExpectedSeqMsgNum
|
||||
|
||||
iCONNECT
|
||||
iSET_SESSION FIX.4.4:ISLD->TW NEXTSENDERSEQNUM=2000
|
||||
iSET_SESSION FIX.4.4:ISLD->TW NEXTTARGETSEQNUM=2000
|
||||
|
||||
I8=FIX.4.435=A34=149=TW52=<TIME>56=ISLD98=0789=1141=Y108=30
|
||||
E8=FIX.4.49=7335=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=30141=Y789=210=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.435=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.49=4935=534=249=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,16 @@
|
||||
iCONNECT
|
||||
|
||||
#------------------------
|
||||
# logon message and response
|
||||
# send logon with sequence number equals to 1
|
||||
# expect for a logon response with NextExpectedMsgSeqNum field equals to 2
|
||||
#------------------------
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0789=11137=7108=2
|
||||
E8=FIXT.1.19=7335=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=2789=21137=710=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=249=ISLD52=00000000-00:00:00.00056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,9 @@
|
||||
# If message NextExpectedMsgSeqNum field is too high, we must disconnect
|
||||
|
||||
iCONNECT
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTSENDERSEQNUM=1
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTTARGETSEQNUM=1
|
||||
I8=FIXT.1.135=A34=100049=TW52=<TIME>56=ISLD98=0789=12001137=7108=30
|
||||
|
||||
E8=FIXT.1.19=13535=534=149=ISLD52=00000000-00:00:00.00056=TW58=Tag 789 (NextExpectedMsgSeqNum) is higher than expected. Expected 1, Received 120010=0
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,14 @@
|
||||
iCONNECT
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTSENDERSEQNUM=2000
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTTARGETSEQNUM=1
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0789=11137=7108=30
|
||||
|
||||
E8=FIXT.1.19=7735=A34=200049=ISLD52=00000000-00:00:00.00056=TW98=0108=30789=21137=710=0
|
||||
E8=FIXT.1.19=9435=434=143=Y49=ISLD52=<TIME>56=TW122=<TIME>36=2001123=Y
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=5235=534=200149=ISLD52=00000000-00:00:00.00056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,14 @@
|
||||
# FIX Logon using tag 141/ResetSeqNumFlag and tag 789/NextExpectedSeqMsgNum
|
||||
|
||||
iCONNECT
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTSENDERSEQNUM=2000
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTTARGETSEQNUM=2000
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0789=1141=Y1137=7108=30
|
||||
E8=FIXT.1.19=8035=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=30141=Y789=21137=710=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=249=ISLD52=00000000-00:00:00.00056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,16 @@
|
||||
iCONNECT
|
||||
|
||||
#------------------------
|
||||
# logon message and response
|
||||
# send logon with sequence number equals to 1
|
||||
# expect for a logon response with NextExpectedMsgSeqNum field equals to 2
|
||||
#------------------------
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0789=11137=8108=2
|
||||
E8=FIXT.1.19=7335=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=2789=21137=810=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=249=ISLD52=00000000-00:00:00.00056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,9 @@
|
||||
# If message NextExpectedMsgSeqNum field is too high, we must disconnect
|
||||
|
||||
iCONNECT
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTSENDERSEQNUM=1
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTTARGETSEQNUM=1
|
||||
I8=FIXT.1.135=A34=100049=TW52=<TIME>56=ISLD98=0789=12001137=8108=30
|
||||
|
||||
E8=FIXT.1.19=13535=534=149=ISLD52=00000000-00:00:00.00056=TW58=Tag 789 (NextExpectedMsgSeqNum) is higher than expected. Expected 1, Received 120010=0
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,14 @@
|
||||
iCONNECT
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTSENDERSEQNUM=2000
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTTARGETSEQNUM=1
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0789=11137=10108=30
|
||||
|
||||
E8=FIXT.1.19=7735=A34=200049=ISLD52=00000000-00:00:00.00056=TW98=0108=30789=21137=810=0
|
||||
E8=FIXT.1.19=9435=434=143=Y49=ISLD52=<TIME>56=TW122=<TIME>36=2001123=Y
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=5235=534=200149=ISLD52=00000000-00:00:00.00056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,14 @@
|
||||
# FIX Logon using tag 141/ResetSeqNumFlag and tag 789/NextExpectedSeqMsgNum
|
||||
|
||||
iCONNECT
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTSENDERSEQNUM=2000
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTTARGETSEQNUM=2000
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0789=1141=Y1137=8108=30
|
||||
E8=FIXT.1.19=8035=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=30141=Y789=21137=810=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=249=ISLD52=00000000-00:00:00.00056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,16 @@
|
||||
iCONNECT
|
||||
|
||||
#------------------------
|
||||
# logon message and response
|
||||
# send logon with sequence number equals to 1
|
||||
# expect for a logon response with NextExpectedMsgSeqNum field equals to 2
|
||||
#------------------------
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0789=11137=9108=2
|
||||
E8=FIXT.1.19=7335=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=2789=21137=910=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=249=ISLD52=00000000-00:00:00.00056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,9 @@
|
||||
# If message NextExpectedMsgSeqNum field is too high, we must disconnect
|
||||
|
||||
iCONNECT
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTSENDERSEQNUM=1
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTTARGETSEQNUM=1
|
||||
I8=FIXT.1.135=A34=100049=TW52=<TIME>56=ISLD98=0789=12001137=9108=30
|
||||
|
||||
E8=FIXT.1.19=13535=534=149=ISLD52=00000000-00:00:00.00056=TW58=Tag 789 (NextExpectedMsgSeqNum) is higher than expected. Expected 1, Received 120010=0
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,14 @@
|
||||
iCONNECT
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTSENDERSEQNUM=2000
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTTARGETSEQNUM=1
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0789=11137=9108=30
|
||||
|
||||
E8=FIXT.1.19=7735=A34=200049=ISLD52=00000000-00:00:00.00056=TW98=0108=30789=21137=910=0
|
||||
E8=FIXT.1.19=9435=434=143=Y49=ISLD52=<TIME>56=TW122=<TIME>36=2001123=Y
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=5235=534=200149=ISLD52=00000000-00:00:00.00056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,14 @@
|
||||
# FIX Logon using tag 141/ResetSeqNumFlag and tag 789/NextExpectedSeqMsgNum
|
||||
|
||||
iCONNECT
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTSENDERSEQNUM=2000
|
||||
iSET_SESSION FIXT.1.1:ISLD->TW NEXTTARGETSEQNUM=2000
|
||||
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0789=1141=Y1137=9108=30
|
||||
E8=FIXT.1.19=8035=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=30141=Y789=21137=910=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=249=ISLD52=00000000-00:00:00.00056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,37 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.09=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
I8=FIX.4.035=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC
|
||||
E8=FIX.4.09=8135=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC10=0
|
||||
|
||||
I8=FIX.4.035=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC
|
||||
E8=FIX.4.09=8135=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC10=0
|
||||
|
||||
# Sending message 10 when last message sent was 3
|
||||
I8=FIX.4.035=034=1049=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIX.4.09=5435=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
I8=FIX.4.035=D34=449=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
I8=FIX.4.035=D34=549=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
I8=FIX.4.035=D34=649=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
I8=FIX.4.035=D34=749=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
I8=FIX.4.035=D34=849=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
|
||||
# Receive Resend request for messages 9 to infinity
|
||||
E8=FIX.4.09=5935=234=549=ISLD52=00000000-00:00:0056=TW7=916=99999910=0
|
||||
I8=FIX.4.035=D34=949=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIX.4.035=134=1149=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIX.4.09=5435=034=649=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=1249=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=749=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,41 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.09=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
I8=FIX.4.035=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC
|
||||
E8=FIX.4.09=8135=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC10=0
|
||||
|
||||
I8=FIX.4.035=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC
|
||||
E8=FIX.4.09=8135=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC10=0
|
||||
|
||||
# Sending message 15 when last message sent was 3
|
||||
I8=FIX.4.035=034=1549=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIX.4.09=5435=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
# Send a GapFill up to the last message 8
|
||||
I8=FIX.4.035=434=449=TW52=<TIME>56=ISLD123=Y36=8
|
||||
|
||||
# Receive Resend request for messages 8 to (8+5-1 = 12)
|
||||
E8=FIX.4.09=5535=234=549=ISLD52=00000000-00:00:0056=TW7=816=1210=0
|
||||
# Send a GapFill up to the last message 12
|
||||
I8=FIX.4.035=434=849=TW52=<TIME>56=ISLD123=Y36=12
|
||||
|
||||
# Receive Resend request for messages 12 to 15)
|
||||
E8=FIX.4.09=6035=234=649=ISLD52=00000000-00:00:0056=TW7=1216=99999910=0
|
||||
# Send a GapFill up to the last message 15
|
||||
I8=FIX.4.035=434=1249=TW52=<TIME>56=ISLD123=Y36=15
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIX.4.035=134=1649=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIX.4.09=5435=034=749=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=1749=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=849=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,37 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.135=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.19=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
I8=FIX.4.135=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC
|
||||
E8=FIX.4.19=8135=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC10=0
|
||||
|
||||
I8=FIX.4.135=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC
|
||||
E8=FIX.4.19=8135=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC10=0
|
||||
|
||||
# Sending message 10 when last message sent was 3
|
||||
I8=FIX.4.135=034=1049=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIX.4.19=5435=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
I8=FIX.4.135=D34=449=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
I8=FIX.4.135=D34=549=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
I8=FIX.4.135=D34=649=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
I8=FIX.4.135=D34=749=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
I8=FIX.4.135=D34=849=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
|
||||
# Receive Resend request for messages 9 to infinity
|
||||
E8=FIX.4.19=5935=234=549=ISLD52=00000000-00:00:0056=TW7=916=99999910=0
|
||||
I8=FIX.4.135=D34=949=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIX.4.135=134=1149=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIX.4.19=5435=034=649=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.135=534=1249=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.19=4535=534=749=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,41 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.135=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.19=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
I8=FIX.4.135=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC
|
||||
E8=FIX.4.19=8135=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC10=0
|
||||
|
||||
I8=FIX.4.135=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC
|
||||
E8=FIX.4.19=8135=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC10=0
|
||||
|
||||
# Sending message 15 when last message sent was 3
|
||||
I8=FIX.4.135=034=1549=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIX.4.19=5435=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
# Send a GapFill up to the last message 8
|
||||
I8=FIX.4.135=434=449=TW52=<TIME>56=ISLD123=Y36=8
|
||||
|
||||
# Receive Resend request for messages 8 to (8+5-1 = 12)
|
||||
E8=FIX.4.19=5535=234=549=ISLD52=00000000-00:00:0056=TW7=816=1210=0
|
||||
# Send a GapFill up to the last message 12
|
||||
I8=FIX.4.135=434=849=TW52=<TIME>56=ISLD123=Y36=12
|
||||
|
||||
# Receive Resend request for messages 12 to 15)
|
||||
E8=FIX.4.19=6035=234=649=ISLD52=00000000-00:00:0056=TW7=1216=99999910=0
|
||||
# Send a GapFill up to the last message 15
|
||||
I8=FIX.4.135=434=1249=TW52=<TIME>56=ISLD123=Y36=15
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIX.4.135=134=1649=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIX.4.19=5435=034=749=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.135=534=1749=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.19=4535=534=849=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,37 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.235=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.29=6135=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
I8=FIX.4.235=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.29=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIX.4.235=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.29=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 10 when last message sent was 3
|
||||
I8=FIX.4.235=034=1049=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIX.4.29=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
I8=FIX.4.235=D34=449=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.235=D34=549=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.235=D34=649=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.235=D34=749=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.235=D34=849=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
# Receive Resend request for messages 9 to infinity
|
||||
E8=FIX.4.29=5835=234=549=ISLD52=00000000-00:00:0056=TW7=916=010=0
|
||||
I8=FIX.4.235=D34=949=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIX.4.235=134=1149=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIX.4.29=5835=034=649=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.235=534=1249=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.29=4935=534=749=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,41 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.235=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.29=6135=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
I8=FIX.4.235=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.29=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIX.4.235=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.29=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 15 when last message sent was 3
|
||||
I8=FIX.4.235=034=1549=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIX.4.29=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
# Send a GapFill up to the last message 8
|
||||
I8=FIX.4.235=434=449=TW52=<TIME>56=ISLD123=Y36=8
|
||||
|
||||
# Receive Resend request for messages 8 to (8+5-1 = 12)
|
||||
E8=FIX.4.29=5935=234=549=ISLD52=00000000-00:00:0056=TW7=816=1210=0
|
||||
# Send a GapFill up to the last message 12
|
||||
I8=FIX.4.235=434=849=TW52=<TIME>56=ISLD123=Y36=12
|
||||
|
||||
# Receive Resend request for messages 12 to 15)
|
||||
E8=FIX.4.29=5935=234=649=ISLD52=00000000-00:00:0056=TW7=1216=010=0
|
||||
# Send a GapFill up to the last message 15
|
||||
I8=FIX.4.235=434=1249=TW52=<TIME>56=ISLD123=Y36=15
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIX.4.235=134=1649=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIX.4.29=5835=034=749=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.235=534=1749=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.29=4935=534=849=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,37 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.335=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.39=6135=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
I8=FIX.4.335=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.39=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIX.4.335=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.39=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 10 when last message sent was 3
|
||||
I8=FIX.4.335=034=1049=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIX.4.39=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
I8=FIX.4.335=D34=449=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.335=D34=549=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.335=D34=649=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.335=D34=749=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.335=D34=849=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
# Receive Resend request for messages 9 to infinity
|
||||
E8=FIX.4.39=5835=234=549=ISLD52=00000000-00:00:0056=TW7=916=010=0
|
||||
I8=FIX.4.335=D34=949=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIX.4.335=134=1149=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIX.4.39=5835=034=649=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.335=534=1249=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.39=4935=534=749=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,41 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.335=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.39=6135=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
I8=FIX.4.335=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.39=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIX.4.335=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.39=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 15 when last message sent was 3
|
||||
I8=FIX.4.335=034=1549=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIX.4.39=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
# Send a GapFill up to the last message 8
|
||||
I8=FIX.4.335=434=449=TW52=<TIME>56=ISLD123=Y36=8
|
||||
|
||||
# Receive Resend request for messages 8 to (8+5-1 = 12)
|
||||
E8=FIX.4.39=5935=234=549=ISLD52=00000000-00:00:0056=TW7=816=1210=0
|
||||
# Send a GapFill up to the last message 12
|
||||
I8=FIX.4.335=434=849=TW52=<TIME>56=ISLD123=Y36=12
|
||||
|
||||
# Receive Resend request for messages 12 to 15)
|
||||
E8=FIX.4.39=5935=234=649=ISLD52=00000000-00:00:0056=TW7=1216=010=0
|
||||
# Send a GapFill up to the last message 15
|
||||
I8=FIX.4.335=434=1249=TW52=<TIME>56=ISLD123=Y36=15
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIX.4.335=134=1649=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIX.4.39=5835=034=749=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.335=534=1749=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.39=4935=534=849=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,37 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.435=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.49=6135=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
I8=FIX.4.435=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.49=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIX.4.435=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.49=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 10 when last message sent was 3
|
||||
I8=FIX.4.435=034=1049=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIX.4.49=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
I8=FIX.4.435=D34=449=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.435=D34=549=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.435=D34=649=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.435=D34=749=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIX.4.435=D34=849=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
# Receive Resend request for messages 9 to infinity
|
||||
E8=FIX.4.49=5835=234=549=ISLD52=00000000-00:00:0056=TW7=916=010=0
|
||||
I8=FIX.4.435=D34=949=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIX.4.435=134=1149=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIX.4.49=5835=034=649=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.435=534=1249=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.49=4935=534=749=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,41 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.435=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.49=6135=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
I8=FIX.4.435=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.49=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIX.4.435=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIX.4.49=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 15 when last message sent was 3
|
||||
I8=FIX.4.435=034=1549=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIX.4.49=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
# Send a GapFill up to the last message 8
|
||||
I8=FIX.4.435=434=449=TW52=<TIME>56=ISLD123=Y36=8
|
||||
|
||||
# Receive Resend request for messages 8 to (8+5-1 = 12)
|
||||
E8=FIX.4.49=5935=234=549=ISLD52=00000000-00:00:0056=TW7=816=1210=0
|
||||
# Send a GapFill up to the last message 12
|
||||
I8=FIX.4.435=434=849=TW52=<TIME>56=ISLD123=Y36=12
|
||||
|
||||
# Receive Resend request for messages 12 to 15)
|
||||
E8=FIX.4.49=5935=234=649=ISLD52=00000000-00:00:0056=TW7=1216=010=0
|
||||
# Send a GapFill up to the last message 15
|
||||
I8=FIX.4.435=434=1249=TW52=<TIME>56=ISLD123=Y36=15
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIX.4.435=134=1649=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIX.4.49=5835=034=749=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.435=534=1749=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.49=4935=534=849=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,37 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0108=301137=7
|
||||
E8=FIXT.1.19=6835=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=301137=710=0
|
||||
|
||||
I8=FIXT.1.135=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIXT.1.135=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 10 when last message sent was 3
|
||||
I8=FIXT.1.135=034=1049=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIXT.1.19=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
I8=FIXT.1.135=D34=449=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=549=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=649=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=749=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=849=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
# Receive Resend request for messages 9 to infinity
|
||||
E8=FIXT.1.19=5835=234=549=ISLD52=00000000-00:00:0056=TW7=916=010=0
|
||||
I8=FIXT.1.135=D34=949=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIXT.1.135=134=1149=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIXT.1.19=5835=034=649=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=1249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=749=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,41 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0108=21137=7
|
||||
E8=FIXT.1.19=6735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=21137=710=0
|
||||
|
||||
I8=FIXT.1.135=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIXT.1.135=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 15 when last message sent was 3
|
||||
I8=FIXT.1.135=034=1549=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIXT.1.19=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
# Send a GapFill up to the last message 8
|
||||
I8=FIXT.1.135=434=449=TW52=<TIME>56=ISLD123=Y36=8
|
||||
|
||||
# Receive Resend request for messages 8 to (8+5-1 = 12)
|
||||
E8=FIXT.1.19=5935=234=549=ISLD52=00000000-00:00:0056=TW7=816=1210=0
|
||||
# Send a GapFill up to the last message 12
|
||||
I8=FIXT.1.135=434=849=TW52=<TIME>56=ISLD123=Y36=12
|
||||
|
||||
# Receive Resend request for messages 12 to 15)
|
||||
E8=FIXT.1.19=5935=234=649=ISLD52=00000000-00:00:0056=TW7=1216=010=0
|
||||
# Send a GapFill up to the last message 15
|
||||
I8=FIXT.1.135=434=1249=TW52=<TIME>56=ISLD123=Y36=15
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIXT.1.135=134=1649=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIXT.1.19=5835=034=749=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=1749=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=849=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,37 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0108=301137=8
|
||||
E8=FIXT.1.19=6835=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=301137=810=0
|
||||
|
||||
I8=FIXT.1.135=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIXT.1.135=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 10 when last message sent was 3
|
||||
I8=FIXT.1.135=034=1049=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIXT.1.19=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
I8=FIXT.1.135=D34=449=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=549=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=649=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=749=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=849=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
# Receive Resend request for messages 9 to infinity
|
||||
E8=FIXT.1.19=5835=234=549=ISLD52=00000000-00:00:0056=TW7=916=010=0
|
||||
I8=FIXT.1.135=D34=949=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIXT.1.135=134=1149=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIXT.1.19=5835=034=649=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=1249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=749=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,41 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0108=21137=8
|
||||
E8=FIXT.1.19=6735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=21137=810=0
|
||||
|
||||
I8=FIXT.1.135=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIXT.1.135=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 15 when last message sent was 3
|
||||
I8=FIXT.1.135=034=1549=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIXT.1.19=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
# Send a GapFill up to the last message 8
|
||||
I8=FIXT.1.135=434=449=TW52=<TIME>56=ISLD123=Y36=8
|
||||
|
||||
# Receive Resend request for messages 8 to (8+5-1 = 12)
|
||||
E8=FIXT.1.19=5935=234=549=ISLD52=00000000-00:00:0056=TW7=816=1210=0
|
||||
# Send a GapFill up to the last message 12
|
||||
I8=FIXT.1.135=434=849=TW52=<TIME>56=ISLD123=Y36=12
|
||||
|
||||
# Receive Resend request for messages 12 to 15)
|
||||
E8=FIXT.1.19=5935=234=649=ISLD52=00000000-00:00:0056=TW7=1216=010=0
|
||||
# Send a GapFill up to the last message 15
|
||||
I8=FIXT.1.135=434=1249=TW52=<TIME>56=ISLD123=Y36=15
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIXT.1.135=134=1649=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIXT.1.19=5835=034=749=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=1749=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=849=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,37 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0108=301137=9
|
||||
E8=FIXT.1.19=6835=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=301137=910=0
|
||||
|
||||
I8=FIXT.1.135=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIXT.1.135=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 10 when last message sent was 3
|
||||
I8=FIXT.1.135=034=1049=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIXT.1.19=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
I8=FIXT.1.135=D34=449=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=549=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=649=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=749=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
I8=FIXT.1.135=D34=849=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
# Receive Resend request for messages 9 to infinity
|
||||
E8=FIXT.1.19=5835=234=549=ISLD52=00000000-00:00:0056=TW7=916=010=0
|
||||
I8=FIXT.1.135=D34=949=TW52=<TIME>56=ISLD97=Y11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIXT.1.135=134=1149=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIXT.1.19=5835=034=649=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=1249=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=749=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,41 @@
|
||||
# If message sequence number is too high, send a resend request for
|
||||
# missing messages
|
||||
|
||||
iCONNECT
|
||||
I8=FIXT.1.135=A34=149=TW52=<TIME>56=ISLD98=0108=21137=9
|
||||
E8=FIXT.1.19=6735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=21137=910=0
|
||||
|
||||
I8=FIXT.1.135=D34=249=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=249=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
I8=FIXT.1.135=D34=349=TW52=<TIME>56=ISLD11=ID21=338=10040=154=155=INTC60=<TIME>
|
||||
E8=FIXT.1.19=10635=D34=349=ISLD52=00000000-00:00:0056=TW11=ID21=338=10040=154=155=INTC60=00000000-00:00:0010=0
|
||||
|
||||
# Sending message 15 when last message sent was 3
|
||||
I8=FIXT.1.135=034=1549=TW52=<TIME>56=ISLD
|
||||
|
||||
# Receive Resend request for messages 4 to (4+5-1 = 8)
|
||||
E8=FIXT.1.19=5835=234=449=ISLD52=00000000-00:00:0056=TW7=416=810=0
|
||||
# Send a GapFill up to the last message 8
|
||||
I8=FIXT.1.135=434=449=TW52=<TIME>56=ISLD123=Y36=8
|
||||
|
||||
# Receive Resend request for messages 8 to (8+5-1 = 12)
|
||||
E8=FIXT.1.19=5935=234=549=ISLD52=00000000-00:00:0056=TW7=816=1210=0
|
||||
# Send a GapFill up to the last message 12
|
||||
I8=FIXT.1.135=434=849=TW52=<TIME>56=ISLD123=Y36=12
|
||||
|
||||
# Receive Resend request for messages 12 to 15)
|
||||
E8=FIXT.1.19=5935=234=649=ISLD52=00000000-00:00:0056=TW7=1216=010=0
|
||||
# Send a GapFill up to the last message 15
|
||||
I8=FIXT.1.135=434=1249=TW52=<TIME>56=ISLD123=Y36=15
|
||||
|
||||
#Sent test request to validate no seq num issue
|
||||
I8=FIXT.1.135=134=1649=TW52=<TIME>56=ISLD112=TEST
|
||||
E8=FIXT.1.19=5835=034=749=ISLD52=00000000-00:00:0056=TW112=TEST10=0
|
||||
|
||||
|
||||
# logout message and response
|
||||
I8=FIXT.1.135=534=1749=TW52=<TIME>56=ISLD
|
||||
E8=FIXT.1.19=4935=534=849=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,15 @@
|
||||
# GapFill where MsgSeqNum is equal to the expected inbound MsgSeqNum
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.09=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
# sequence reset with gap fill flag set to Y
|
||||
I8=FIX.4.035=434=249=TW52=<TIME>56=ISLD36=20123=Y
|
||||
I8=FIX.4.035=134=2049=TW52=<TIME>56=ISLD112=HELLO
|
||||
E8=FIX.4.09=5535=034=249=ISLD52=00000000-00:00:0056=TW112=HELLO10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=349=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=349=ISLD52=00000000-00:00:0056=TW10=0
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,16 @@
|
||||
# GapFill where MsgSeqNum is greater than the expected inbound MsgSeqNum
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.09=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
# sequence reset with gap fill flag set to Y
|
||||
I8=FIX.4.035=434=1049=TW52=<TIME>56=ISLD36=20123=Y
|
||||
I8=FIX.4.035=134=2049=TW52=<TIME>56=ISLD112=HELLO
|
||||
# Resend request for messages 2 to INFINITY
|
||||
E8=FIX.4.09=5935=234=249=ISLD52=00000000-00:00:0056=TW7=216=99999910=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=349=ISLD52=00000000-00:00:0056=TW10=0
|
||||
eDISCONNECT
|
||||
15
quickfix/_test/definitions/server/fix40/10_MsgSeqNumLess.def
Normal file
15
quickfix/_test/definitions/server/fix40/10_MsgSeqNumLess.def
Normal file
@ -0,0 +1,15 @@
|
||||
# GapFill where MsgSeqNum is less than the expected inbound MsgSeqNum
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.09=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
# sequence reset with gap fill flag set to Y, PosDupFlag set to Y
|
||||
I8=FIX.4.035=434=149=TW52=<TIME>56=ISLD43=Y122=<TIME-1>36=20123=Y
|
||||
I8=FIX.4.035=134=249=TW52=<TIME>56=ISLD112=HELLO
|
||||
E8=FIX.4.09=5535=034=249=ISLD52=00000000-00:00:0056=TW112=HELLO10=0
|
||||
|
||||
# sequence reset with gap fill flag set to Y, PosDupFlag set to N
|
||||
I8=FIX.4.035=434=149=TW52=<TIME>56=ISLD36=20123=Y
|
||||
E8=FIX.4.09=9435=534=349=ISLD52=00000000-00:00:0056=TW58=MsgSeqNum too low, expecting 3 but received 110=0
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,20 @@
|
||||
# SequenceReset where NewSeqNo is greater than the expected inbound MsgSeqNum
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.09=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
# sequence reset without gap fill flag (default to N)
|
||||
I8=FIX.4.035=434=049=TW52=<TIME>56=ISLD36=25
|
||||
I8=FIX.4.035=134=2549=TW52=<TIME>56=ISLD112=HELLO
|
||||
E8=FIX.4.09=5535=034=249=ISLD52=00000000-00:00:0056=TW112=HELLO10=0
|
||||
|
||||
# sequence reset with gap fill flag set to N
|
||||
I8=FIX.4.035=434=049=TW52=<TIME>56=ISLD36=50123=N
|
||||
I8=FIX.4.035=134=5049=TW52=<TIME>56=ISLD112=HELLO
|
||||
E8=FIX.4.09=5535=034=349=ISLD52=00000000-00:00:0056=TW112=HELLO10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=5149=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=449=ISLD52=00000000-00:00:0056=TW10=0
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,20 @@
|
||||
# SequenceReset where NewSeqNo is equal to the expected inbound MsgSeqNum
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.09=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
# sequence reset without gap fill flag (default to N)
|
||||
I8=FIX.4.035=434=049=TW52=<TIME>56=ISLD36=2
|
||||
I8=FIX.4.035=134=249=TW52=<TIME>56=ISLD112=HELLO
|
||||
E8=FIX.4.09=5535=034=249=ISLD52=00000000-00:00:0056=TW112=HELLO10=0
|
||||
|
||||
# sequence reset with gap fill flag set to N
|
||||
I8=FIX.4.035=434=049=TW52=<TIME>56=ISLD36=4123=N
|
||||
I8=FIX.4.035=134=449=TW52=<TIME>56=ISLD112=HELLO
|
||||
E8=FIX.4.09=5535=034=349=ISLD52=00000000-00:00:0056=TW112=HELLO10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=549=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=449=ISLD52=00000000-00:00:0056=TW10=0
|
||||
eDISCONNECT
|
||||
24
quickfix/_test/definitions/server/fix40/11c_NewSeqNoLess.def
Normal file
24
quickfix/_test/definitions/server/fix40/11c_NewSeqNoLess.def
Normal file
@ -0,0 +1,24 @@
|
||||
# SequenceReset where NewSeqNo is less than the expected inbound MsgSeqNum
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.09=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
# sequence reset without gap fill flag (default to N)
|
||||
I8=FIX.4.035=434=049=TW52=<TIME>56=ISLD36=1
|
||||
E8=FIX.4.09=10035=334=249=ISLD52=00000000-00:00:0056=TW45=058=Value is incorrect (out of range) for this tag10=0
|
||||
|
||||
I8=FIX.4.035=134=249=TW52=<TIME>56=ISLD112=HELLO
|
||||
E8=FIX.4.09=5535=034=349=ISLD52=00000000-00:00:0056=TW112=HELLO10=0
|
||||
|
||||
# sequence reset without gap fill flag (default to N)
|
||||
I8=FIX.4.035=434=049=TW52=<TIME>56=ISLD36=1123=N
|
||||
E8=FIX.4.09=10035=334=449=ISLD52=00000000-00:00:0056=TW45=058=Value is incorrect (out of range) for this tag10=0
|
||||
|
||||
I8=FIX.4.035=134=349=TW52=<TIME>56=ISLD112=HELLO
|
||||
E8=FIX.4.09=5535=034=549=ISLD52=00000000-00:00:0056=TW112=HELLO10=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=449=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=649=ISLD52=00000000-00:00:0056=TW10=0
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,8 @@
|
||||
# If a logout is received, send a logout
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.09=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
I8=FIX.4.035=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=249=ISLD52=00000000-00:00:0056=TW10=0
|
||||
eDISCONNECT
|
||||
42
quickfix/_test/definitions/server/fix40/14a_BadField.def
Normal file
42
quickfix/_test/definitions/server/fix40/14a_BadField.def
Normal file
@ -0,0 +1,42 @@
|
||||
# @testcase 14.a
|
||||
# @condition Recieve message with a field identifier (tag number) not defined in the specification (not user defined)
|
||||
# @expected Send Reject (session-level) message referencing invalid tag number. Increment inbound MsgSeqNum. Generate an error condition in test output.
|
||||
|
||||
iCONNECT
|
||||
# logon message and response
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=2
|
||||
E8=FIX.4.09=5635=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=210=0
|
||||
|
||||
#------------------------
|
||||
# begin message exchange
|
||||
#------------------------
|
||||
|
||||
# heartbeat message with a field that is not in the specification, but is in the correct range
|
||||
I8=FIX.4.035=034=249=TW52=<TIME>56=ISLD999=HI
|
||||
# expect a reject
|
||||
E8=FIX.4.09=7835=334=249=ISLD52=00000000-00:00:0056=TW45=258=Invalid tag number (999)10=0
|
||||
|
||||
# heartbeat message with a field that is below the valid range for fields
|
||||
I8=FIX.4.035=034=349=TW52=<TIME>56=ISLD0=HI
|
||||
# expect a reject
|
||||
E8=FIX.4.09=7635=334=349=ISLD52=00000000-00:00:0056=TW45=358=Invalid tag number (0)10=0
|
||||
|
||||
# heartbeat message with a field that is negative
|
||||
I8=FIX.4.035=034=449=TW52=<TIME>56=ISLD-1=HI
|
||||
# expect a reject
|
||||
E8=FIX.4.09=7735=334=449=ISLD52=00000000-00:00:0056=TW45=458=Invalid tag number (-1)10=0
|
||||
|
||||
# heartbeat message with a field that is above the valid range for specification defined fields (user defined is not implemented yet)
|
||||
I8=FIX.4.035=034=549=TW52=<TIME>56=ISLD5000=HI
|
||||
# expect a reject
|
||||
E8=FIX.4.09=7935=334=549=ISLD52=00000000-00:00:0056=TW45=558=Invalid tag number (5000)10=0
|
||||
|
||||
#------------------------
|
||||
# end message exchange
|
||||
#------------------------
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=649=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=649=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,32 @@
|
||||
# @testcase 14.b
|
||||
# @condition Recieve message with a required field identifier (tag number) missing
|
||||
# @expected Send Reject (session-level) message referencing required tag missing. Increment inbound MsgSeqNum. Generate an error condition in test output.
|
||||
|
||||
iCONNECT
|
||||
# logon message and response
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=2
|
||||
E8=FIX.4.09=5635=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=210=0
|
||||
|
||||
#------------------------
|
||||
# begin message exchange
|
||||
#------------------------
|
||||
|
||||
# heartbeat message with a required field missing (TargetCompID) in the message header
|
||||
I8=FIX.4.035=034=249=TW52=<TIME>
|
||||
# expect a reject
|
||||
E8=FIX.4.09=7935=334=249=ISLD52=00000000-00:00:0056=TW45=258=Required tag missing (56)10=0
|
||||
|
||||
# quote message with a required field missing (Symbol)
|
||||
I8=FIX.4.035=D49=TW34=356=ISLD52=<TIME>40=160=<TIME>54=138=10021=311=id
|
||||
# expect a reject
|
||||
E8=FIX.4.09=7935=334=349=ISLD52=00000000-00:00:0056=TW45=358=Required tag missing (55)10=0
|
||||
|
||||
#------------------------
|
||||
# end message exchange
|
||||
#------------------------
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=449=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=449=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,27 @@
|
||||
# @testcase 14.c
|
||||
# @condition Recieve message with a field identifier (tag number) which is identified in the specification, but not for this message type. (not user defined)
|
||||
# @expected Send Reject (session-level) message referencing tag not defined for this message type. Increment inbound MsgSeqNum. Generate an error condition in test output.
|
||||
|
||||
iCONNECT
|
||||
# logon message and response
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=2
|
||||
E8=FIX.4.09=5635=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=210=0
|
||||
|
||||
#------------------------
|
||||
# begin message exchange
|
||||
#------------------------
|
||||
|
||||
# heartbeat message with a field identified that isn't for this message type
|
||||
I8=FIX.4.035=034=249=TW52=<TIME>56=ISLD55=MSFT
|
||||
# expect a reject
|
||||
E8=FIX.4.09=9635=334=249=ISLD52=00000000-00:00:0056=TW45=258=Tag not defined for this message type (55)10=0
|
||||
|
||||
#------------------------
|
||||
# end message exchange
|
||||
#------------------------
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=349=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=349=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,27 @@
|
||||
# @testcase 14.d
|
||||
# @condition Recieve message with a field identifier (tag number) specified but no value.
|
||||
# @expected Send Reject (session-level) message referencing tag specified without a value. Increment inbound MsgSeqNum. Generate an error condition in test output.
|
||||
|
||||
iCONNECT
|
||||
# logon message and response
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=2
|
||||
E8=FIX.4.09=5635=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=210=0
|
||||
|
||||
#------------------------
|
||||
# begin message exchange
|
||||
#------------------------
|
||||
|
||||
# heartbeat message with a field identified that doesn't have a value
|
||||
I8=FIX.4.035=034=249=TW52=<TIME>56=
|
||||
# expect a reject
|
||||
E8=FIX.4.09=8835=334=249=ISLD52=00000000-00:00:0056=TW45=258=Tag specified without a value (56)10=0
|
||||
|
||||
#------------------------
|
||||
# end message exchange
|
||||
#------------------------
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=349=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=349=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,26 @@
|
||||
# @testcase 14e
|
||||
# @Receive message with incorrect value (out of range or not part of valid list of enumerated values) for a particular field identifier (tag number).
|
||||
|
||||
iCONNECT
|
||||
# logon message and response
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=2
|
||||
E8=FIX.4.09=5635=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=210=0
|
||||
|
||||
#------------------------
|
||||
# begin message exchange
|
||||
#------------------------
|
||||
|
||||
#New order message with incorrect enum value. Handling instructions (21) = 4
|
||||
I8=FIX.4.035=D34=249=TW52=<TIME>56=ISLD11=ID21=440=154=138=002000.0055=INTC60=<TIME>
|
||||
# expect a reject
|
||||
E8=FIX.4.09=10535=334=249=ISLD52=00000000-00:00:0056=TW45=258=Value is incorrect (out of range) for this tag (21)10=0
|
||||
|
||||
#------------------------
|
||||
# end message exchange
|
||||
#------------------------
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=349=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=349=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,25 @@
|
||||
# @testcase 14f
|
||||
# @Receive message with a value in an incorrect data format (syntax) for a particular field identifier (tag number).
|
||||
|
||||
iCONNECT
|
||||
# logon message and response
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=2
|
||||
E8=FIX.4.09=5635=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=210=0
|
||||
|
||||
#------------------------
|
||||
# begin message exchange
|
||||
#------------------------
|
||||
#New order message with incorrect value. Qty (38) has a leading + sign
|
||||
I8=FIX.4.035=D34=249=TW52=<TIME>56=ISLD11=ID21=140=154=138=+200.0055=INTC60=<TIME>
|
||||
# expect a reject
|
||||
E8=FIX.4.09=9035=334=249=ISLD52=00000000-00:00:0056=TW45=258=Incorrect data format for value (38)10=0
|
||||
|
||||
#------------------------
|
||||
# end message exchange
|
||||
#------------------------
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=349=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=349=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,32 @@
|
||||
# @testcase 14.g
|
||||
# @condition Recieve message in which the following are not true: header+body+trailer is the order
|
||||
# @expected Send Reject (session-level) message referencing incorrect message structure. Increment inbound MsgSeqNum. Generate an error condition in test output.
|
||||
|
||||
iCONNECT
|
||||
# logon message and response
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=2
|
||||
E8=FIX.4.09=5635=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=210=0
|
||||
|
||||
#------------------------
|
||||
# begin message exchange
|
||||
#------------------------
|
||||
|
||||
# new order message with all body tags first
|
||||
I8=FIX.4.035=D11=id21=338=10040=154=155=MSFT34=249=TW52=<TIME>56=ISLD
|
||||
# expect a reject
|
||||
E8=FIX.4.09=9435=334=249=ISLD52=00000000-00:00:0056=TW45=258=Tag specified out of required order (34)10=0
|
||||
|
||||
# new order message with one body tag first
|
||||
I8=FIX.4.035=D55=MSFT34=349=TW52=<TIME>56=ISLD11=id21=338=10040=154=1
|
||||
# expect a reject
|
||||
E8=FIX.4.09=9435=334=349=ISLD52=00000000-00:00:0056=TW45=358=Tag specified out of required order (34)10=0
|
||||
|
||||
#------------------------
|
||||
# end message exchange
|
||||
#------------------------
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=449=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=449=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
26
quickfix/_test/definitions/server/fix40/14h_RepeatedTag.def
Normal file
26
quickfix/_test/definitions/server/fix40/14h_RepeatedTag.def
Normal file
@ -0,0 +1,26 @@
|
||||
# @testcase 14h
|
||||
# @Receive a message in which a field identifier (tag number) which is not part of a repeating group is specified more than once
|
||||
|
||||
iCONNECT
|
||||
# logon message and response
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=2
|
||||
E8=FIX.4.09=5635=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=210=0
|
||||
|
||||
#------------------------
|
||||
# begin message exchange
|
||||
#------------------------
|
||||
|
||||
#New order message with incorrect value. Side (40) is repeated, not part of repeating group
|
||||
I8=FIX.4.035=D34=249=TW52=<TIME>56=ISLD11=ID21=140=140=254=138=20055=INTC60=<TIME>
|
||||
# expect a reject
|
||||
E8=FIX.4.09=8535=334=249=ISLD52=00000000-00:00:0056=TW45=258=Tag appears more than once (40)10=0
|
||||
|
||||
#------------------------
|
||||
# end message exchange
|
||||
#------------------------
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=349=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=349=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,32 @@
|
||||
# @testcase 15 - Send application or administrative messages to test normal and abnormal behavior/response
|
||||
# @condition Send more than one message of the same type with header and body fields ordered differently to verify acceptance. (Excluding those which have restrictions regarding order)
|
||||
# @expected Messages accepted and subsequent messages' MsgSeqNum are accepted
|
||||
|
||||
iCONNECT
|
||||
# logon message and response
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=2
|
||||
E8=FIX.4.09=5635=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=210=0
|
||||
|
||||
#------------------------
|
||||
# begin message exchange
|
||||
#------------------------
|
||||
|
||||
# new order message
|
||||
I8=FIX.4.035=D34=249=TW52=<TIME>56=ISLD11=id21=338=10040=154=155=MSFT
|
||||
# expect
|
||||
E8=FIX.4.09=8135=D34=249=ISLD52=00000000-00:00:0056=TW11=id21=338=10040=154=155=MSFT10=0
|
||||
|
||||
# new order message with header and body fields in different order
|
||||
I8=FIX.4.035=D49=TW34=356=ISLD52=<TIME>38=10040=155=MSFT54=121=311=id
|
||||
# expect
|
||||
E8=FIX.4.09=8135=D34=349=ISLD52=00000000-00:00:0056=TW11=id21=338=10040=154=155=MSFT10=0
|
||||
|
||||
#------------------------
|
||||
# end message exchange
|
||||
#------------------------
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=449=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=449=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,30 @@
|
||||
# @testcase 19.a - Test PossResend handling
|
||||
# @condition Receive messagewith PossResend = 'Y' and application-level check of Message specific ID indicates that it has already been seen on this session
|
||||
# @expected Ignore the message
|
||||
|
||||
iCONNECT
|
||||
# logon message and response
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=2
|
||||
E8=FIX.4.09=5635=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=210=0
|
||||
|
||||
#------------------------
|
||||
# begin message exchange
|
||||
#------------------------
|
||||
|
||||
# new order message
|
||||
I8=FIX.4.035=D34=249=TW52=<TIME>56=ISLD11=id21=338=10040=154=155=MSFT
|
||||
# expect
|
||||
E8=FIX.4.09=8135=D34=249=ISLD52=00000000-00:00:0056=TW11=id21=338=10040=154=155=MSFT10=0
|
||||
|
||||
# sending the same message with PossResend flag set
|
||||
I8=FIX.4.035=D34=349=TW52=<TIME>56=ISLD97=Y11=id21=338=10040=154=155=MSFT
|
||||
|
||||
#------------------------
|
||||
# end message exchange
|
||||
#------------------------
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=449=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=349=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,27 @@
|
||||
# @testcase 19.b - Test PossResend handling
|
||||
# @condition Receive messagewith PossResend = 'Y' and application-level check of Message specific ID indicates that it has NOT been seen on this session
|
||||
# @expected Accept and process the message normally
|
||||
|
||||
iCONNECT
|
||||
# logon message and response
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=2
|
||||
E8=FIX.4.09=5635=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=210=0
|
||||
|
||||
#------------------------
|
||||
# begin message exchange
|
||||
#------------------------
|
||||
|
||||
# sending the same message with PossResend flag set
|
||||
I8=FIX.4.035=D34=249=TW52=<TIME>56=ISLD97=Y11=id21=338=10040=154=155=MSFT
|
||||
# expect
|
||||
E8=FIX.4.09=8635=D34=249=ISLD52=00000000-00:00:0056=TW97=Y11=id21=338=10040=154=155=MSFT10=0
|
||||
|
||||
#------------------------
|
||||
# end message exchange
|
||||
#------------------------
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=349=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=349=ISLD52=00000000-00:00:0056=TW10=0
|
||||
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,12 @@
|
||||
# if the message sequence number is too high, respond with logon and send
|
||||
# resend request
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.035=A34=549=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.09=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
E8=FIX.4.09=5935=234=249=ISLD52=00000000-00:00:0056=TW7=116=99999910=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=649=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=349=ISLD52=00000000-00:00:0056=TW10=0
|
||||
eDISCONNECT
|
||||
@ -0,0 +1,10 @@
|
||||
# When we receive a valid logon, we must respond with one
|
||||
|
||||
iCONNECT
|
||||
I8=FIX.4.035=A34=149=TW52=<TIME>56=ISLD98=0108=30
|
||||
E8=FIX.4.09=5735=A34=149=ISLD52=00000000-00:00:0056=TW98=0108=3010=0
|
||||
|
||||
# logout message and response
|
||||
I8=FIX.4.035=534=249=TW52=<TIME>56=ISLD
|
||||
E8=FIX.4.09=4535=534=249=ISLD52=00000000-00:00:0056=TW10=0
|
||||
eDISCONNECT
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user