Monitor Basic

Support the following MonitoredItem Services: CreateMonitoredItems, ModifyMonitoredItems, DeleteMonitoredItems and SetMonitoringMode.


Questions? Contact us
Generated: 21/11/2021 at 17:21:20 p.m.
Monitor Basic - 79 Test Cases
Test Case Id Test Type Keywords Test Case Description Test Requirements Expected Result

001

CTT CreateMonitoredItems()  Publish()  Create a monitored item with the nodeId set to that of a non-Variable node and the attributeId set to a non-Value attribute.
Call Publish().
Service/operation results are `Good`.

002

CTT ModifyMonitoredItems()  Modify a single monitoredItem. Change the ClientHandle to another unique number. ServiceResult=`Good`.
Operation level results are also `Good`.

003

CTT ModifyMonitoredItems()  Modify single monitoredItem; returnTimestamp changes to: Source ServiceResult=`Good`.
Operation level results are also `Good`.

004

CTT ModifyMonitoredItems()  Modify single monitoredItem; TimestampsToReturn changes to: Server ServiceResult=`Good`.
Operation level results are also `Good`.

005

CTT ModifyMonitoredItems()  Modify single monitoredItem; TimestampsToReturn changes to: Both ServiceResult=`Good`.
Operation level results are also `Good`.

006

CTT ModifyMonitoredItems()  Modify single monitoredItem; TimestampsToReturn changes to: Neither
ServiceResult=`Good`.
Operation level results are also `Good`.

007

CTT ModifyMonitoredItems()  Modify single monitoredItem, change queue length to 0.
ServiceResult=`Good`.
Operation level results are also `Good`.

008

Lab DeleteMonitoredItems()  Create a subscription with a single/valid MonitoredItem where the MonitoringMode is Reporting.
Delete this MonitoredItem.
First, verify the device is being polled.
After the deleteMonitoredItems call, verify that the underlying device is not being polled.

009

CTT ModifyMonitoredItems()  Modify the samplingInterval = 10 msec for one monitoredItem.
ServiceResult=`Good`.
Operation level results are also `Good`.

010

CTT ModifyMonitoredItems()  Modify the SamplingInterval of multiple nodes, where the first half are set to 1000 msec and the latter half 3000 msec.
Where initial configuration is:
A subscription of 10 (or more) monitoredItems using default parameters.
ServiceResult=`Good`
Operation level = `Good`.

011

CTT ModifyMonitoredItems()  Modify the queueSize=0 of the first item.
ServiceResult=`Good`
The RevisedQueueSize should be > 0

012

CTT ModifyMonitoredItems()  Modify the queueSize=max UInt32 for the first item.
ServiceResult=`Good`.
Operation level = `Good`.
The RevisedQueueSize != MaxInt.

013

Lab DeleteMonitoredItems()  Create a subscription with a single/valid MonitoredItem where the MonitoringMode is Sampling.
Delete this MonitoredItem.
First, verify the device is being polled.
After the deleteMonitoredItems call, verify that the underlying device is not being polled.

014

CTT CreateMonitoredItems()  DeleteMonitoredItems()  Go into a large loop (e.g. 1k), where:
* CreateMonitoredItems(), specify 20 items.
* Delete all MonitoredItems
Service and operation level results are all Good.
Check for resource leaks.

015

CTT DeleteMonitoredItems()  Delete all monitored items from a valid subscription.
Change the MonitoringMode = Disabled on all MonitoredItems.
Delete the subscription.
Service result = Good.
SetMonitoringMode() service result is Good and the operation level results Bad_ MonitoredItemIdInvalid.
ServiceResult and operation level are Good for the DeleteSubscriptions call.

016

CTT DeleteMonitoredItems()  Specify a valid subscriptionId and multiple (not all) monitoredItemIds.
Change the MonitoringMode = Disabled on all MonitoredItems.
ServiceResult and operation level are `Good` for the DeleteMonitoredItems call.
SetMonitoringMode() service result is Good and the operation level results are:
* Good, for the items not deleted.
* Bad_ MonitoredItemIdInvalid, for the deleted items.

017

CTT DeleteMonitoredItems()  Specify a valid subscriptionId and 1 monitoredItemId.
Change the MonitoringMode = Disabled on the `deleted` MonitoredItem.
ServiceResult and operation level are `Good` for the DeleteMonitoredItems call.
SetMonitoringMode() service result is Good and the operation level result is Bad_ MonitoredItemIdInvalid.

018

CTT SetMonitoringMode()  Create 10 monitoredItems setting the MonitoringMode=Reporting.
Call Publish().
Modify multiple monitoredItems changing the monitoringMode so 3 are Disabled, 3 are Sampling, and 4 are Reporting.
Call Publish().
All service and operation-level results are `Good`.
Verify that the dataChange notification contains data from this/these items for the first Publish call, and in the 2nd Publish call data is received only for the 4 items that were set to Reporting mode.

019

CTT ModifyMonitoredItems()  Change the ClientHandle for the first item to a very large number.
ServiceLevel = `Good`
Operation level = `Good`.

020

CTT SetMonitoringMode()  The previous MonitoringMode value was Disabled. Call Publish to verify no results are retrieved.
Specify the monitoringMode of Disabled for a valid MonitoredItem.
Call Publish again.
All service and operation-level results are `Good`.
The Publish result does NOT contain any valueChange data from these MonitoredItems.

021

CTT SetMonitoringMode()  The previous MonitoringMode value was Disabled. Call Publish to verify no results are retrieved.
Specify the monitoringMode of Sampling for a valid MonitoredItem.
Call Publish again.
All service and operation-level results are `Good`.
The Publish result does NOT contain any valueChange data from these MonitoredItems.

022

CTT SetMonitoringMode()  The previous MonitoringMode value was Disabled. Call Publish to verify no results are retrieved.
Specify the monitoringMode of Reporting for a valid MonitoredItem.
Call Publish again.
All service and operation-level results are `Good`.
Verify that the dataChange notification contains no data in the first Publish call, but does contain data from this/these items in the 2nd publish call.

023

CTT SetMonitoringMode()  The previous MonitoringMode value was Sampling. Call Publish to verify no results are retrieved.
Specify the monitoringMode of Disabled for a valid MonitoredItem.
Call Publish again.
All service and operation-level results are `Good`.
The Publish results do NOT contain any valueChange data from these MonitoredItems.

024

CTT SetMonitoringMode()  The previous MonitoringMode value was Sampling. Call Publish to verify no results are retrieved.
Specify the monitoringMode of Sampling for a valid MonitoredItem.
Call Publish again.
All service and operation-level results are `Good`.
The Publish results do NOT contain any valueChange data from these MonitoredItems.

025

CTT SetMonitoringMode()  The previous MonitoringMode value was Sampling. Call Publish to verify no results are retrieved.
Specify the monitoringMode of Reporting for a valid MonitoredItem.
Call Publish again.
All service and operation-level results are `Good`.
Verify that the dataChange notification contains no data in the first Publish call, but does contain data from this/these items in the 2nd publish call.

026

CTT SetMonitoringMode()  The previous MonitoringMode value was Reporting. Call Publish to verify results are retrieved.
Specify the monitoringMode of Disabled for a valid MonitoredItem.
Call Publish again.
All service and operation-level results are `Good`.
Verify that the dataChange notification contains data from the first Publish call, but NOT the second.

027

CTT SetMonitoringMode()  The previous MonitoringMode value was Reporting. Call Publish to verify results are retrieved.
Specify the monitoringMode of Sampling for a valid MonitoredItem.
Call Publish again.
All service and operation-level results are `Good`.
Verify that the dataChange notification contains data from the first Publish call, but NOT the second.

028

CTT SetMonitoringMode()  The previous MonitoringMode value was Reporting. Call Publish to verify results are retrieved.
Specify the monitoringMode of Reporting for a valid MonitoredItem.
Call Publish again.
All service and operation-level results are `Good`.
Verify that the dataChange notification contains data from this/these items for both Publish calls.

029

CTT Unavailable  Subscribe to the Server object's Notifier attribute in order to receive event notifications.
Write to a node (below the Server object) that is configured to raise an event of some kind.
Call Publish.
Subscription is required. The node that raises an event must be configured in the CTT. Subscription is required.
The node that raises an event must be configured in the CTT.

030

CTT Unavailable  Subscribe to the Server object's Notifier attribute, but the MonitoringMode is SAMPLING.
Write to a node (below the Server object) that is configured to raise an event of some kind.
Call Publish.
Subscription is required. All calls are successful.
The Publish returns zero events (of any kind).
The assumption is that because the monitoringMode is sampling, no events will be received.

031

CTT Unavailable  Subscribe to the Server Object's Notifier attribute, but the MonitoringMode is DISABLED.
Write to a node (below the Server object) that is configured to raise an event of some kind.
Call Publish.
Subscription is required. All calls are successful.
The Publish returns zero events (of any kind).
The assumption is that because the monitoringMode is disabled so no events will be received.

032

CTT Unavailable  Call SetMonitoringMode and modify the Server object's Notifier attribute to be disabled. Write to a trigger node. Call Publish several times. Subscription already setup with an Enabled monitored item for Server.Notifier attribute.
Step #
Action
Expected Result(s)

1

All calls are successful. The monitored item was previously Enabled. The Publish returns no events.

2

Call SetMonitoringMode and modify the Server.Notifier item to be enabled. Write to a node (below the Server object) that is configured to raise an event of some kind. Call Publish.

[Note: Subscription already setup with a Disabled monitored item for Server.Notifier attribute.] All calls are successful. The monitored item was previously disabled and proven to be disabled. The Publish returns 1 or more events.

033

CTT Unavailable  Delete an existing/working Server object's Notifier attribute monitored item.
Call Publish.
Publish yields no events. All calls are successful. The monitored item was proven to be in working order prior to deletion.

034

CTT Create multiple monitored items by subscribing to all the attributes of the Node.Call Publish()three times and verify the response. Optional attributes can be skipped. Refer to Part 3: Section 5.6 of the UA specification to see the Mandatory/Optional attributes for Variable NodeClass. ServiceResult = Good. The First publish result contain data change notification. Second publish is either a KeepAlive or valueChange for the Value attribute only.
Third publish is either a KeepAlive or valueChange for the Value attribute only.

035

CTT Unavailable  Publish()  UA 1.03  Create a monitored item that is monitoring the system clock, with a slow scan-rate, e.g. 2000ms. Call Publish.
The Publish interval must be faster than the sampling interval, e.g. 100ms.
Step #
Action
Expected Result(s)

1

<p> All calls are successful and the initial data-change is received.</p>

2

<p> Modify the monitored item to use a faster sampling interval, i.e. 250-msecs. Call Publish multiple times.</p>

<p> The Publish response will contain the timestamp value, and that value is approx. 250 or 500ms greater than the value before the modification. If not, then one more slow-poll is acceptable followed by the fast-poll as described above.</p>

Err-001

CTT CreateMonitoredItems()  Create a single monitored item.
Specify an invalid SubscriptionID.
ServiceResult = Good.
Operation Level result = `Bad_SubscriptionIdInvalid`.

Err-002

CTT CreateMonitoredItems()  Create multiple monitored items.
Specify an invalid SubscriptionId.
ServiceResult = Good.
Operation Level result = `Bad_SubscriptionIdInvalid`.

Err-003

CTT CreateMonitoredItems()  Create multiple monitored items, all invalid NodeIds.
ServiceResult = Good.
OperationLevel results: Bad_NodeIdInvalid or Bad_NodeIdUnknown.

Err-004

CTT CreateMonitoredItems()  Create a Monitored Item with invalid NodeId. ServiceLevel: `Good`
OperationLevel: Bad_NodeIdInvalid or Bad_NodeIdUnknown.

Err-005

CTT CreateMonitoredItems()  Create a Monitored Item with unknown NodeId. ServiceLevel: `Good`
OperationLevel: Bad_NodeIdUnknown.

Err-006

CTT CreateMonitoredItems()  Create a Monitored Item with invalid (999) AttributeId. ServiceLevel: `Good`
OperationLevel: Bad_AttributeIDInvalid

Err-007

CTT CreateMonitoredItems()  Create a Monitored Item using an Array node while specifying an invalid IndexRange specified using an incorrect syntax of `5:2` (which is backwards).
ServiceResult = Good.
Operation level result = Bad_IndexRangeInvalid or Good. If `Good` is received then a call to Publish is required where the initial dataChange will be received for the node and the value will be <null> and the StatusCode will be Bad_IndexRangeInvalid.

Err-008

CTT CreateMonitoredItems()  Create a Monitored Item using an Array node while specifying an invalid IndexRange specified using an incorrect syntax of `2-4` (hyphen is incorrect character).
ServiceResult = Good.
Operation level result = Bad_IndexRangeInvalid.

Err-009

CTT CreateMonitoredItems()  Create a Monitored Item using an Array node while specifying an invalid IndexRange specified using an incorrect syntax of `2:2` (not a range).
ServiceResult = Good.
Operation level result = Bad_IndexRangeInvalid.

Err-010

CTT CreateMonitoredItems()  Specify an invalid requestedParameters samplingInterval = -10. ServiceLevel is Good.
OperationLevel is good. Verify the revisedSamplingInterval matches the RevisedPublishingInterval of the subscription.

Err-011

CTT CreateMonitoredItems()  Create a MonitoredItem using an Array node while specifying an invalid IndexRange specified using an incorrect syntax of `-4:-2` (negative). ServiceResult = Good.
Operation level result = Bad_IndexRangeInvalid.

Err-012

CTT CreateMonitoredItems()  Create a MonitoredItem using an ByteStringArray node and a StringArray node while specifying invalid IndexRange as: `[0:0],[2:1]`. ServiceResult = Good.
Operation level result = Bad_IndexRangeInvalid.

Err-013

CTT CreateMonitoredItems()  Create a MonitoredItem using an ByteStringArray node and a StringArray node while specifying invalid IndexRange as: `0-0,2-1`. ServiceResult = Good.
Operation level result = Bad_IndexRangeInvalid.

Err-014a

CTT CreateMonitoredItems()  Create a MonitoredItem using a ByteStringArray while specifying invalid IndexRange as being outside of the bounds of the array. Service Result is `Good`.
Operation result: `BadIndexRangeNoData`.

Err-014b

CTT CreateMonitoredItems()  Create a MonitoredItem using a StringArray node while specifying invalid IndexRange as being outside of the bounds of the array. Service Result is `Good`.
Operation result: `BadIndexRangeNoData`.

Err-015

CTT CreateMonitoredItems()  TimestampsToReturn = a value not in the enum. Service result = Bad_TimestampsToReturnInvalid.

Err-017

CTT ModifyMonitoredItems()  Modify single monitoredItem; Specify an invalid subscriptionId.
ServiceResult = Bad_SubscriptionIdInvalid.

Err-016

CTT CreateMonitoredItems()  ItemsToCreate[] is empty. Service result = Bad_NothingToDo.

Err-018

CTT ModifyMonitoredItems()  Modify single monitoredItem; Specify an invalid (i.e. does not exist) MonitoredItemId.
result = `Good`
OperationLevel: Bad_MonitoredItemIdInvalid.

Err-019

CTT ModifyMonitoredItems()  Modify multiple monitoredItems; Specify all invalid (i.e. does not exist) MonitoredItemId`s.
ServiceLevel: `Good`
OperationLevel: Bad_MonitoredItemIdInvalid.

Err-020

CTT ModifyMonitoredItems()  Change the ClientHandle for the first item to a number already in use by another MonitoredItem.
ServiceResult=`Good`.
Operation level= Good.

Err-021

CTT ModifyMonitoredItems()  Modify multiple monitoredItems; Specify some invalid (i.e. does not exist) MonitoredItemId`s with the remaining items being valid monitoredItemIds.
ServiceLevel: `Good`
OperationLevel: Bad_MonitoredItemIdInvalid
For all items with valid monitoredItemIds result = `Good`.

Err-022

CTT CreateMonitoredItems()  Script modifies a monitoredItem to use an unsupported filter, e.g. PercentDeadband. Service result is `Good`.
Operation result is `BadMonitoredItemFilterUnsupported`; or `Good` if supported.

Err-023

CTT ModifyMonitoredItems()  Create two subscriptions (each with a different set of items). Modify the items in the first subscription but specify the monitoredItemId of an item from the second subscription.
Service result = Good.
Operation result = Bad_MonitoredItemIdInvalid for the invalid item. However, if the server generates uniqueIds per subscription then the id from the `other` subscription may in fact match an item in the first subscription and therefore return a result of `Good` which is also acceptable.

Err-024

CTT ModifyMonitoredItems()  ItemsToModify is empty.
Service result = Bad_NothingToDo.

Err-025

CTT ModifyMonitoredItems()  TimestampsToReturn = a value not in the enum.
Service result = Good.
Operation level result = Bad_TimestampsToReturnInvalid.

Err-026

CTT SetMonitoringMode()  Specify an unknown monitoredItemID.
ServiceLevel: `Good`
OperationLevel: Bad_MonitoredItemIdInvalid

Err-027

CTT SetMonitoringMode()  Specify multiple monitoredItemId`s, all unknown monitoredItemId`s.
ServiceLevel: `Good`
OperationLevel: Bad_MonitoredItemIdInvalid.

Err-028

CTT SetMonitoringMode()  Specify multiple monitoredItemId`s, some valid and some unknown monitoredItemsId`s.
ServiceLevel: result = `Good`
OperationLevel: `Bad_MonitoredItemIdInvalid`
for all items with valid monitoredItemIds result = `Good`.

Err-029

CTT SetMonitoringMode()  Specify an unknown subscriptionId.
ServiceResult=`Bad_SubscriptionIdInvalid`.

Err-030

CTT SetMonitoringMode()  monitoredItemIds is empty.
Service result = Bad_NothingToDo.

Err-031

CTT SetMonitoringMode()  Create two subscriptions (each with a different set of items). Modify 2 items in the first subscription and also specify a 3rd item that is actually a monitoredItemId in the second subscription.
Service result = Good.
Operation result for the first 2 items are = Good.
Operation result for the 3rd item is either:
* Bad_MonitoredItemIdInvalid, because the server uses globally unique Ids.
* Good, because the server uniquely Ids per subscription.

Err-032

CTT DeleteMonitoredItems()  Specify an invalid subscriptionId.
ServiceResult = Bad_SubscriptionIdInvalid.

Err-033

CTT DeleteMonitoredItems()  Specify a valid subscriptionId and an invalid monitoredItemId.
ServiceLevel: `Good`
OperationLevel: Bad_MonitoredItemIdInvalid.

Err-034

CTT DeleteMonitoredItems()  Specify a valid subscriptionId and multiple invalid monitoredItemIds.
ServiceLevel: `Good`
OperationLevel: Bad_MonitoredItemIdInvalid.

Err-035

CTT DeleteMonitoredItems()  Specify a valid subscriptionId, and multiple monitoredItemIds of which some are valid and some are invalid.
ServiceLevel: `Good`.
OperationLevel: Bad_MonitoredItemIdInvalid.
for all items with valid monitoredItemIds result = `Good`.

Err-036

Lab DeleteNodes()  DeleteMonitoredItems()  Test setup:
* Create a valid subscription and MonitoredItem.
* Then delete the NodeId from the address space.
Now, in the call to DeleteMonitoredItems() specify the MonitoredItemId (whose NodeId that has been removed from the address-space).
Now try to Read() the NodeId that was deleted.
DeleteMonitoredItems:
* ServiceResult and operation level are Good.
Read:
* Service result is Good.
* Operation level result is Bad_NodeIdUnknown.

Err-037

CTT DeleteMonitoredItems()  monitoredItemIds[] is empty.
Service result = Bad_NothingToDo.

Err-038

CTT DeleteMonitoredItems()  Create two subscriptions where the first is empty (no MonitoredItems) and the second contains a valid MonitoredItem.
Specify the first subscription Id, but specify the monitoredItemId of the item in the second subscription.
ServiceResult is Good.
Operation level is Bad_MonitoredItemIdInvalid.

Err-039

CTT CreateMonitoredItems()  Create a Monitored Item using an Array node while specifying an invalid IndexRange specified using an incorrect syntax of `-2:0` (negative). ServiceResult = Good.
Operation level result = Bad_IndexRangeInvalid.

Err-040

CTT CreateMonitoredItems()  Create a Monitored Item for an array NodeID while specifying an invalid IndexRange specified in hex: `0x2:0xF`. ServiceResult = Good.
Operation level result = Bad_IndexRangeInvalid.

Err-041

CTT CreateMonitoredItems()  Specify a monitoredItem of type Variable. Read the `ValueRank` and `ArrayDimensions` attribute to verify the array is a single dimension array.
This test must exclude arrays of type String or ByteString since they constitute 2-dimensional arrays.
Specify an invalid IndexRange for a 2-dimensional array: `2:3,1:2`.
Step #
Action
Expected Result(s)

1

Call CreateMonitoredItems.

CreateMonitoredItems Service result is Good. Operation level result is either: Good, or Bad_IndexRangeNoData.

2

If CreateMonitoredItems was successful, then call Publish.

DataChange received with StatusCode showing Bad_IndexRangeNoData.

Err-042

CTT CreateMonitoredItems()  Within an item, specify a DeadbandAbsolute filter, on a server that does not support deadbands. ServiceLevel: `Good`
OperationLevel: Bad_ MonitoredItemFilterUnsupported.
Or, `Good` if deadbands are supported.

Err-043

CTT ModifyMonitoredItems()  UA 1.03  Call ModifyMonitoredItems for a MonitoredItem in a subscription which was already created in another session.
"SeviceResult: BadSubscriptionIdInvalid
The parameter of the MonitoredItem did not change."