View Issue Details

IDProjectCategoryView StatusLast Update
0009805Compliance Test Tool (CTT) Unified Architecture4 - Test Case Definitionpublic2024-09-02 06:18
ReporterKevin Herron (Inductive Automation) Assigned ToSebastian Allmendinger  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionduplicate 
Summary0009805: Subscription Basic 017, 018, 020
Description

These tests are off by one publishing interval in their expectation of when the second keep alive PublishResponse should be received.

They all expect it one interval too early because they are calculating it based on revisedPublishingInterval * revisedMaxKeepAliveCount, but they aren't factoring in that there is one interval that needs to expire after the first PublishResponse is sent before the Subscription transitions from the Normal state to the KeepAlive state and starts ticking down the "KeepAliveCounter" variable.

So in terms of rows from the Subscription State Table in the spec, it should look like:
Row 7 (timer expires, sends first Keep Alive)
Row 9 (timer expires, transition to KeepAlive state)
Row 16 (timer expires, decrement KeepAliveCounter, remain in KeepAliveState)
...
Row 17 (timer expires, send KeepAliveResponse, reset everything)

The tests are not including the extra publishing interval required to transition from Normal to KeepAlive state, which is when the counter starts decrementing.

TagsNo tags attached.
Files Affected

Relationships

duplicate of 0006828 closedPaul Hunkar CTT UA Scripts SubscriptionService - Subscription Basic - test cases 17, 18 and 20 

Activities

Kevin Herron (Inductive Automation)

2024-08-28 15:18

reporter   ~0021630

Logs that might help clarify. While you can see it in the timestamps as well, I've used whitespace to help distinguish intervals.

07:24:26.572 [id=5] subscription created, interval=1000.0, keep-alive=5, lifetime=242

07:24:27.573 [id=5] onPublishingTimer(), state=Normal, keep-alive=5, lifetime=30
07:24:27.573 [id=5] lifetime counter reset to 30
07:24:27.573 [id=5] keep-alive counter reset to 5
07:24:27.574 [id=5] returned keep-alive NotificationMessage sequenceNumber=1.

07:24:28.574 [id=5] onPublishingTimer(), state=Normal, keep-alive=5, lifetime=30
07:24:28.574 [id=5] Normal -> KeepAlive
07:24:28.574 [id=5] keep-alive counter reset to 5

07:24:29.574 [id=5] onPublishingTimer(), state=KeepAlive, keep-alive=5, lifetime=29

07:24:30.575 [id=5] onPublishingTimer(), state=KeepAlive, keep-alive=4, lifetime=28

07:24:31.576 [id=5] onPublishingTimer(), state=KeepAlive, keep-alive=3, lifetime=27

07:24:32.577 [id=5] onPublishingTimer(), state=KeepAlive, keep-alive=2, lifetime=26

07:24:33.578 [id=5] onPublishingTimer(), state=KeepAlive, keep-alive=1, lifetime=25
07:24:33.578 [id=5] lifetime counter reset to 30
07:24:33.578 [id=5] keep-alive counter reset to 5
07:24:33.578 [id=5] returned keep-alive NotificationMessage sequenceNumber=1.

Sebastian Allmendinger

2024-09-02 06:18

developer   ~0021645

The state table has been updated (Mantis 5367 resolved in Errata 1.04.8) and the KeepAliveCounter must now already be decremented in row 9.

Issue History

Date Modified Username Field Change
2024-08-28 14:36 Kevin Herron (Inductive Automation) New Issue
2024-08-28 15:18 Kevin Herron (Inductive Automation) Note Added: 0021630
2024-09-02 06:08 Sebastian Allmendinger Relationship added duplicate of 0006828
2024-09-02 06:18 Sebastian Allmendinger Assigned To => Sebastian Allmendinger
2024-09-02 06:18 Sebastian Allmendinger Status new => resolved
2024-09-02 06:18 Sebastian Allmendinger Resolution open => duplicate
2024-09-02 06:18 Sebastian Allmendinger Note Added: 0021645