View Issue Details

IDProjectCategoryView StatusLast Update
0008416Compliance Test Tool (CTT) Unified Architecture4 - Test Case Definitionpublic2022-12-05 08:40
ReporterMartin Lang Assigned ToPaul Hunkar  
PrioritynormalSeveritymajorReproducibilityalways
Status assignedResolutionopen 
Product Version1.04.09.401 
Summary0008416: CTT expect write value NULL to ByteString shall be possible
Description

Several test scripts uses the variant functions UaVariant.SetValueMax and/or UaVariant.SetValueMin.
Both functions return for data type ByteString a NULL value.
The test script expect that a write of a NULL-ByteString shall be succeed.
(There are at least one test script which allows to return BadOutOfRange, see additional information).

The problem is, that not each underlaying system/framework can represent NULL-values für ByteStrings/Strings.

Our underlaying abstration framework supports fieldbusses and RTE like CAN, PROFINET, EthernetIP and so on.
In none of the protocol the requirement for a NULL-value exists.
Our underlaying abstration framework does not support the option to write a NULL-value to the customer application.

Therefore the test scripts should permit to return a BadOutOfRange as opertion result.

Additional Information

CTT test script which permit/not permit BadOutOfRange as opertion result.
Attribute Write Values -> 005.js permit BadOutOfRange, 006.js does not permit BadOutOfRange in case of a write NULL-value request.

TagsNo tags attached.
Files Affected

Activities

Martin Lang

2022-10-26 08:30

reporter   ~0018086

Issue in relation to issue 6341.

Martin Lang

2022-11-15 15:08

reporter   ~0018149

Any updates to this issues?

Paul Hunkar

2022-11-17 18:19

administrator   ~0018160

The following text is included in part 6 (section 5.1.9) https://reference.opcfoundation.org/v105/Core/docs/Part6/5.1.9/
'The terms null, empty and zero-length are used to describe array values (Strings are arrays of characters and ByteStrings are arrays of Bytes for purposes of this discussion). A null array has no value. A zero-length or empty array is an array with 0 elements. Some DataEncodings will allow the distinction to be preserved on the wire, however, not all DevelopmentPlatforms will be able to preserve the distinction. For this reason, null, empty and zero length arrays are semantically the same for all DataEncodings. Decoders shall be able to handle all variations supported by the DataEncoding, however, decoders are not required to preserve the distinction. When testing for equality, applications shall treat null and empty arrays as equal. When a DevelopmentPlatform supports the distinction, writing and reading back an array value may result in null array becoming an empty array or vise versa."

what this is saying is that an implementation is required to be able to perform the mapping to what is allowed in the underlining system.

Paul Hunkar

2022-11-17 18:30

administrator   ~0018161

Based on the specification section in part 6, we believe that no changes are required. We understand that an underlining system might not have the same mapping for a null, but they still should have something that represents an empty and that mapping is what is required. Do you see a different issue?

Martin Lang

2022-12-05 08:40

reporter   ~0018230

If I am understand this right, the following applies.
For example a ByteString NULL is written, this could be intepret as ByteString.Length = 0, ByteString.Data = NULL. So the underlining system contains after this write a nulled data like ByteString[8]=0x00000000?

Issue History

Date Modified Username Field Change
2022-10-26 08:28 Martin Lang New Issue
2022-10-26 08:30 Martin Lang Note Added: 0018086
2022-11-15 15:08 Martin Lang Note Added: 0018149
2022-11-17 18:19 Paul Hunkar Note Added: 0018160
2022-11-17 18:30 Paul Hunkar Assigned To => Paul Hunkar
2022-11-17 18:30 Paul Hunkar Status new => feedback
2022-11-17 18:30 Paul Hunkar Note Added: 0018161
2022-12-05 08:40 Martin Lang Note Added: 0018230
2022-12-05 08:40 Martin Lang Status feedback => assigned