Selaa lähdekoodia

CI: Exclude some specific unit tests which are not supported when compiling with MINIMAL NS0

Fixes #2585
Stefan Profanter 6 vuotta sitten
vanhempi
commit
0ee155231d

+ 6 - 1
tests/client/check_client_highlevel.c

@@ -116,6 +116,8 @@ START_TEST(Node_Add) {
         ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
     }
 
+    /* Minimal nodeset does not contain UA_NS0ID_INTEGER node */
+    #ifdef UA_GENERATED_NAMESPACE_ZERO
     // Create Int128 DataType within Integer Datatype
     {
         UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
@@ -127,6 +129,7 @@ START_TEST(Node_Add) {
                                            UA_QUALIFIEDNAME(1, "Int128"), attr, &newDataTypeId);
         ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
     }
+    #endif
 
     // Create PointType VariableType within BaseDataVariableType
     {
@@ -542,7 +545,9 @@ static void checkNodeClass(UA_Client *clientNc, const UA_NodeId nodeId, const UA
 START_TEST(Node_ReadWrite_Class) {
     checkNodeClass(client, nodeReadWriteInt, UA_NODECLASS_VARIABLE);
     checkNodeClass(client, UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER), UA_NODECLASS_OBJECT);
-#ifdef UA_ENABLE_METHODCALLS
+
+    /* Minimal nodeset does not contain UA_NS0ID_SERVER_GETMONITOREDITEMS node */
+#if defined(UA_ENABLE_METHODCALLS) && defined(UA_GENERATED_NAMESPACE_ZERO)
     checkNodeClass(client, UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_GETMONITOREDITEMS), UA_NODECLASS_METHOD);
 #endif
 

+ 4 - 1
tests/client/check_client_subscriptions.c

@@ -499,7 +499,6 @@ START_TEST(Client_methodcall) {
     UA_CreateSubscriptionResponse response = UA_Client_Subscriptions_create(client, request,
                                                                             NULL, NULL, NULL);
     ck_assert_uint_eq(response.responseHeader.serviceResult, UA_STATUSCODE_GOOD);
-    UA_UInt32 subId = response.subscriptionId;
 
     /* monitor the server state */
     UA_MonitoredItemCreateRequest monRequest =
@@ -511,7 +510,10 @@ START_TEST(Client_methodcall) {
                                                   monRequest, NULL, NULL, NULL);
     ck_assert_uint_eq(monResponse.statusCode, UA_STATUSCODE_GOOD);
 
+/* Minimal nodeset does not contain any method we can call here */
+#ifdef UA_GENERATED_NAMESPACE_ZERO
     UA_UInt32 monId = monResponse.monitoredItemId;
+    UA_UInt32 subId = response.subscriptionId;
 
     /* call a method to get monitored item id */
     UA_Variant input;
@@ -542,6 +544,7 @@ START_TEST(Client_methodcall) {
     ck_assert_uint_eq(retval, UA_STATUSCODE_BADSUBSCRIPTIONIDINVALID);
 
     UA_Variant_deleteMembers(&input);
+#endif
 
     UA_Client_disconnect(client);
     UA_Client_delete(client);

+ 12 - 5
tests/server/check_node_inheritance.c

@@ -25,7 +25,7 @@ static void teardown(void) {
     UA_ServerConfig_delete(config);
 }
 
-
+#ifdef UA_GENERATED_NAMESPACE_ZERO
 /* finds the NodeId of a StateNumber child of a given node id */
 static void
 findChildId(UA_NodeId stateId, UA_NodeId referenceType,
@@ -51,7 +51,7 @@ findChildId(UA_NodeId stateId, UA_NodeId referenceType,
     UA_NodeId_copy(&bpr.targets[0].targetId.nodeId, result);
     UA_BrowsePathResult_deleteMembers(&bpr);
 }
-
+#endif
 
 START_TEST(Nodes_createCustomStateType) {
     // Create a type "CustomStateType" with a variable "CustomStateNumber" as property
@@ -94,12 +94,14 @@ START_TEST(Nodes_createCustomStateType) {
                                        NULL, NULL);
     ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
 
+/* Minimal nodeset does not contain the modelling rule mandatory */
+#ifdef UA_GENERATED_NAMESPACE_ZERO
     retval = UA_Server_addReference(server, UA_NODEID_NUMERIC(1, 6001),
                                     UA_NODEID_NUMERIC(0, UA_NS0ID_HASMODELLINGRULE),
                                     UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_MODELLINGRULE_MANDATORY),
                                     true);
     ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
-
+#endif
 }
 END_TEST
 
@@ -130,6 +132,8 @@ START_TEST(Nodes_createCustomObjectType) {
                                      oAttr, NULL, NULL);
     ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
 
+/* Minimal nodeset does not contain the modelling rule mandatory */
+#ifdef UA_GENERATED_NAMESPACE_ZERO
     /* modelling rule is mandatory so it will be inherited for the object
      * created from CustomDemoType */
     retval = UA_Server_addReference(server, UA_NODEID_NUMERIC(1, 6011),
@@ -139,8 +143,6 @@ START_TEST(Nodes_createCustomObjectType) {
     ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
 
 
-
-
     /* assign a default value to the attribute "StateNumber" inside the state
      * attribute (part of the MyDemoType) */
     UA_Variant stateNum;
@@ -154,6 +156,8 @@ START_TEST(Nodes_createCustomObjectType) {
     retval = UA_Server_writeValue(server, childID, stateNum);
     ck_assert_uint_eq(retval, UA_STATUSCODE_GOOD);
 
+#endif
+
 }
 END_TEST
 
@@ -173,6 +177,8 @@ START_TEST(Nodes_createInheritedObject) {
 END_TEST
 
 START_TEST(Nodes_checkInheritedValue) {
+/* Minimal nodeset does not contain the modelling rule mandatory, therefore there is no CustomStateNumber */
+#ifdef UA_GENERATED_NAMESPACE_ZERO
     UA_NodeId childState;
     findChildId(UA_NODEID_NUMERIC(1, 6020),
                 UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
@@ -192,6 +198,7 @@ START_TEST(Nodes_checkInheritedValue) {
 
     ck_assert_int_eq(*value, valueToBeInherited);
     UA_Variant_deleteMembers(&inheritedValue);
+#endif
 }
 END_TEST
 

+ 4 - 4
tests/server/check_services_attributes.c

@@ -135,8 +135,8 @@ static void setup(void) {
     UA_MethodAttributes ma = UA_MethodAttributes_default;
     ma.description = UA_LOCALIZEDTEXT("en-US", "Methodtest");
     ma.displayName = UA_LOCALIZEDTEXT("en-US", "Methodtest");
-    retval = UA_Server_addMethodNode(server, UA_NODEID_NUMERIC(0, UA_NS0ID_METHODNODE),
-                                     UA_NODEID_NUMERIC(0, 3),
+    retval = UA_Server_addMethodNode(server, UA_NODEID_NUMERIC(1, UA_NS0ID_METHODNODE),
+                                     UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
                                      UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT),
                                      UA_QUALIFIEDNAME(0, "Methodtest"), ma,
                                      NULL, 0, NULL, 0, NULL, NULL, NULL);
@@ -521,7 +521,7 @@ START_TEST(ReadSingleAttributeExecutableWithoutTimestamp) {
 #ifdef UA_ENABLE_METHODCALLS
     UA_ReadValueId rvi;
     UA_ReadValueId_init(&rvi);
-    rvi.nodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_METHODNODE);
+    rvi.nodeId = UA_NODEID_NUMERIC(1, UA_NS0ID_METHODNODE);
     rvi.attributeId = UA_ATTRIBUTEID_EXECUTABLE;
 
     UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
@@ -538,7 +538,7 @@ START_TEST(ReadSingleAttributeUserExecutableWithoutTimestamp) {
 #ifdef UA_ENABLE_METHODCALLS
     UA_ReadValueId rvi;
     UA_ReadValueId_init(&rvi);
-    rvi.nodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_METHODNODE);
+    rvi.nodeId = UA_NODEID_NUMERIC(1, UA_NS0ID_METHODNODE);
     rvi.attributeId = UA_ATTRIBUTEID_USEREXECUTABLE;
 
     UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);

+ 14 - 1
tests/server/check_services_call.c

@@ -96,7 +96,7 @@ START_TEST(callKnownMethodOnUnknownObject) {
 START_TEST(callMethodAndObjectExistsButMethodHasWrongNodeClass) {
     UA_CallMethodRequest callMethodRequest;
     UA_CallMethodRequest_init(&callMethodRequest);
-    callMethodRequest.methodId = UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_AUDITING);  // not a method
+    callMethodRequest.methodId = UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_SERVERSTATUS);  // not a method
     callMethodRequest.objectId = UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER);
 
     UA_CallMethodResult result;
@@ -106,6 +106,8 @@ START_TEST(callMethodAndObjectExistsButMethodHasWrongNodeClass) {
 } END_TEST
 
 START_TEST(callMethodOnUnrelatedObject) {
+    /* Minimal nodeset does not add any method nodes we may call here */
+#ifdef UA_GENERATED_NAMESPACE_ZERO
     UA_CallMethodRequest callMethodRequest;
     UA_CallMethodRequest_init(&callMethodRequest);
     callMethodRequest.methodId = UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_GETMONITOREDITEMS);
@@ -115,6 +117,7 @@ START_TEST(callMethodOnUnrelatedObject) {
     UA_CallMethodResult_init(&result);
     result = UA_Server_call(server, &callMethodRequest);
     ck_assert_int_eq(result.statusCode, UA_STATUSCODE_BADMETHODINVALID);
+#endif
 } END_TEST
 
 START_TEST(callMethodAndObjectExistsButNoFunctionPointerAttached) {
@@ -142,6 +145,8 @@ START_TEST(callMethodNonExecutable) {
 } END_TEST
 
 START_TEST(callMethodWithMissingArguments) {
+/* Minimal nodeset does not add any method nodes we may call here */
+#ifdef UA_GENERATED_NAMESPACE_ZERO
     UA_CallMethodRequest callMethodRequest;
     UA_CallMethodRequest_init(&callMethodRequest);
     callMethodRequest.methodId = UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_GETMONITOREDITEMS);
@@ -151,9 +156,12 @@ START_TEST(callMethodWithMissingArguments) {
     UA_CallMethodResult_init(&result);
     result = UA_Server_call(server, &callMethodRequest);
     ck_assert_int_eq(result.statusCode, UA_STATUSCODE_BADARGUMENTSMISSING);
+#endif
 } END_TEST
 
 START_TEST(callMethodWithTooManyArguments) {
+/* Minimal nodeset does not add any method nodes we may call here */
+#ifdef UA_GENERATED_NAMESPACE_ZERO
     UA_Variant inputArguments[2];
     UA_Variant_init(&inputArguments[0]);
     UA_Variant_init(&inputArguments[1]);
@@ -169,9 +177,12 @@ START_TEST(callMethodWithTooManyArguments) {
     UA_CallMethodResult_init(&result);
     result = UA_Server_call(server, &callMethodRequest);
     ck_assert_int_eq(result.statusCode, UA_STATUSCODE_BADTOOMANYARGUMENTS);
+#endif
 } END_TEST
 
 START_TEST(callMethodWithWronglyTypedArguments) {
+/* Minimal nodeset does not add any method nodes we may call here */
+#ifdef UA_GENERATED_NAMESPACE_ZERO
     UA_Variant inputArgument;
     UA_Variant_init(&inputArgument);
     UA_Double wrongType = 1.0;
@@ -188,10 +199,12 @@ START_TEST(callMethodWithWronglyTypedArguments) {
     UA_CallMethodResult_init(&result);
     result = UA_Server_call(server, &callMethodRequest);
 
+    ck_assert_int_gt(result.inputArgumentResultsSize, 0);
     ck_assert_int_eq(result.inputArgumentResults[0], UA_STATUSCODE_BADTYPEMISMATCH);
     ck_assert_int_eq(result.statusCode, UA_STATUSCODE_BADINVALIDARGUMENT);
 
     UA_Array_delete(result.inputArgumentResults, result.inputArgumentResultsSize, &UA_TYPES[UA_TYPES_STATUSCODE]);
+#endif
 } END_TEST
 
 int main(void) {

+ 12 - 1
tests/server/check_services_nodemanagement.c

@@ -164,6 +164,9 @@ START_TEST(InstantiateVariableTypeNodeLessDims) {
 
 START_TEST(AddComplexTypeWithInheritance) {
     /* add a variable node to the address space */
+
+    /* Node UA_NS0ID_SERVERTYPE is not available in the minimal NS0 */
+#ifdef UA_GENERATED_NAMESPACE_ZERO
     UA_ObjectAttributes attr = UA_ObjectAttributes_default;
     attr.description = UA_LOCALIZEDTEXT("en-US","fakeServerStruct");
     attr.displayName = UA_LOCALIZEDTEXT("en-US","fakeServerStruct");
@@ -175,10 +178,11 @@ START_TEST(AddComplexTypeWithInheritance) {
     UA_StatusCode res =
         UA_Server_addObjectNode(server, myObjectNodeId, parentNodeId,
                                 parentReferenceNodeId, myObjectName,
-                                UA_NODEID_NUMERIC(0, 2004), attr,
+                                UA_NODEID_NUMERIC(0, UA_NS0ID_SERVERTYPE), attr,
                                 &handleCalled, NULL);
     ck_assert_int_eq(UA_STATUSCODE_GOOD, res);
     ck_assert_int_gt(handleCalled, 0); // Should be 58, but may depend on NS0 XML detail
+#endif
 } END_TEST
 
 START_TEST(AddNodeTwiceGivesError) {
@@ -394,11 +398,15 @@ START_TEST(InstantiateObjectType) {
                                        UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
                                        mnAttr, NULL, &manufacturerNameId);
     ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
+
+    /* UA_NS0ID_MODELLINGRULE_MANDATORY is not available in Minimal Nodeset */
+#ifdef UA_GENERATED_NAMESPACE_ZERO
     /* Make the manufacturer name mandatory */
     retval = UA_Server_addReference(server, manufacturerNameId,
                                     UA_NODEID_NUMERIC(0, UA_NS0ID_HASMODELLINGRULE),
                                     UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_MODELLINGRULE_MANDATORY), true);
     ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
+#endif
 
     UA_VariableAttributes modelAttr = UA_VariableAttributes_default;
     modelAttr.displayName = UA_LOCALIZEDTEXT("en-US", "ModelName");
@@ -429,11 +437,14 @@ START_TEST(InstantiateObjectType) {
                                        statusAttr, NULL, &statusId);
     ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
 
+/* UA_NS0ID_MODELLINGRULE_MANDATORY is not available in Minimal Nodeset */
+#ifdef UA_GENERATED_NAMESPACE_ZERO
     /* Make the status variable mandatory */
     retval = UA_Server_addReference(server, statusId,
                                     UA_NODEID_NUMERIC(0, UA_NS0ID_HASMODELLINGRULE),
                                     UA_EXPANDEDNODEID_NUMERIC(0, UA_NS0ID_MODELLINGRULE_MANDATORY), true);
     ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
+#endif
 
     UA_VariableAttributes rpmAttr = UA_VariableAttributes_default;
     rpmAttr.displayName = UA_LOCALIZEDTEXT("en-US", "MotorRPM");