adding quickfix library

This commit is contained in:
Ramiro Paz
2026-03-12 12:08:34 -03:00
parent 9e55c5c562
commit c09a1fd21a
1311 changed files with 1887342 additions and 2 deletions

View 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

View 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

View 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

View 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
View 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

View 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

View 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

View 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

View 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

View 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
View 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

View 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

View 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

View 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

View 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);

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View 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

View File

@ -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

View File

@ -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

View 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

View File

@ -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

View 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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