|
@@ -141,117 +141,106 @@ static UA_VariableNode* makeCompareSequence(void) {
|
|
|
|
|
|
START_TEST(ReadSingleAttributeValueWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_VALUE;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_VALUE;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(resp.status, UA_STATUSCODE_GOOD);
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_INT32], resp.value.type);
|
|
|
ck_assert_int_eq(42, *(UA_Int32* )resp.value.data);
|
|
|
UA_Server_delete(server);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeValueRangeWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "myarray");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_VALUE;
|
|
|
- rReq.nodesToRead[0].indexRange = UA_STRING_ALLOC("1:2,0:1");
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "myarray");
|
|
|
+ rvi.indexRange = UA_STRING("1:2,0:1");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_VALUE;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(4, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_INT32], resp.value.type);
|
|
|
UA_Server_delete(server);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeNodeIdWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_NODEID;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_NODEID;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
const UA_NodeId myIntegerNodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_NODEID], resp.value.type);
|
|
|
UA_NodeId* respval = (UA_NodeId*) resp.value.data;
|
|
|
ck_assert_int_eq(1, respval->namespaceIndex);
|
|
|
ck_assert(UA_String_equal(&myIntegerNodeId.identifier.string, &respval->identifier.string));
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeNodeClassWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_NODECLASS;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_NODECLASS;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_NODECLASS],resp.value.type);
|
|
|
ck_assert_int_eq(*(UA_Int32*)resp.value.data,UA_NODECLASS_VARIABLE);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeBrowseNameWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_BROWSENAME;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_BROWSENAME;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
UA_QualifiedName* respval = (UA_QualifiedName*) resp.value.data;
|
|
|
const UA_QualifiedName myIntegerName = UA_QUALIFIEDNAME(1, "the answer");
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_QUALIFIEDNAME], resp.value.type);
|
|
|
ck_assert_int_eq(1, respval->namespaceIndex);
|
|
|
ck_assert(UA_String_equal(&myIntegerName.name, &respval->name));
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeDisplayNameWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_DISPLAYNAME;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_DISPLAYNAME;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
UA_LocalizedText* respval = (UA_LocalizedText*) resp.value.data;
|
|
|
const UA_LocalizedText comp = UA_LOCALIZEDTEXT("locale", "the answer");
|
|
|
UA_VariableNode* compNode = makeCompareSequence();
|
|
@@ -260,29 +249,26 @@ START_TEST(ReadSingleAttributeDisplayNameWithoutTimestamp) {
|
|
|
ck_assert(UA_String_equal(&comp.text, &respval->text));
|
|
|
ck_assert(UA_String_equal(&compNode->displayName.locale, &respval->locale));
|
|
|
UA_Server_delete(server);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_NodeStore_deleteNode((UA_Node*)compNode);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeDescriptionWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_DESCRIPTION;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_DESCRIPTION;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
UA_LocalizedText* respval = (UA_LocalizedText*) resp.value.data;
|
|
|
UA_VariableNode* compNode = makeCompareSequence();
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_LOCALIZEDTEXT], resp.value.type);
|
|
|
ck_assert(UA_String_equal(&compNode->description.locale, &respval->locale));
|
|
|
ck_assert(UA_String_equal(&compNode->description.text, &respval->text));
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_NodeStore_deleteNode((UA_Node*)compNode);
|
|
|
UA_Server_delete(server);
|
|
@@ -290,154 +276,139 @@ START_TEST(ReadSingleAttributeDescriptionWithoutTimestamp) {
|
|
|
|
|
|
START_TEST(ReadSingleAttributeWriteMaskWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_WRITEMASK;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_WRITEMASK;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
UA_UInt32* respval = (UA_UInt32*) resp.value.data;
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_UINT32], resp.value.type);
|
|
|
ck_assert_int_eq(0,*respval);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeUserWriteMaskWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_USERWRITEMASK;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_USERWRITEMASK;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
UA_UInt32* respval = (UA_UInt32*) resp.value.data;
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_UINT32], resp.value.type);
|
|
|
ck_assert_int_eq(0,*respval);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeIsAbstractWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId.identifier.numeric = UA_NS0ID_ORGANIZES;
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_ISABSTRACT;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_ISABSTRACT;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_BOOLEAN], resp.value.type);
|
|
|
ck_assert(*(UA_Boolean* )resp.value.data==false);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeSymmetricWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId.identifier.numeric = UA_NS0ID_ORGANIZES;
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_SYMMETRIC;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_SYMMETRIC;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_BOOLEAN], resp.value.type);
|
|
|
ck_assert(*(UA_Boolean* )resp.value.data==false);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeInverseNameWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId.identifier.numeric = UA_NS0ID_ORGANIZES;
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_INVERSENAME;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_INVERSENAME;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
UA_LocalizedText* respval = (UA_LocalizedText*) resp.value.data;
|
|
|
const UA_LocalizedText comp = UA_LOCALIZEDTEXT("en_US", "OrganizedBy");
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_LOCALIZEDTEXT],resp.value.type);
|
|
|
ck_assert(UA_String_equal(&comp.text, &respval->text));
|
|
|
ck_assert(UA_String_equal(&comp.locale, &respval->locale));
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeContainsNoLoopsWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId.identifier.numeric = UA_NS0ID_VIEWNODE;
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_CONTAINSNOLOOPS;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_VIEWNODE);
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_CONTAINSNOLOOPS;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_BOOLEAN], resp.value.type);
|
|
|
ck_assert(*(UA_Boolean* )resp.value.data==false);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeEventNotifierWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_NUMERIC(1, 50);
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_EVENTNOTIFIER;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_NUMERIC(1, 50);
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_EVENTNOTIFIER;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(UA_STATUSCODE_GOOD, resp.status);
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_BYTE],resp.value.type);
|
|
|
ck_assert_int_eq(*(UA_Byte*)resp.value.data, 0);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeDataTypeWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_DATATYPE;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_DATATYPE;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_int_eq(UA_STATUSCODE_GOOD, resp.status);
|
|
|
ck_assert_int_eq(true, resp.hasValue);
|
|
@@ -445,100 +416,92 @@ START_TEST(ReadSingleAttributeDataTypeWithoutTimestamp) {
|
|
|
UA_NodeId* respval = (UA_NodeId*)resp.value.data;
|
|
|
ck_assert_int_eq(respval->namespaceIndex,0);
|
|
|
ck_assert_int_eq(respval->identifier.numeric, UA_NS0ID_BASEDATATYPE);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeValueRankWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_VALUERANK;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_VALUERANK;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_INT32], resp.value.type);
|
|
|
ck_assert_int_eq(-2, *(UA_Int32* )resp.value.data);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeArrayDimensionsWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_ARRAYDIMENSIONS;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_ARRAYDIMENSIONS;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_INT32], resp.value.type);
|
|
|
ck_assert_ptr_eq((UA_Int32*)resp.value.data,0);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeAccessLevelWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_ACCESSLEVEL;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_ACCESSLEVEL;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_BYTE], resp.value.type);
|
|
|
ck_assert_int_eq(*(UA_Byte*)resp.value.data, 0);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeUserAccessLevelWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_USERACCESSLEVEL;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_USERACCESSLEVEL;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
+ UA_RCU_LOCK();
|
|
|
const UA_VariableNode* compNode =
|
|
|
- (const UA_VariableNode*)UA_NodeStore_get(server->nodestore, &rReq.nodesToRead[0].nodeId);
|
|
|
+ (const UA_VariableNode*)UA_NodeStore_get(server->nodestore, &rvi.nodeId);
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_BYTE], resp.value.type);
|
|
|
ck_assert_int_eq(*(UA_Byte*)resp.value.data, compNode->userAccessLevel);
|
|
|
+ UA_RCU_UNLOCK();
|
|
|
UA_Server_delete(server);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeMinimumSamplingIntervalWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_MINIMUMSAMPLINGINTERVAL;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_MINIMUMSAMPLINGINTERVAL;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
UA_Double* respval = (UA_Double*) resp.value.data;
|
|
|
UA_VariableNode *compNode = makeCompareSequence();
|
|
|
UA_Double comp = (UA_Double) compNode->minimumSamplingInterval;
|
|
@@ -546,121 +509,110 @@ START_TEST(ReadSingleAttributeMinimumSamplingIntervalWithoutTimestamp) {
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_DOUBLE], resp.value.type);
|
|
|
ck_assert(*respval == comp);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_NodeStore_deleteNode((UA_Node*)compNode);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeHistorizingWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "the.answer");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_HISTORIZING;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_HISTORIZING;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_BOOLEAN], resp.value.type);
|
|
|
ck_assert(*(UA_Boolean*)resp.value.data==false);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeExecutableWithoutTimestamp) {
|
|
|
-#ifdef UA_ENABLE_METHODCALLS
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId.identifier.numeric = UA_NS0ID_METHODNODE;
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_EXECUTABLE;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+#ifdef UA_ENABLE_METHODCALLS
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_METHODNODE);
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_EXECUTABLE;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
+ ck_assert_int_eq(true, resp.hasValue);
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_BOOLEAN], resp.value.type);
|
|
|
ck_assert(*(UA_Boolean*)resp.value.data==false);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
- UA_Server_delete(server);
|
|
|
#endif
|
|
|
+
|
|
|
+ UA_Server_delete(server);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleAttributeUserExecutableWithoutTimestamp) {
|
|
|
#ifdef UA_ENABLE_METHODCALLS
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId.identifier.numeric = UA_NS0ID_METHODNODE;
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_USEREXECUTABLE;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_METHODNODE);
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_USEREXECUTABLE;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(0, resp.value.arrayLength);
|
|
|
ck_assert_ptr_eq(&UA_TYPES[UA_TYPES_BOOLEAN], resp.value.type);
|
|
|
ck_assert(*(UA_Boolean*)resp.value.data==false);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_Server_delete(server);
|
|
|
#endif
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleDataSourceAttributeValueWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "cpu.temperature");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_VALUE;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "cpu.temperature");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_VALUE;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(UA_STATUSCODE_GOOD, resp.status);
|
|
|
UA_Server_delete(server);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST(ReadSingleDataSourceAttributeDataTypeWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "cpu.temperature");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_DATATYPE;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "cpu.temperature");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_DATATYPE;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(UA_STATUSCODE_GOOD, resp.status);
|
|
|
ck_assert_int_eq(resp.hasServerTimestamp, false);
|
|
|
UA_Server_delete(server);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
} END_TEST
|
|
|
|
|
|
START_TEST (ReadSingleDataSourceAttributeArrayDimensionsWithoutTimestamp) {
|
|
|
UA_Server *server = makeTestSequence();
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadRequest rReq;
|
|
|
- UA_ReadRequest_init(&rReq);
|
|
|
- rReq.nodesToRead = UA_ReadValueId_new();
|
|
|
- rReq.nodesToReadSize = 1;
|
|
|
- rReq.nodesToRead[0].nodeId = UA_NODEID_STRING_ALLOC(1, "cpu.temperature");
|
|
|
- rReq.nodesToRead[0].attributeId = UA_ATTRIBUTEID_ARRAYDIMENSIONS;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &rReq.nodesToRead[0], &resp);
|
|
|
+
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "cpu.temperature");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_ARRAYDIMENSIONS;
|
|
|
+
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(UA_STATUSCODE_GOOD, resp.status);
|
|
|
UA_Server_delete(server);
|
|
|
- UA_ReadRequest_deleteMembers(&rReq);
|
|
|
UA_DataValue_deleteMembers(&resp);
|
|
|
} END_TEST
|
|
|
|
|
@@ -851,13 +803,12 @@ START_TEST(WriteSingleAttributeValue) {
|
|
|
UA_StatusCode retval = UA_Server_write(server, &wValue);
|
|
|
ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
|
|
|
- UA_DataValue resp;
|
|
|
- UA_DataValue_init(&resp);
|
|
|
- UA_ReadValueId id;
|
|
|
- UA_ReadValueId_init(&id);
|
|
|
- id.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
- id.attributeId = UA_ATTRIBUTEID_VALUE;
|
|
|
- Service_Read_single(server, &adminSession, UA_TIMESTAMPSTORETURN_NEITHER, &id, &resp);
|
|
|
+ UA_ReadValueId rvi;
|
|
|
+ UA_ReadValueId_init(&rvi);
|
|
|
+ rvi.nodeId = UA_NODEID_STRING(1, "the.answer");
|
|
|
+ rvi.attributeId = UA_ATTRIBUTEID_VALUE;
|
|
|
+ UA_DataValue resp = UA_Server_read(server, &rvi, UA_TIMESTAMPSTORETURN_NEITHER);
|
|
|
+
|
|
|
ck_assert_int_eq(retval, UA_STATUSCODE_GOOD);
|
|
|
ck_assert(resp.hasValue);
|
|
|
ck_assert_int_eq(20, *(UA_Int32*)resp.value.data);
|