Skip to content

Commit 95390a2

Browse files
committed
Session overrides for heartbeat interval
1 parent 76258db commit 95390a2

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

logon_state_test.go

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,14 @@ func (s *LogonStateTestSuite) TestFixMsgInLogon() {
7676
s.MockApp.On("FromAdmin").Return(nil)
7777
s.MockApp.On("OnLogon")
7878
s.MockApp.On("ToAdmin")
79+
s.Zero(s.session.HeartBtInt)
7980
s.fixMsgIn(s.session, logon)
8081

8182
s.MockApp.AssertExpectations(s.T())
8283

8384
s.State(inSession{})
84-
s.Equal(32*time.Second, s.session.HeartBtInt)
85+
s.Equal(32*time.Second, s.session.HeartBtInt) //should be written from logon message
86+
s.False(s.session.HeartBtIntOverride)
8587

8688
s.LastToAdminMessageSent()
8789
s.MessageType(string(msgTypeLogon), s.MockApp.lastToAdmin)
@@ -91,6 +93,35 @@ func (s *LogonStateTestSuite) TestFixMsgInLogon() {
9193
s.NextSenderMsgSeqNum(3)
9294
}
9395

96+
func (s *LogonStateTestSuite) TestFixMsgInLogonHeartBtIntOverride() {
97+
s.IncrNextSenderMsgSeqNum()
98+
s.MessageFactory.seqNum = 1
99+
s.IncrNextTargetMsgSeqNum()
100+
101+
logon := s.Logon()
102+
logon.Body.SetField(tagHeartBtInt, FIXInt(32))
103+
104+
s.MockApp.On("FromAdmin").Return(nil)
105+
s.MockApp.On("OnLogon")
106+
s.MockApp.On("ToAdmin")
107+
s.session.HeartBtIntOverride = true
108+
s.session.HeartBtInt = time.Second
109+
s.fixMsgIn(s.session, logon)
110+
111+
s.MockApp.AssertExpectations(s.T())
112+
113+
s.State(inSession{})
114+
s.Equal(time.Second, s.session.HeartBtInt) //should not have changed
115+
s.True(s.session.HeartBtIntOverride)
116+
117+
s.LastToAdminMessageSent()
118+
s.MessageType(string(msgTypeLogon), s.MockApp.lastToAdmin)
119+
s.FieldEquals(tagHeartBtInt, 1, s.MockApp.lastToAdmin.Body)
120+
121+
s.NextTargetMsgSeqNum(3)
122+
s.NextSenderMsgSeqNum(3)
123+
}
124+
94125
func (s *LogonStateTestSuite) TestFixMsgInLogonEnableLastMsgSeqNumProcessed() {
95126
s.session.EnableLastMsgSeqNumProcessed = true
96127

session.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -441,9 +441,11 @@ func (s *session) handleLogon(msg *Message) error {
441441
}
442442

443443
if !s.InitiateLogon {
444-
var heartBtInt FIXInt
445-
if err := msg.Body.GetField(tagHeartBtInt, &heartBtInt); err == nil {
446-
s.HeartBtInt = time.Duration(heartBtInt) * time.Second
444+
if !s.HeartBtIntOverride {
445+
var heartBtInt FIXInt
446+
if err := msg.Body.GetField(tagHeartBtInt, &heartBtInt); err == nil {
447+
s.HeartBtInt = time.Duration(heartBtInt) * time.Second
448+
}
447449
}
448450

449451
s.log.OnEvent("Responding to logon request")

0 commit comments

Comments
 (0)