@@ -17,6 +17,7 @@ package quickfix
1717
1818import (
1919 "testing"
20+ "time"
2021
2122 "github.com/stretchr/testify/suite"
2223
@@ -189,3 +190,32 @@ func (s *resendStateTestSuite) TestFixMsgInResendChunk() {
189190 s .FieldEquals (tagBeginSeqNo , 3 , s .MockApp .lastToAdmin .Body )
190191 s .FieldEquals (tagEndSeqNo , 0 , s .MockApp .lastToAdmin .Body )
191192}
193+
194+ //TestFixMsgResendWithOldSendingTime Tests that we suspend staleness checks during replay
195+ //as a replayed message may be arbitrarily old
196+ func (s * resendStateTestSuite ) TestFixMsgResendWithOldSendingTime () {
197+ s .session .State = inSession {}
198+ s .ResendRequestChunkSize = 2
199+
200+ //in session expects seq number 1, send too high
201+ s .MessageFactory .SetNextSeqNum (4 )
202+ s .MockApp .On ("ToAdmin" )
203+
204+ msgSeqNum4 := s .NewOrderSingle ()
205+ s .fixMsgIn (s .session , msgSeqNum4 )
206+
207+ s .MockApp .AssertExpectations (s .T ())
208+ s .State (resendState {})
209+ s .LastToAdminMessageSent ()
210+ s .MessageType (string (msgTypeResendRequest ), s .MockApp .lastToAdmin )
211+ s .FieldEquals (tagBeginSeqNo , 1 , s .MockApp .lastToAdmin .Body )
212+ s .FieldEquals (tagEndSeqNo , 2 , s .MockApp .lastToAdmin .Body )
213+ s .NextTargetMsgSeqNum (1 )
214+
215+ msgSeqNum5 := s .NewOrderSingle ()
216+ //set the sending time far enough in the past to trip the staleness check
217+ msgSeqNum5 .Header .SetField (tagSendingTime , FIXUTCTimestamp {Time : time .Now ().Add (- s .MaxLatency )})
218+ s .fixMsgIn (s .session , msgSeqNum5 )
219+ s .State (resendState {})
220+ s .NextTargetMsgSeqNum (1 )
221+ }
0 commit comments