@@ -1010,20 +1010,24 @@ func (s *SessionSuite) TestSeqNumResetTime() {
10101010 s .session .ResetSeqTime = now
10111011 s .session .EnableResetSeqTime = true
10121012
1013+ s .NextSenderMsgSeqNum (1 )
1014+ s .NextTargetMsgSeqNum (1 )
10131015 s .IncrNextSenderMsgSeqNum ()
10141016 s .IncrNextTargetMsgSeqNum ()
10151017
10161018 s .MockApp .On ("ToAdmin" )
10171019
1020+ s .NextSenderMsgSeqNum (2 )
1021+ s .NextTargetMsgSeqNum (2 )
10181022 s .IncrNextSenderMsgSeqNum ()
10191023 s .IncrNextTargetMsgSeqNum ()
10201024
10211025 s .MockApp .On ("ToAdmin" )
10221026
10231027 s .session .CheckResetTime (s .session , now )
10241028
1025- s .NextSenderMsgSeqNum (2 )
1026- s .NextSenderMsgSeqNum (2 )
1029+ s .NextSenderMsgSeqNum (3 )
1030+ s .NextSenderMsgSeqNum (3 )
10271031
10281032}
10291033
@@ -1108,3 +1112,100 @@ func (s *SessionSuite) TestSeqNumResetTimeNotAfterDisconnect() {
11081112 s .NextSenderMsgSeqNum (2 )
11091113 s .NextTargetMsgSeqNum (2 )
11101114}
1115+
1116+ func (s * SessionSuite ) TestSeqNumResetTimeDisconnected_LocalTZ () {
1117+ s .session .State = logonState {}
1118+ tz , err := time .LoadLocation ("America/Chicago" )
1119+ if err != nil {
1120+ s .T ().Fatal (err )
1121+ }
1122+ s .session .TimeZone = tz
1123+ s .session .ResetSeqTime = time .Now ().In (tz ).Add (time .Second * 2 )
1124+ s .session .EnableResetSeqTime = true
1125+
1126+ s .NextSenderMsgSeqNum (1 )
1127+ s .NextTargetMsgSeqNum (1 )
1128+ s .IncrNextTargetMsgSeqNum ()
1129+ s .IncrNextSenderMsgSeqNum ()
1130+ s .NextSenderMsgSeqNum (2 )
1131+ s .NextTargetMsgSeqNum (2 )
1132+
1133+ s .session .onAdmin (stopReq {})
1134+ s .Disconnected ()
1135+ s .Stopped ()
1136+
1137+ // Wait for reset time to pass.
1138+ time .Sleep (time .Second * 3 )
1139+
1140+ s .MockApp .On ("ToAdmin" )
1141+ // Disconnected so the seq numbers should not be reset.
1142+ s .session .CheckResetTime (s .session , time .Now ().UTC ())
1143+ s .NextSenderMsgSeqNum (2 )
1144+ s .NextTargetMsgSeqNum (2 )
1145+ }
1146+
1147+ func (s * SessionSuite ) TestSeqNumResetTimeAfterElapse_LocalTZ () {
1148+ s .session .State = logonState {}
1149+ tz , err := time .LoadLocation ("America/Chicago" )
1150+ if err != nil {
1151+ s .T ().Fatal (err )
1152+ }
1153+ s .session .TimeZone = tz
1154+ before := time .Now ().In (tz )
1155+ resetTime := before .Add (time .Second * 2 )
1156+ after := resetTime .Add (time .Second * 1 )
1157+ s .session .ResetSeqTime = resetTime
1158+ s .session .EnableResetSeqTime = true
1159+
1160+ s .NextSenderMsgSeqNum (1 )
1161+ s .NextTargetMsgSeqNum (1 )
1162+ s .IncrNextTargetMsgSeqNum ()
1163+ s .IncrNextSenderMsgSeqNum ()
1164+ s .NextSenderMsgSeqNum (2 )
1165+ s .NextTargetMsgSeqNum (2 )
1166+
1167+ s .MockApp .On ("ToAdmin" )
1168+ s .session .CheckResetTime (s .session , before )
1169+ s .NextSenderMsgSeqNum (2 )
1170+ s .NextTargetMsgSeqNum (2 )
1171+
1172+ s .session .LastCheckedResetSeqTime = before
1173+ s .session .CheckResetTime (s .session , after )
1174+ s .NextSenderMsgSeqNum (2 )
1175+ s .NextTargetMsgSeqNum (1 )
1176+ }
1177+
1178+ func (s * SessionSuite ) TestSeqNumResetTimeNotAfterDisconnect_LocalTZ () {
1179+ s .session .State = logonState {}
1180+ tz , err := time .LoadLocation ("America/Chicago" )
1181+ if err != nil {
1182+ s .T ().Fatal (err )
1183+ }
1184+ s .session .TimeZone = tz
1185+ before := time .Now ().In (tz )
1186+ resetTime := before .Add (time .Second * 2 )
1187+ after := resetTime .Add (time .Second * 1 )
1188+ s .session .ResetSeqTime = resetTime
1189+ s .session .EnableResetSeqTime = true
1190+
1191+ s .NextSenderMsgSeqNum (1 )
1192+ s .NextTargetMsgSeqNum (1 )
1193+ s .IncrNextTargetMsgSeqNum ()
1194+ s .IncrNextSenderMsgSeqNum ()
1195+ s .NextSenderMsgSeqNum (2 )
1196+ s .NextTargetMsgSeqNum (2 )
1197+
1198+ s .MockApp .On ("ToAdmin" )
1199+ s .session .CheckResetTime (s .session , before )
1200+ s .NextSenderMsgSeqNum (2 )
1201+ s .NextTargetMsgSeqNum (2 )
1202+
1203+ s .session .onAdmin (stopReq {})
1204+ s .Disconnected ()
1205+ s .Stopped ()
1206+
1207+ s .session .LastCheckedResetSeqTime = before
1208+ s .session .CheckResetTime (s .session , after )
1209+ s .NextSenderMsgSeqNum (2 )
1210+ s .NextTargetMsgSeqNum (2 )
1211+ }
0 commit comments