Subscription Minimum 02

Support at least 2 Subscriptions per Session. This number must be supported for at least half of the minimum required sessions.


Questions? Contact us
Generated: 21/11/2021 at 17:21:20 p.m.
Subscription Minimum 02 - 24 Test Cases
Test Case Id Test Type Keywords Test Case Description Test Requirements Expected Result

001

CTT CreateSubscription()  In a loop, create two subscriptions with their priorities being equal, i.e. 100, 200, and 0.
Call Publish() numerous times to monitor the subscriptions that are yielding callbacks.
All service and operation level results are Good.
All returned parameter values are valid and correct.
Each subscription should echo back the same number of Publish responses, even if just keep-alives.

002

CTT CreateSubscription()  Using default parameters create 1 sessions with at least 2 subscriptions per session.
Call Publish() multiple times.
Both return ServiceResult = Good
All returned parameter values are valid and correct.
Verify that a Publish result is received for each subscription (4 subscriptions).

003

CTT CreateSubscription()  Create 2 subscriptions with one having a higher priority than the other, and MaxNotificationsPerPublish set to 1.
Add 2 monitored items per subscription.
Write a value to all 4 items (2 per subscription).
Call Publish() multiple times.
The creation of the subscriptions is successful, as is the createMonitoredItems, and write.
At the end of the test, the subscription with the highest subscription should have been received first the most number of times.

004

CTT CreateSubscription()  Create two subscriptions with one whose priority is larger.
Check the session diagnostics.
Wait for low-priority sub to expire.
The subscription is found within the subscriptions diagnostics.

005

CTT ModifySubscription()  Create 2 active subscriptions of equal priorities, with each containing an equal number of monitoredItems that are producing an equal amount of dataChanges.
Modify the first subscription and raise its priority level.
Call Publish() numerous times.
ServiceResult = Good.
All returned parameter values are valid and correct.
After the subscription modification, the subscription with tthe highest priority should have been received first the most number of times.

006

CTT ModifySubscription()  Create 2 active subscriptions of equal priorities, with each containing an equal number of monitoredItems that are producing an equal amount of dataChanges.
Modify the first subscription and lower its priority level.
Call Publish() numerous times.
ServiceResult = Good.
All returned parameter values are valid and correct.
After the subscription modification the subscription with the highest priority should have been received first the most number of times.

007

CTT ModifySubscription()  Create 2 active subscriptions of equal priorities, with each containing an equal number of monitoredItems that are producing an equal amount of dataChanges.
Call Publish (#1) twice to get the initial values for each subscription.
Modify the first subscriptions by raising its priority level.
In a loop, do the following:
• Write to all items.
• Call Publish() (#2) twice.
Modify the first subscription by lowering its priority so that it has the lowest priority.
In a loop, do the following:
• Write to all items.
• Call Publish() (#3) numerous times.
All service and operation level results are Good.
Generally speaking, the subscription with the highest priority should have been received first the most number of times, both before and after the subscription modification.

008

CTT ModifySubscription()  Create 2 active subscriptions of equal priorities, with each containing an equal number of monitoredItems that are producing an equal amount of dataChanges.
Call Publish (#1) twice to get the initial values for each subscription.
Modify the second subscriptions by lowering its priority level.
In a loop, do the following:
• Write to all items.
• Call Publish() (#2) twice.
Modify the second subscription by raising its priority so that it has the highest priority.
In a loop, do the following:
• Write to all items.
• Call Publish() (#3) numerous times.
All service and operation level results are Good.
Generally speaking, the subscription with the highest priority should have been received first the most number of times; both before and after the subscription modification.

009

CTT SetPublishingMode()  Create 2 subscriptions where the 1st subscription publishingEnabled=FALSE and the 2nd subscription publishingEnabled=TRUE, each with a static monitoredItem.
Call Publish() multiple times.
Set publishingEnabled=FALSE for both subscriptions.
Write to the monitoredItems of both subscriptions.
Call Publish() multiple times.
All service and operation level results are `good`.
The first calls to Publish() yield a dataChange for the 2nd subscription only.
The second calls to Publish() yield no dataChanges at all.

010

CTT SetPublishingMode()  Create 2 subscriptions where the 1st subscription publishingEnabled=FALSE and the 2nd subscription publishingEnabled=TRUE, each with a static monitoredItem.
Call Publish() multiple times.
Set publishingEnabled=TRUE for both subscriptions.
Write to the monitoredItems of both subscriptions.
Call Publish() multiple times.
All service and operation level results are `good`.
The first calls to Publish() yield a dataChange for the 2nd subscription only.
The second calls to Publish() yield a dataChange, for all subscriptions.

011

CTT SetPublishingMode()  Create 2 subscriptions where both subscriptions publishingEnabled=FALSE, each with a static monitoredItem.
Call Publish() multiple times.
Set publishingEnabled=FALSE for both subscriptions.
Write to the monitoredItems of both subscriptions.
Call Publish() multiple times.
All service and operation level results are `good`.
All calls to Publish() yield no dataChanges at all.

012

CTT SetPublishingMode()  Create 2 subscriptions where both subscriptions publishingEnabled=TRUE, each with a static monitoredItem.
Call Publish() multiple times.
Set publishingEnabled=TRUE for both subscriptions.
Write to the monitoredItems of both subscriptions.
Call Publish() multiple times.
All service and operation level results are `good`.
All calls to Publish() yield dataChanges.

013

CTT SetPublishingMode()  Create 2 subscriptions (publishingEnabled=FALSE) each with a static monitoredItem.
Call Publish().
Set publishingEnabled=TRUE for both subscriptions.
Write to the monitoredItems of both subscriptions.
Call Publish().
ServiceResult and operation level results are both `Good`.
The first publish() call yields no dataChanges.
The second publish() call yields a dataChange for all subscriptions.

014

CTT SetPublishingMode()  Create 2 subscriptions where both subscriptions publishingEnabled=TRUE, each with a static monitoredItem.
Call Publish() multiple times.
Set publishingEnabled=FALSE for 1st subscription.
Write to the monitoredItems of both subscriptions.
Call Publish() multiple times.
ServiceResult and operation level results are `Good`.
The first calls to Publish() should yield dataChanges for both subscriptions.
The second calls to Publish() should yield dataChanges for the 2nd subscription only.

015

CTT SetPublishingMode()  Create 2 subscriptions (enabled=TRUE) each with a static monitoredItem.
Call Publish().
Set Enabled=TRUE for both subscriptions.
Write to the monitoredItems of both subscriptions.
Call Publish().
ServiceResult and operation level results are both `Good`.
All publish() calls yields dataChanges.

016

CTT DeleteSubscriptions()  Call DeleteSubscriptions() and specify multiple valid subscriptions. ServiceResult = Good.
Results[i] = Good.

017

CTT Publish()  Create 2 active subscriptions with each monitoring at least one item.
Call Publish() twice (to service subscriptions #1 and #2).
In a loop of 3 iterations, write a value to all items and then call Publish() twice (for subscriptions #1 and #2).
Publishes #1 and #2 return the initial data change values for each subscription.
In each round of Publish() calls each subscription will be received.
Each subscription must be received before any single subscription is received again.

018

CTT Republish()  Create 2 subscriptions, each monitoring multiple items.
Call Publish() 6 times, only acknowledging sequenceNumbers for subscription #1. (this should receive 3 dataChanges per subscription)
Call Republish() to retrieve the 3 notificationMessages for subscription #2.
All service and operation level results are Good.
The Republish() calls yield the correct dataChange notification messages for the 2nd subscription.

019

CTT SetMonitoringMode()  Create 2 subscriptions in the same session.
For each subscription monitor 1 item, the same item.
Both items are created with their mode = Disabled.
Change the mode of subscription #2 to Reporting.
Call Publish() several times.
All service results and operation level results are good.
The Publish calls will yield an initial dataChange for the reporting item with subsequent keep-alives - assuming the value is static.
The disabled item will yield nothing meaning the subscription and sequence number will be unchanged (seq=1).

020

CTT Create a subscription for event subscription (subscribing to Server.Notifier) and create a 2nd subscription for monitoring other scalar nodes.
Step #
Action
Expected Result(s)

1

All calls are successful.

2

Call Publish twice (#1).

Publishes (#1) receive initial data change notifications and the 2nd call may receive event(s), or vice-versa.

3

Write a value to the event trigger(s) and then call Publish twice (#2).

Publishes (#2) receives an event notification and no data changes.

4

Write to the scalar items and then call Publish twice (#3).

Publishes (#3) receives data changes and no events.

5

Write to the event trigger(s) and scalar items and then call Publish twice (#4).

Publishes (#4) receives event(s) and data changes.

6

Do not write to anything, just call Publish (#5).

Publish (#5) receives a keepAlive.

021

CTT Unavailable  Create 2 subscriptions and in each create 2 MonitoredItems where one is Server.Notifier (events) and the other a scalar variable type (data).
Step #
Action
Expected Result(s)

1

All calls are successful.

2

In a loop, write a value to the Variable and also to a node that will invoke any kind of Event. Call Publish twice.

Each Publish response will receive data and event notifications.

Err-001

CTT SetPublishingMode()  Create 2 subscriptions (Enabled=TRUE) each monitoring a static node.
Enabled=FALSE for mixed valid and invalid (non-existent) subscriptions.
Write to the monitoredItems in all subscriptions.
Call Publish() multiple times.
ServiceResult = `Good`.
results[i] = Bad_SubscriptionIdInvalid (i = index of invalid subscriptions in subscriptionIds array).
results[j] = Good (j = index of valid subscriptions in subscriptionIds array).
The Write() call succeeds and all operation level results are `good`.
The Publish() calls yield dataChanges for the unchanged subscriptions only.

Err-002

CTT SetPublishingMode()  Enabled=TRUE multiple invalid subscriptions.
ServiceResult = Good.
results[i] = Bad_SubscriptionIdInvalid.

Err-003

CTT SetPublishingMode()  Create 2 subscriptions (Enabled=FALSE) each monitoring a static node.
Enabled=TRUE for mixed valid and invalid (non-existent) subscriptions.
Write to the monitoredItems in all subscriptions.
Call Publish() multiple times.
ServiceResult = `Good`.
results[i] = Bad_SubscriptionIdInvalid (i = index of invalid subscriptions in subscriptionIds array).
results[j] = Good (j = index of valid subscriptions in subscriptionIds array).
The Write() call succeeds and all operation level results are `good`.
The Publish() calls yield dataChanges for the valid (recently enabled) subscription only.