FIX TestCase SessionLevel20010710
FIX TestCase SessionLevel20010710
Table of Contents Table of Contents....................................................................................................................................................................................................................................2 FIX Session-level Test Cases and !"e#ted $e%avio&s..........................................................................................................................................................................' (""li#ability........................................................................................................................................................................................................................................' FIX Session-level State )at&i!...........................................................................................................................................................................................................* FIX Lo+on ,&o#ess State T&ansition -ia+&a................................................................................................................................................................................./ FIX Lo+out ,&o#ess State T&ansition -ia+&a................................................................................................................................................................................0 Test #ases............................................................................................................................................................................................................................................1 $uyside-o&iented 2session initiato&3 Lo+on and session initiation test #ase....................................................................................................................................1 Sellside-o&iented 2session a##e"to&3 Lo+on and session initiation test #ase...................................................................................................................................4 Test #ases a""li#able to all FIX syste.s.......................................................................................................................................................................................10
Applicability
T%is do#u.ent 5as last &evised July 10, 2001 at 5%i#% ti.e FIX ve&sion *.' 5as t%e latest ve&sion of t%e FIX ,&oto#ol. 6ote t%at futu&e a.end.ents to t%is do#u.ent .ay be found on t%e FIX 5ebsite and any ve&sion of t%is do#u.ent "ublis%ed on a late& date ta7es "&e#eden#e ove& t%is ve&sion of t%e do#u.ent. T%is do#u.ent is a""li#able to all ve&sions of FIX *.X 2*.0, *.1, *.2, and *.'3 e!#e"t 5%e&e e!"li#itly indi#ated.
1>
2non-+a&bled3 is &e#eived 8 8 Re#eive Logout .essa+e f&o. #ounte&"a&ty initiatin+ lo+outBdis#onne#t. If MsgSeqNum too %i+%, send ResendRequest. If sent, 5ait a &easonable "e&iod of ti.e fo& #o."lete &es"onse to ResendRequest. 6ote t%at de"endin+ u"on t%e &eason fo& t%e Logout, t%e #ounte&"a&ty .ay be unable to fulfill t%e &e;uest. Send Logout .essa+e as &es"onse and 5ait a &easonable "e&iod of ti.e fo& #ounte&"aty to dis#onne#t t%e net5o&7 #onne#tion. 6ote #ounte&"a&ty .ay send a ResendRequest .essa+e if Logout .essa+e &es"onse %as MsgSeqNum too %i+% and t%en &e-initiate t%e Logout "&o#ess. Identify #ondition o& &eason to +&a#efully dis#onne#t 2e.+. end of 9day:, no &es"onse afte& .ulti"le TestRequest .essa+es, too lo5 MsgSeqNum, et#.3. Send Logout .essa+e to #ounte&"a&ty. =ait a &easonable "e&iod of ti.e fo& Logout &es"onse. -u&in+ t%is ti.e %andle 9ne5: inbound .essa+es andBo& ResendRequest if "ossible. 6ote t%at so.e lo+outBte&.ination #onditions 2e.+. loss of databaseB.essa+e safe-sto&e3 .ay &e;ui&e i..ediate te&.ination of t%e net5o&7 #onne#tion follo5in+ t%e initial send of t%e Logout .essa+e. -is#onne#t t%e net5o&7 #onne#tion and 9s%utdo5n: #onfi+u&ation fo& t%is session. 6et5o&7 #onne#tion establis%ed, Logon .essa+e e!#%an+e su##essfully #o."leted, inbound and outbound MsgSeqNum a&e in se;uen#e as e!"e#ted, and Heartbeat o& ot%e& .essa+es a&e &e#eived 5it%in 2HeartBeatInt < 9&easonable "e&iod of ti.e:3. Session initiato& 5aitin+ fo& session a##e"to& to send ba#7 Logon (CE.
1/
10 11
8 8
8 6
Conne#t
(5aitin+ Conne#tion
(##e"t Conne#tion Initiate Logon Re#eive Initiation Logon Send Initiation Logon Res"onse
6et5o&7 Conne#tion stablis%ed 6et5o&7 Conne#tion stablis%ed Initiation Logon Re#eived Initiation Logon Res"onse 2"ossible3 Initiate Logout ,&o#ess 2e.+. if MsgSeqNum too lo53 2,ossible3 Re#eive MsgSeqNum Too Ai+%
Initiation Logon Res"onse 2,ossible3 Re#eive MsgSeqNum Too Ai+% Initiation Logon Res"onse
2,ossible3 (#tiveB6o&.al Session 2,ossible3 Initiate Logout ,&o#ess 2e.+. if MsgSeqNum too lo53 2,ossible3 (#tiveB6o&.al Session 2,ossible3 Re#eive MsgSeqNum Too Ai+% (#tiveB6o&.al Session
Send Logout &es"onse 2,ossible3 Send ResendRequest 2,ossible3 &e#eive ResendRequest Re#eive Logout Res"onse -is#onne#t
Lo+out ,endin+ Lo+out ,endin+ 2,ossible3 (5aitin+ B ,&o#essin+ Res"onse to ResendRequest -is#onne#ted-Conne#tion Today -is#onne#ted-Conne#tion Today
Test cases Buyside-oriented (session initiator) Logon and session initiation test case
Re# ID 1$ Precondition Test case Conne#t and Send Logon .essa+e $andator % &ptional )andato&y 'ondition%Sti(ulus a. stablis% 6et5o&7 #onne#tion b. Send Logon .essa+e #. Falid Logon .essa+e as &es"onse is &e#eived d. Invalid Logon .essa+e is &e#eived )*pected +e,a-ior Su##essfully o"en TC, so#7et 5it% #ounte&"a&ty Send Logon .essa+e If MsgSeqNum is too %i+% t%en send Resend Request 1. Gene&ate an He&&o&H #ondition in test out"ut. 2. 2I"tional3 Send Re.ect .essa+e 5it% RefMsgSeqNum &efe&en#in+ Logon .essa+e@s MsgSeqNum 5it% Text &efe&en#in+ e&&o& #ondition '. Send Logout .essa+e 5it% Text &efe&en#in+ e&&o& #ondition *. -is#onne#t >. 1. Lo+ an e&&o& 9fi&st .essa+e not a lo+on: 2. -is#onne#t
#. Logon .essa+e &e#eived 5it% unaut%enti#atedBnon-#onfi+u&ed identity 2e.+. invalid Sende&Co."I-, invalid Ta&+etCo."I-, invalid sou&#e I, add&ess, et#. vs. syste. #onfi+u&ation3
1. 2.
1. 2.
'. *. Re#eive any .essa+e ot%e& t%an a Logon .essa+e )andato&y Fi&st .essa+e &e#eived is not a Lo+on .essa+e. 1. 2.
e. PossDupFlag set to 8K OrigSen ingTime s"e#ified is less t%an o& e;ual to Sen ingTime and MsgSeqNum lo5e& t%an e!"e#ted 6ote: OrigSen ingTime s%ould be ea&lie& t%an Sen ingTime unless t%e .essa+e is bein+ &esent 5it%in t%e sa.e se#ond du&in+ 5%i#% it 5as sent. f. PossDupFlag set to 8K OrigSen ingTime s"e#ified is +&eate& t%an Sen ingTime and MsgSeqNum lo5e& t%an e!"e#ted 6ote: OrigSen ingTime s%ould be ea&lie& t%an Sen ingTime unless t%e .essa+e is bein+ &esent 5it%in t%e sa.e se#ond du&in+ 5%i#% it 5as sent.
1.
2. '. *.
Send Re.ect (session-le-el! .essa+e &efe&en#in+ ina##u&ate Sen ingTime 2LC FIX *.2: SessionReJe#tReason C HSendin+Ti.e a###u&a#y "&oble.H3 In#&e.ent inbound MsgSeqNum Send Logout .essa+e &efe&en#in+ ina##u&ate Sen ingTime value =ait fo& Logout .essa+e &es"onse 2note li7ely 5ill %ave ina##u&ate Sen ingTime3 o& 5ait 2 se#onds 5%i#%eve& #o.es fi&st
>. -is#onne#t Gene&ate an He&&o&H #ondition in test out"ut. +. PossDupFlag set to 8 and OrigSen ingTime not s"e#ified 6ote: (l5ays set OrigSen ingTime to t%e ti.e 5%en t%e .essa+e 5as o&i+inally sentnot t%e "&esent Sen ingTime and set PossDupFlag C 98: 5%en &es"ondin+ to a Resend Request %. BeginString value &e#eived as e!"e#ted and s"e#ified in testin+ "&ofile and .at#%es BeginString on outbound .essa+es. i. BeginString value 2e.+. HFIX.*.2H3 &e#eived did not .at#% value e!"e#ted and s"e#ified in testin+ "&ofile o& does not .at#% BeginString on outbound .essa+es. 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ .issin+ OrigSen ingTime 2LC FIX *.2: SessionReJe#tReason C HRe;ui&ed ta+ .issin+H3 In#&e.ent inbound MsgSeqNum
2.
(##e"t BeginString fo& t%e .essa+e 1. Send Logout .essa+e &efe&en#in+ in#o&&e#t BeginString value 2. =ait fo& Logout .essa+e &es"onse 2note li7ely 5ill %ave in#o&&e#t $e+inSt&in+3 o& 5ait 2 se#onds 5%i#%eve& #o.es fi&st '. -is#onne#t *. Gene&ate an He&&o&H #ondition in test out"ut. (##e"t Sen er!ompID and Target!ompID fo& t%e .essa+e 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ invalid Sen er!ompID o& Target!ompID 2LC FIX *.2: SessionReJe#tReason C HCo."I"&oble.H3 In#&e.ent inbound MsgSeqNum Send Logout .essa+e &efe&en#in+ in#o&&e#t Sen er!ompID o& Target!ompID value =ait fo& Logout .essa+e &es"onse 2note li7ely 5ill %ave
J. Sen er!ompID and Target!ompID values &e#eived as e!"e#ted and s"e#ified in testin+ "&ofile. 7. Sen er!ompID and Target!ompID values &e#eived did not .at#% values e!"e#ted and s"e#ified in testin+ "&ofile.
2. '. *.
n. Sen ingTime value &e#eived is s"e#ified in MTC 2Mnive&sal Ti.e Coo&dinated also 7no5n as G)T3 and is 5it%in 2 .inutes of ato.i# #lo#7-based ti.e. o. Sen ingTime value &e#eived is eit%e& not s"e#ified in MTC 2Mnive&sal Ti.e Coo&dinated also 7no5n as G)T3 o& is not 5it%in 2 .inutes of ato.i# #lo#7-based ti.e. Rational: Fe&ify syste. #lo#7s on bot% sides a&e in syn# and t%at Sendin+Ti.e .ust be #u&&ent ti.e
in#o&&e#t Sen er!ompID o& Target!ompID3 o& 5ait 2 se#onds 5%i#%eve& #o.es fi&st >. -is#onne#t /. Gene&ate an He&&o&H #ondition in test out"ut. (##e"t Bo "#engt$ fo& t%e .essa+e 1. Conside& +a&bled and i+no&e .essa+e 2do not in#&e.ent inbound MsgSeqNum3 and #ontinue a##e"tin+ .essa+es 2. Gene&ate a H5a&nin+H #ondition in test out"ut. (##e"t Sen ingTime fo& t%e .essa+e
1.
". MsgT"pe value &e#eived is valid 2defined in s"e# o& #lassified as use&-defined3. ;. MsgT"pe value &e#eived is not valid 2defined in s"e# o& #lassified as use&defined3.
Send Re.ect (session-le-el! .essa+e &efe&en#in+ ina##u&ate Sen ingTime 2LC FIX *.2: SessionReJe#tReason C HSendin+Ti.e a###u&a#y "&oble.H3 2. In#&e.ent inbound MsgSeqNum '. Send Logout .essa+e &efe&en#in+ ina##u&ate Sen ingTime value *. =ait fo& Logout .essa+e &es"onse 2note li7ely 5ill %ave ina##u&ate Sen ingTime3 o& 5ait 2 se#onds 5%i#%eve& #o.es fi&st >. -is#onne#t /. Gene&ate an He&&o&H #ondition in test out"ut. (##e"t MsgT"pe fo& t%e .essa+e 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ invalid MsgT"pe 2LC FIX *.2: SessionReJe#tReason C HInvalid )s+Ty"eH3
2.
&. MsgT"pe value &e#eived is valid 2defined in s"e# o& #lassified as use&-defined3 but not su""o&ted o& &e+iste&ed in testin+ "&ofile.
s. BeginString% Bo "#engt$% and MsgT"pe a&e fi&st t%&ee fields of .essa+e. t. BeginString% Bo "#engt$% and MsgT"pe a&e not t%e fi&st t%&ee fields of .essa+e.
In#&e.ent inbound MsgSeqNum '. Gene&ate a H5a&nin+H #ondition in test out"ut. 13 If N FIX *.2 a3 Send Re.ect (session-le-el! .essa+e &efe&en#in+ valid but unsu""o&ted MsgT"pe 23 If LC FIX *.2 a3 Send +usiness $essage Re.ect .essa+e &efe&en#in+ valid but unsu""o&ted MsgT"pe 2LC FIX *.2: $usinessReJe#tReason C HMnsu""o&ted )essa+e Ty"eH3 '3 In#&e.ent inbound MsgSeqNum *3 Gene&ate a H5a&nin+H #ondition in test out"ut. (##e"t t%e .essa+e 1. Conside& +a&bled and i+no&e .essa+e 2do not in#&e.ent inbound MsgSeqNum3 and #ontinue a##e"tin+ .essa+es Gene&ate a H5a&nin+H #ondition in test out"ut.
2. ' Re#eive $essage Standard Trailer )andato&y a. Falid !$e&'Sum b. Invalid !$e&'Sum
#. Ga&bled .essa+e
(##e"t )essa+e 1. Conside& +a&bled and i+no&e .essa+e 2do not in#&e.ent inbound MsgSeqNum3 and #ontinue a##e"tin+ .essa+es 2. Gene&ate a H5a&nin+H #ondition in test out"ut. 1. Conside& +a&bled and i+no&e .essa+e 2do not in#&e.ent inbound MsgSeqNum3 and #ontinue a##e"tin+ .essa+es 2. Gene&ate a H5a&nin+H #ondition in
d. !$e&'Sum is last field of .essa+e, value %as len+t% of ', and is deli.ited by NSIAL. e. !$e&'Sum is not t%e last field of .essa+e, value does not %ave len+t% of ', o& is not deli.ited by NSIAL.
test out"ut. (##e"t )essa+e 1. Conside& +a&bled and i+no&e .essa+e 2do not in#&e.ent inbound MsgSeqNum3 and #ontinue a##e"tin+ .essa+es Gene&ate a H5a&nin+H #ondition in test out"ut.
2. * Send Heartbeat .essa+e )andato&y a. 6o data sent du&in+ "&eset %ea&tbeat inte&val 2HeartBeatInt field3 b. ( Test Request .essa+e is &e#eived Falid Heartbeat .essa+e 6o data &e#eived du&in+ "&eset %ea&tbeat inte&val 2HeartBeatInt field3 < Hso.e &easonable "e&iod of ti.eH 2use 20P of HeartBeatInt field3 Falid Re.ect .essa+e Falid Resend Re;uest
Send Heartbeat .essa+e Send Heartbeat .essa+e 5it% Test Request .essa+eOs TestReqID (##e"t Heartbeat .essa+e 1. Send Test Request .essa+e 2. T&a#7 and ve&ify t%at a Heartbeat 5it% t%e sa.e TestReqID is &e#eived 2.ay not be t%e ne!t .essa+e &e#eived3 1. In#&e.ent inbound MsgSeqNum 2. Continue a##e"tin+ .essa+es Res"ond 5it% a""li#ation level .essa+es and SequenceReset-(ap Fill fo& ad.in .essa+es in &e;uested &an+e a##o&din+ to H)essa+e Re#ove&yH &ules. Send Sequence Reset - Reset .essa+e o& .anually &eset to 1 out-ofband. 1. If )s+Se;6u. L e!"e#ted Issue Resend Request to fill +a" bet5een e!"e#ted )s+Se;6u. R )s+Se;6u.. 2. If )s+Se;6u. N e!"e#ted se;uen#e nu.be& R ,oss-u"Fla+ C 98:
> /
)andato&y )andato&y
0 1
)andato&y )andato&y
4 10
I"tional )andato&y
(""li#ation failu&e Re#eive Sequence Reset (Gap Fill! .essa+e 5it% 6e5Se;6o L )s+Se;6u. )s+Se;6u. L t%an e!"e#t se;uen#e nu.be& )s+Se;6u. C to e!"e#ted se;uen#e nu.be& )s+Se;6u. N t%an e!"e#ted se;uen#e nu.be&
'.
I+no&e .essa+e
If )s+Se;6u. N e!"e#ted se;uen#e nu.be& R 5it%out ,oss-u"Fla+ C 98: -is#onne#t 5it%out sendin+ a .essa+e Gene&ate an He&&o&H #ondition in test out"ut if )s+Se;6u. C e!"e#ted se;uen#e nu.be&. Set ne!t e!"e#ted se;uen#e nu.be& C 6e5Se;6o
*.
11
)andato&y
a. Re#eive Sequence Reset (reset! .essa+e 5it% Ne)SeqNo L t%an e!"e#ted se;uen#e nu.be&
13 (##e"t t%e Sequence Reset (Reset! .essa+e 5it%out &e+a&ds its MsgSeqNum 23 Set e!"e#ted se;uen#e nu.be& e;ual to 6e5Se;6o 13 (##e"t t%e Sequence Reset (Reset! .essa+e 5it%out &e+a&ds its MsgSeqNum 23 Gene&ate a H5a&nin+H #ondition in test out"ut. 13 (##e"t t%e Sequence Reset (Reset! .essa+e 5it%out &e+a&ds its MsgSeqNum 23 Send Re.ect (session-le-el! .essa+e &efe&en#in+ invalid MsgT"pe 2LC FIX *.2: SessionReJe#tReason C HFalue is in#o&&e#t 2out of &an+e3 fo& t%is ta+H3 '3 -o 6IT In#&e.ent inbound MsgSeqNum *3 Gene&ate an He&&o&H #ondition in
b. Re#eive Sequence Reset (reset! .essa+e 5it% Ne)SeqNo C to e!"e#ted se;uen#e nu.be&
#. Re#eive Sequence Reset (reset! .essa+e 5it% Ne)SeqNo N t%an e!"e#ted se;uen#e nu.be&
test out"ut >3 -o 6IT lo5e& e!"e#ted se;uen#e nu.be&. 12 Initiate lo+out "&o#ess )andato&y Initiate Lo+out 13 Send Logout .essa+e 23 =ait fo& #ounte&"a&ty to &es"ond 5it% Logout .essa+e u" to 10 se#onds 2note .ay not be &e#eived if #o..uni#ations "&oble. e!ists3. If not &e#eived, +ene&ate a 95a&nin+: #ondition in test out"ut. '3 -is#onne#t -is#onne#t 5it%out sendin+ a .essa+e 1. Send Logout &es"onse .essa+e 2. =ait fo& #ounte&"a&ty to dis#onne#t u" to 10 se#onds. If .a! e!#eeded, dis#onne#t and +ene&ate an 9e&&o&: #ondition in test out"ut. 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ invalid ta+ nu.be& 2LC FIX *.2: SessionReJe#tReason C HInvalid ta+ nu.be&H3 2. In#&e.ent inbound MsgSeqNum '. Gene&ate an He&&o&H #ondition in test out"ut. 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ &e;ui&ed ta+ .issin+ 2LC FIX *.2: SessionReJe#tReason C HRe;ui&ed ta+ .issin+H3 2. In#&e.ent inbound MsgSeqNum '. Gene&ate an He&&o&H #ondition in test out"ut. 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ ta+ not defined fo& t%is .essa+e ty"e 2LC
1'
)andato&y
a. Re#eive valid Logout .essa+e in &es"onse to a soli#ited lo+out "&o#ess b. Re#eive valid Logout .essa+e unsoli#itied
1*
)andato&y
a. Re#eive field identifie& 2ta+ nu.be&3 not defined in s"e#ifi#ation. !#e"tion: undefined ta+ used is s"e#ified in testin+ "&ofile as use&-defined.
#. Re#eive .essa+e 5it% field identifie& 2ta+ nu.be&3 5%i#% is defined in t%e s"e#ifi#ation but not defined fo& t%is .essa+e ty"e.
!#e"tion: undefined ta+ used is s"e#ified in testin+ "&ofile as use&-defined fo& t%is .essa+e ty"e. 2. '. d. Re#eive .essa+e 5it% field identifie& 2ta+ nu.be&3 s"e#ified but no value 2e.+. H>>CNSIALH vs. H>>CI$)NSIALH3. 1.
2. '. e. Re#eive .essa+e 5it% in#o&&e#t value 2out of &an+e o& not "a&t of valid list of enu.e&ated values3 fo& a "a&ti#ula& field identifie& 2ta+ nu.be&3. !#e"tion: undefined enu.e&ation values used a&e s"e#ified in testin+ "&ofile as use&defined. 1.
2. '. f. Re#eive .essa+e 5it% a value in an in#o&&e#t data fo&.at 2synta!3 fo& a "a&ti#ula& field identifie& 2ta+ nu.be&3. 1.
2. '. +. Re#eive a .essa+e in 5%i#% t%e follo5in+ is not t&ue: Standa&d Aeade& fields a""ea& befo&e $ody fields 5%i#% a""ea& befo&e Standa&d T&aile& fields. 1.
2. '.
FIX *.2: SessionReJe#tReason C HTa+ not defined fo& t%is .essa+e ty"eH3 In#&e.ent inbound MsgSeqNum Gene&ate an He&&o&H #ondition in test out"ut. Send Re.ect (session-le-el! .essa+e &efe&en#in+ ta+ s"e#ified 5it%out a value 2LC FIX *.2: SessionReJe#tReason C HTa+ s"e#ified 5it%out a valueH3 In#&e.ent inbound MsgSeqNum Gene&ate an He&&o&H #ondition in test out"ut. Send Re.ect (session-le-el! .essa+e &efe&en#in+ value is in#o&&e#t 2out of &an+e o& not "a&t of valid list of enu.e&ated values3 fo& t%is ta+ 2LC FIX *.2: SessionReJe#tReason C HFalue is in#o&&e#t 2out of &an+e3 fo& t%is ta+H3 In#&e.ent inbound MsgSeqNum Gene&ate an He&&o&H #ondition in test out"ut. Send Re.ect (session-le-el! .essa+e &efe&en#in+ value is in an in#o&&e#t data fo&.at fo& t%is ta+ 2LC FIX *.2: SessionReJe#tReason C HIn#o&&e#t data fo&.at fo& valueH3 In#&e.ent inbound MsgSeqNum Gene&ate an He&&o&H #ondition in test out"ut. Send Re.ect (session-le-el! .essa+e &efe&en#in+ in#o&&e#t .essa+e st&u#tu&e %eade&<body<t&aile& In#&e.ent inbound MsgSeqNum Gene&ate an He&&o&H #ondition in
%. Re#eive a .essa+e in 5%i#% a field identifie& 2ta+ nu.be&3 5%i#% is not "a&t of a &e"eatin+ +&ou" is s"e#ified .o&e t%an on#e
i. Re#eive a .essa+e 5it% &e"eatin+ +&ou"s in 5%i#% t%e H#ountH field value fo& a &e"eatin+ +&ou" is in#o&&e#t.
J. Re#eive a .essa+e 5it% &e"eatin+ +&ou"s in 5%i#% t%e o&de& of &e"eatin+ +&ou" fields does not .at#% t%e s"e#ifi#ation.
7. Re#eive a .essa+e 5it% a field of a data ty"e ot%e& t%an HdataH 5%i#% #ontains one o& .o&e e.bedded NSIAL values.
l. Re#eive a .essa+e 5%en a""li#ation-level "&oessin+ o& syste. is not available 2I"tional3
test out"ut. Send Re.ect (session-le-el! .essa+e &efe&en#in+ du"li#ate field identifie& 2ta+ nu.be&3 2. In#&e.ent inbound MsgSeqNum '. Gene&ate an He&&o&H #ondition in test out"ut. 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ t%e in#o&&e#t H#ountH field identifie& 2ta+ nu.be&3 2. In#&e.ent inbound MsgSeqNum '. Gene&ate an He&&o&H #ondition in test out"ut. 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ t%e &e"eatin+ +&ou" 5it% in#o&&e#t field o&de&in+ 2. In#&e.ent inbound MsgSeqNum '. Gene&ate an He&&o&H #ondition in test out"ut. 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ field identifie& 2ta+ nu.be&3 5it% e.bedded NSIAL 2. In#&e.ent inbound MsgSeqNum '. Gene&ate an He&&o&H #ondition in test out"ut. SS -is#a&d as valid &es"onseBout#o.e too o& Conside& +a&bled and i+no&e .essa+e 13 If N FIX *.2 a3 Send Re.ect (session-le-el! .essa+e &efe&en#in+ a""li#ation .essa+e "&o#essin+ is not available 23 If LC FIX *.2 a3 Send +usiness $essage Re.ect .essa+e &efe&en#in+ 1.
6. Re#eive a .essa+e in 5%i#% a field identifie& 2ta+ nu.be&3 a""ea&s in bot% #lea&te!t and en#&y"ted se#tion but %as diffe&ent values.
1>
Send a""li#ation o& ad.inist&ative .essa+es to test no&.al and abno&.al be%avio&B&es"onse
Send .o&e t%an one .essa+e of t%e sa.e ty"e 5it% %eade& and body fields o&de&ed diffe&ently to ve&ify a##e"tan#e. 2 !#lude t%ose 5%i#% %ave &est&i#tions &e+a&din+ o&de&3
a""li#ation .essa+e "&o#essin+ is not available 2LC FIX *.2: $usinessReJe#tReason C H(""li#ation not availableH3 '3 In#&e.ent inbound MsgSeqNum *3 Gene&ate a H5a&nin+H #ondition in test out"ut. 13 If N FIX *.2 a3 Send Re.ect (session-le-el! .essa+e &efe&en#in+ field identifie& 2ta+ nu.be&3 of t%e .issin+ #onditionally &e;ui&ed field2s3 23 If LC FIX *.2 a3 Send +usiness $essage Re.ect .essa+e &efe&en#in+ field identifie& 2ta+ nu.be&3 of t%e .issin+ #onditionally &e;ui&ed field2s3 2LC FIX *.2: $usinessReJe#tReason C HConditionally Re;ui&ed Field )issin+H3 '3 In#&e.ent inbound MsgSeqNum *3 Gene&ate an He&&o&H #ondition in test out"ut. 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ field identifie& 2ta+ nu.be&3 .issin+ f&o. unen#&y"ted se#tion 2LC FIX *.2: SessionReJe#tReason C H -e#&y"tion "&oble.H3 2. In#&e.ent inbound MsgSeqNum Gene&ate an He&&o&H #ondition in test out"ut. )essa+es a##e"ted and subse;uent .essa+es@ MsgSeqNum a&e a##e"ted.
1/
)andato&y
Dueue out+oin+ .essa+es. 6ote t%e&e a&e t5o valid a""&oa#%es: 13 Dueue 5it%out &e+a&ds to MsgSeqNum a3 Sto&e data fo& .essa+es 23 Dueue ea#% .essa+e 5it% t%e ne!t MsgSeqNum value a3 Sto&e data fo& .essa+es in su#% a .anne& as to use and 9#onsu.e: t%e ne!t MsgSeqNum 6ote: Sendin+Ti.e 2Ta+T>23: .ust #ontain t%e ti.e t%e .essa+e is sent not t%e ti.e t%e .essa+e 5as ;ueued. 1. Co."lete lo+on "&o#ess 2#onne#t, and Logon .essa+e e!#%an+e3 2. Co."lete MsgSeqNum &e#ove&y "&o#ess if a""li#able. '. Re#o..ended s%o&t delay o& TestRequestBHeartbeat to ve&ify MsgSeqNum &e#ove&y #o."leted. *. 6ote t%e&e a&e t5o valid ;ueuin+ a""&oa#%es: a3 Dueue 5it%out &e+a&ds to MsgSeqNum i3 Send ;ueued .essa+es 5it% ne5 MsgSeqNum values 2+&eate& t%an Logon .essa+e@s MsgSeqNum3 b3 Dueue ea#% .essa+e 5it% t%e ne!t MsgSeqNum value i3 2note Logon .essa+e@s MsgSeqNum 5ill be +&eate& t%an t%e ;ueued .essa+esO MsgSeqNum* ii3 Counte&"a&ty 5ill issue ResendRequest &e;uestin+ t%e &an+e of .issed .essa+es
iii3 Resend ea#% ;ueued .essa+e 5it% PossDupFlag set to 8 6ote: Sendin+Ti.e 2Ta+T>23: .ust #ontain t%e ti.e t%e .essa+e is sent not t%e ti.e t%e .essa+e 5as ;ueued. 1. (##e"t t%e .essa+e 2. ,e&fo&. t%e a""&o"&iate de#&y"tion and en#&y"tion .et%od &eadiness '. Res"ond 5it% Logon .essa+e 5it% t%e sa.e +n&r"ptMet$o 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ invalid o& unsu""o&ted +n&r"ptMet$o value 2LC FIX *.2: SessionReJe#tReason C H-e#&y"tion "&oble.H3 2. In#&e.ent inbound MsgSeqNum '. Send Logout .essa+e &efe&en#in+ invalid o& unsu""o&ted +n&r"ptMet$o value *. =ait fo& Logout .essa+e &es"onse 2note #ould %ave de#&y"t "&oble.s3 o& 5ait 2 se#onds 5%i#%eve& #o.es fi&st >. -is#onne#t /. Gene&ate an He&&o&H #ondition in test out"ut. (##e"t t%e .essa+e 1. Send Re.ect (session-le-el! .essa+e &efe&en#in+ invalid Signature#engt$ value 2LC FIX *.2: SessionReJe#tReason C HSi+natu&e "&oble.H3 In#&e.ent inbound MsgSeqNum Gene&ate an He&&o&H #ondition in test out"ut.
10
Su""o&t en#&y"tion
I"tional
#. Re#eive .essa+e 5it% valid Signature#engt$ and Signature values. d. Re#eive .essa+e 5it% invalid Signature#engt$ value.
2. '.
1.
f. Re#eive .essa+e 5it% a valid Se&ureData#en value and a Se&ureData value t%at #an be de#&y"ted into valid, "a&seable #lea&te!t. +. Re#eive .essa+e 5it% invalid Se&ureData#en value.
Send Re.ect (session-le-el! .essa+e &efe&en#in+ invalid Signature value 2LC FIX *.2: SessionReJe#tReason C HSi+natu&e "&oble.H3 2. In#&e.ent inbound MsgSeqNum '. Gene&ate an He&&o&H #ondition in test out"ut. I& #onside& de#&y"tion e&&o& o& .essa+e out of o&de&, i+no&e .essa+e 2do not in#&e.ent inbound MsgSeqNum3 and #ontinue a##e"tin+ .essa+es (##e"t t%e .essa+e
1.
2. %. Re#eive .essa+e 5it% a Se&ureData value t%at #annot be de#&y"ted into valid, "a&seable #lea&te!t. 1.
2. '. i. Re#eive .essa+e 5it% one o& .o&e fields not "&esent in t%e unen#&y"ted "o&tion of t%e .essa+e t%at H.ust be unen#&y"tedH a##o&din+ to t%e s"e#. '.
*. >.
Conside& de#&y"tion e&&o& o& .essa+e out of o&de&, i+no&e .essa+e 2do not in#&e.ent inbound MsgSeqNum3 and #ontinue a##e"tin+ .essa+es Gene&ate a H5a&nin+H #ondition in test out"ut. Send Re.ect (session-le-el! .essa+e &efe&en#in+ invalid Se&ureData value 2LC FIX *.2: SessionReJe#tReason C H -e#&y"tion "&oble.H3 In#&e.ent inbound MsgSeqNum Gene&ate an He&&o&H #ondition in test out"ut. Send Re.ect (session-le-el! .essa+e &efe&en#in+ field identifie& 2ta+ nu.be&3 .issin+ f&o. unen#&y"ted se#tion 2LC FIX *.2: SessionReJe#tReason C H -e#&y"tion "&oble.H3 In#&e.ent inbound MsgSeqNum Gene&ate an He&&o&H #ondition in
J. Re#eive .essa+e 5it% in#o&&e#t %andlin+ of Hleft ove&H #%a&a#te&s 2e.+. 5%en len+t% of #lea&te!t "&io& to en#&y"tion is not a .ulti"le of 13 a##o&din+ to t%e s"e#ified +n&r"ptMet$o .
1.
2. '. 11 Su""o&t t%i&d "a&ty add&essin+ I"tional a. Re#eive .essa+es 5it% OnBe$alfOf!ompID and Deli,erTo!ompID values e!"e#ted as s"e#ified in testin+ "&ofile and 5it% #o&&e#t usa+e. b. Re#eive .essa+es 5it% OnBe$alfOf!ompID o& Deli,erTo!ompID values not s"e#ified in testin+ "&ofile o& in#o&&e#t usa+e.
test out"ut. Send Re.ect (session-le-el! .essa+e &efe&en#in+ in#o&&e#t %andlin+ of Hleft ove&H #%a&a#te&s du&in+ en#&y"tion 2LC FIX *.2: SessionReJe#tReason C H -e#&y"tion "&oble.H3 In#&e.ent inbound MsgSeqNum Gene&ate an He&&o&H #ondition in test out"ut.
(##e"t .essa+es
1.
2. '. 14 Test ,ossResend %andlin+ )andato&y a. Re#eive .essa+e 5it% ,ossResend C 98: and a""li#ation-level #%e#7 of )essa+e s"e#ifi# I- indi#ates t%at it %as al&eady been seen on t%is session b. Re#eive .essa+e 5it% ,ossResend C 98: and a""li#ation-level #%e#7 of )essa+e s"e#ifi# I- indi#ates t%at it %as 6IT yet been seen on t%is session Re#eive a Resend Request .essa+e 5%ile %avin+ sent and a5aitin+ #o."lete set of &es"onses to a Resend Request .essa+e.
Send Re.ect (session-le-el! .essa+e &efe&en#in+ invalid OnBe$alfOf!ompID o& Deli,erTo!ompID 2LC FIX *.2: SessionReJe#tReason C HCo."I"&oble.H3 In#&e.ent inbound MsgSeqNum Gene&ate an He&&o&H #ondition in test out"ut.
13 I+no&e t%e .essa+e. 23 Gene&ate a H5a&nin+H #ondition in test out"ut 13 (##e"t and "&o#ess t%e .essa+e no&.ally. 13 ,e&fo&. &esend of &e;uested .essa+es. 23 Send Resend Request to &e;uest .issed .essa+es
20
)andato&y