03/19/2024
OfflineCTT partially modifies the response where server index changes but the namespaceURI remains null.
At present we don\'t have any server which actually has implemented this non 0 server index along the proper namespaceURI.
Hence, just to meet the compliance, if we make the changes in client code, we would not be able to test it against server which offers response with server index as non 0 which might break client functionality in future when client connects to such server.
So, is it required to address CTT requirement just to meet compliance without having proper testing in place.
CTT for browse request:
/* Test prepared by Nathan Pocock nathan.pocock@opcfoundation.org
Description:
BrowseResult[0]. nodeId has a non-zero server index – node belongs
to remote server. */
include( "./library/Services/ViewServiceSet/Browse.js" );
function browseResponse8dot1Err032( request, response ) {
if( response === null ) return;
if( response.Results.length === 0 ) {
addError( "Not enough results to inject. Received 0." );
return;
}
else {
// modify the first record only
print( "Response.Results[0].References[0].NodeId.ServerIndex (before): " + response.Results[0].References[0].NodeId.ServerIndex );
response.Results[0].References[0].NodeId.ServerIndex = 10;
print( "Response.Results[0].References[0].NodeId.ServerIndex (after) : " + response.Results[0].References[0].NodeId.ServerIndex );
}
}
BrowseHelper.Execute({ ServiceResult: StatusCode.Good, ExternalFunction: browseResponse8dot1Err032 });
Thanks,
Chirantan
07/16/2021
OfflineHi,
the test scripts for client are mainly helper scripts and the behavior must be validated manually.
So for this specific test case - if the server returns a NodeId from an external server -, the expectation is:
Client identifies the Node is different because it is stored on a remote Server. The Client may display or limit the options available on the node or hide the node etc (per Client documentation).
If the client meets this expectation, then it's fine.
I'm just curious, is your client currently throwing an error because the NodeId is invalid?
Nevertheless, your analysis, that the test script also have to add the NamespaceUri when modifying the BrowseResponse, is correct. The NamespaceUri shall be used if a node from a remote server is returned in the BrowseResponse.
On the other hand, the CTT would also have to modify the ServerArray to provide information about the remote server because clients may read that array to access the description of the remote server.
Bugs in the CTT or in the test scripts should be reported here.
1 Guest(s)


Log In

Usage Policy