diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index b330e1f0850e5b738720c8ddd74c1d6f1cf115f2..1a88f7b6cb64c14e378011cee86412c87074c878 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -3307,8 +3307,11 @@ module OneM2M_Functions { setverdict(pass, __SCOPE__&":INFO: Resource type remoteCSE created successfuly"); f_checkAttributesToBeSaved(int16, v_request, v_response.primitive.responsePrimitive); vc_remoteCseIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int16, -1); - v_localRemoteCSEResource := f_generateLocalResource(valueof(m_primitiveContentRemoteCSE(m_contentLocalRemoteCSEResource(vc_myInterfaces[enum2int(valueof(InterfaceIds:e_mccPort))].myHost))), vc_cSEBaseIndex, int16); vc_componentRegistered := true; + if(ispresent(v_response.primitive.responsePrimitive.primitiveContent.remoteCSE.cSE_ID)){ + f_sendAcPrimitive("CSE-ID_changed", vc_remoteCseIndex); + } + v_localRemoteCSEResource := f_generateLocalResource(valueof(m_primitiveContentRemoteCSE(m_contentLocalRemoteCSEResource(vc_myInterfaces[enum2int(valueof(InterfaceIds:e_mccPort))].myHost))), vc_cSEBaseIndex, int16); vc_localRemoteCseIndex := f_setLocalResource(v_localRemoteCSEResource, int16, vc_cSEBaseIndex); } [] mccPort.receive(mw_response(mw_responsePrimitiveKO)) { @@ -6776,7 +6779,7 @@ module OneM2M_Functions { * @param data Corresponding information for the correct execution of the given action * @verdict */ - function f_sendAcPrimitive(in charstring p_event, in integer p_aeIndex) runs on Tester { + function f_sendAcPrimitive(in charstring p_event, in integer p_resourceIndex, template (omit) XSD.ID p_originator := omit) runs on Tester { var XSD.ID v_aeResourceAddress; var charstring v_spRelativeAeIdForMqtt; @@ -6784,8 +6787,8 @@ module OneM2M_Functions { case ("AE-ID_changed") { //Calculate the SP-Relative-AE-ID following format defined in TS-0010 MQTT - v_aeResourceAddress := f_getResourceAddress(p_aeIndex, e_nonHierarchical, e_spRelative); - if(vc_resourcesList[p_aeIndex].resource.aE.aE_ID[0] == "S") { + v_aeResourceAddress := f_getResourceAddress(p_resourceIndex, e_nonHierarchical, e_spRelative); + if(vc_resourcesList[p_resourceIndex].resource.aE.aE_ID[0] == "S") { v_spRelativeAeIdForMqtt := oct2char(unichar2oct(f_resourceIdCleaner(v_aeResourceAddress))); } else { v_spRelativeAeIdForMqtt := f_getSpRelativeAeIdForMqtt(v_aeResourceAddress); @@ -6808,11 +6811,24 @@ module OneM2M_Functions { } } } + case ("CSE-ID_changed") { + //TODO Check for other resource address formats + v_spRelativeAeIdForMqtt := oct2char(unichar2oct(f_resourceIdCleaner(vc_resourcesList[p_resourceIndex].resource.remoteCSE.cSE_ID))); + + if((((vc_config == e_cf02) or (vc_config == e_cf02CseSimuMaster)) and (vc_testSystemRole == e_cse)) or (vc_config == e_cf04)) { + if(vc_myInterfaces[enum2int(valueof(InterfaceIds:e_mccPortIn))].myProtocolBinding == "MQTT") { + acPort.send(AcRequestPrimitive:{p_event & "_mccPort", {charstring := v_spRelativeAeIdForMqtt}}); + } + if(vc_myInterfaces[enum2int(valueof(InterfaceIds:e_mccPortIn))].myProtocolBinding == "MQTT") { + acPort.send(AcRequestPrimitive:{p_event & "_mccPortIn", {charstring := v_spRelativeAeIdForMqtt}}); + } + } + } case ("MqttSetDefaultTopicToNotRegistration") { - acPort.send(AcRequestPrimitive:{p_event, {charstring := int2str(p_aeIndex)}}); + acPort.send(AcRequestPrimitive:{p_event, {charstring := oct2str(unichar2oct(p_originator))}}); } case ("MqttSetDefaultTopicToRegistration") { - acPort.send(AcRequestPrimitive:{p_event, {charstring := int2str(p_aeIndex)}}); + acPort.send(AcRequestPrimitive:{p_event, {charstring := int2str(p_resourceIndex)}}); } } } @@ -7171,20 +7187,25 @@ module OneM2M_Functions { log("f_send: protocolBinding=", p_msgOut.protocolBinding); if(ischosen(p_msgOut.primitive.requestPrimitive)){ p_msgOut.primitive.requestPrimitive.requestIdentifier := p_msgOut.primitive.requestPrimitive.requestIdentifier & f_rnd(1, 1000000); + vc_request.primitive.requestPrimitive := valueof(p_msgOut.primitive.requestPrimitive); } if(not(vc_componentRegistered)) { if(valueof(p_msgOut.protocolBinding) == "MQTT") { if(ischosen(p_msgOut.primitive.requestPrimitive)) { if(ispresent(p_msgOut.primitive.requestPrimitive.resourceType)) { - if(valueof(p_msgOut.primitive.requestPrimitive.resourceType) != int2){ + if((valueof(p_msgOut.primitive.requestPrimitive.resourceType) != int2) and (valueof(p_msgOut.primitive.requestPrimitive.resourceType) != int16)){ //Modify default topic to publish a non-registration message - f_sendAcPrimitive("MqttSetDefaultTopicToNotRegistration", -1); + f_sendAcPrimitive("MqttSetDefaultTopicToNotRegistration", -1, valueof(p_msgOut.primitive.requestPrimitive.from_)); vc_myInterfaces[enum2int(p_interfaceIds)].myPort.send(p_msgOut); f_sendAcPrimitive("MqttSetDefaultTopicToRegistration", -1); return; - } //else { - //f_sendAcPrimitive("MqttSetDefaultTopicToRegistration", -1); - //} + } + } else {//RETRIEVE - UPDATE - DELETE - NOTIFY + //Modify default topic to publish a non-registration message + f_sendAcPrimitive("MqttSetDefaultTopicToNotRegistration", -1, valueof(p_msgOut.primitive.requestPrimitive.from_)); + vc_myInterfaces[enum2int(p_interfaceIds)].myPort.send(p_msgOut); + f_sendAcPrimitive("MqttSetDefaultTopicToRegistration", -1); + return; } } } diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index a6b4be4a9e4459d0b1f82ee2e2400438a7a16480..620e538982dfe137a75c37d28dc95d0a86ec4497 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -3598,7 +3598,7 @@ module OneM2M_Templates { announcedAttribute := omit,//O stateTag := omit,//NP creator := omit,//O - contentInfo := "a",//O + contentInfo := "text/strings:0",//O contentSize := omit,//NP contentRef := omit, //O ontologyRef := omit,//O @@ -6507,7 +6507,7 @@ module OneM2M_Templates { metaInformation := ?,//M primitiveContent := *,//O requestStatus := ?,//M - operationResult := ?,//M + operationResult := *,//M choice := *//O }; diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index e4e17771a59fe2f4c19cc6f5f77c0ed3ad2c97a7..062b638e4759d1dba5f906fe2a67454a36932f82 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -8206,7 +8206,6 @@ module OneM2M_PermutationFunctions { p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); // Test Body @@ -8282,8 +8281,7 @@ module OneM2M_PermutationFunctions { p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + // Test Body f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); @@ -8348,8 +8346,7 @@ module OneM2M_PermutationFunctions { p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + // Test Body f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); @@ -8424,8 +8421,7 @@ module OneM2M_PermutationFunctions { p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + // Test Body f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); @@ -8499,8 +8495,7 @@ module OneM2M_PermutationFunctions { p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt"; p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + // Test Body f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); @@ -8602,8 +8597,7 @@ module OneM2M_PermutationFunctions { p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/" & c_resourceShortNameFanOutPoint & "/" & c_defaultContainerResourceName; p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); //TODO see if it is correct or if we have to use PX_SUPER_ADMIN - p_requestPrimitive.requestIdentifier := p_requestPrimitive.requestIdentifier & f_rnd(1, 1000000); - + // Test Body f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); @@ -9200,8 +9194,7 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex); p_requestPrimitive.from_ := f_getResourceId(vc_resourcesList[v_aeIndex2].resource); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; alt { @@ -9270,8 +9263,7 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex); p_requestPrimitive.from_ := f_getOriginator(v_aeIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; alt { @@ -9326,7 +9318,6 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex); p_requestPrimitive.from_ := "testDomain"; - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; @@ -9406,8 +9397,7 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex); p_requestPrimitive.from_ := f_getResourceId(vc_resourcesList[v_aeIndex2].resource); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; alt { @@ -9464,8 +9454,7 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex); p_requestPrimitive.from_ := f_getOriginator(v_aeIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; alt { @@ -9534,8 +9523,7 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex); p_requestPrimitive.from_ := f_getOriginator(v_aeIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; alt { @@ -9597,8 +9585,7 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex); p_requestPrimitive.from_ := f_getOriginator(v_aeIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; alt { @@ -9655,8 +9642,7 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex); p_requestPrimitive.from_ := f_getOriginator(v_aeIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; alt { @@ -9711,8 +9697,7 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex); p_requestPrimitive.from_ := f_getOriginator(v_aeIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; alt { @@ -9772,8 +9757,7 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex); p_requestPrimitive.from_ := f_getOriginator(v_aeIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; alt { @@ -9828,8 +9812,7 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_containerIndex); p_requestPrimitive.from_ := f_getOriginator(v_aeIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; alt { @@ -9891,7 +9874,6 @@ module OneM2M_PermutationFunctions { // Test Body p_requestPrimitive.to_ := f_getResourceAddress(v_containerIndex); p_requestPrimitive.from_ := f_getOriginator(v_aeIndex); - p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000); f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); tc_ac.start; @@ -9960,8 +9942,7 @@ module OneM2M_PermutationFunctions { // Test Body p_request.to_ := v_ae2ResourceAddress; p_request.from_ := f_getOriginator(v_aeIndex); - p_request.requestIdentifier := valueof(p_request.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_request))); tc_ac.start; alt { @@ -10028,8 +10009,7 @@ module OneM2M_PermutationFunctions { // Test Body p_request.to_ := v_ae2ResourceAddress; p_request.from_ := f_getOriginator(v_aeIndex); - p_request.requestIdentifier := valueof(p_request.requestIdentifier) & f_rnd(1, 1000000); - + f_send(e_mcaPort, m_request(valueof(p_request))); tc_ac.start; alt { @@ -12047,6 +12027,7 @@ module OneM2M_PermutationFunctions { var RequestStatus v_requestStatus; var URI v_requestResourceURI; var ResponseStatusCode v_statusCode; + var RequestID v_requestIdentifier; var template PrimitiveContent v_primitiveContent; // Test control @@ -12076,8 +12057,9 @@ module OneM2M_PermutationFunctions { p_requestPrimitive.responseType := {int1, omit}; //nonBlockingRequestSynch // Test Body - - f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); + f_send(e_mcaPort, m_request(valueof(p_requestPrimitive))); + v_requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; + tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int1001, v_contentResponseUri))) -> value v_response { @@ -12129,7 +12111,7 @@ module OneM2M_PermutationFunctions { v_requestStatus := v_response.primitive.responsePrimitive.primitiveContent.request.requestStatus; if (v_requestStatus==int1){ //COMPLETED tc_ac.stop; - if (valueof(p_requestPrimitive.requestIdentifier) == valueof(v_response.primitive.responsePrimitive.primitiveContent.request.operationResult.requestIdentifier) ){ + if (valueof(v_requestIdentifier) == valueof(v_response.primitive.responsePrimitive.primitiveContent.request.operationResult.requestIdentifier) ){ setverdict(pass, testcasename() & ": RequestStatus: COMPLETED and requestIdentifier attribute correctly received"); }else{ setverdict(fail, testcasename() & ": RequestStatus: COMPLETED and requestIdentifier attribute not correctly received"); diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn index 843f64530f148dea6531d139e038fc499f7813b8..e5af8e553d436edc95d475bb419fa94aa843ae6a 100644 --- a/OneM2M_Testcases_CSE_Release_2.ttcn +++ b/OneM2M_Testcases_CSE_Release_2.ttcn @@ -3335,7 +3335,8 @@ module OneM2M_Testcases_CSE_Release_2 { // Local variables var integer v_aeIndex := -1; var integer v_resourceIndex := -1; - var RequestPrimitive v_req1, v_req2, v_req3; + var RequestPrimitive v_req1, v_req3; + var template RequestPrimitive v_req2; var MsgIn v_resp1, v_resp3; var ResponsePrimitive v_resp2; @@ -3359,11 +3360,12 @@ module OneM2M_Testcases_CSE_Release_2 { v_req1 := valueof(m_retrievePollingRequest(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))); f_send(e_mcaPort, m_request(v_req1)); - v_req2 := valueof(m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId))); + v_req2 := m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId)); - vc_cse1.start(f_cse_notifyProcedure_notify(v_req2)); + vc_cse1.start(f_cse_notifyProcedure_notify(valueof(v_req2))); v_req2.from_ := PX_TS_CSE1.cseId; + v_req2.requestIdentifier := pattern "{v_req2.requestIdentifier}*"; tc_ac.start; alt { @@ -3444,7 +3446,8 @@ module OneM2M_Testcases_CSE_Release_2 { // Local variables var integer v_aeIndex := -1; var integer v_resourceIndex := -1; - var RequestPrimitive v_req1, v_req2, v_req3; + var RequestPrimitive v_req1, v_req3; + var template RequestPrimitive v_req2; var MsgIn v_resp1, v_resp3; var ResponsePrimitive v_resp2; @@ -3465,10 +3468,11 @@ module OneM2M_Testcases_CSE_Release_2 { v_resourceIndex := f_cse_createResource(int15, m_createPollingChannelBase, v_aeIndex); - v_req2 := valueof(m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId))); + v_req2 := m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId)); - vc_cse1.start(f_cse_notifyProcedure_notify(v_req2)); + vc_cse1.start(f_cse_notifyProcedure_notify(valueof(v_req2))); v_req2.from_ := PX_TS_CSE1.cseId; + v_req2.requestIdentifier := pattern "{v_req2.requestIdentifier}*"; v_req1 := valueof(m_retrievePollingRequest(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))); f_send(e_mcaPort, m_request(v_req1)); @@ -3550,7 +3554,7 @@ module OneM2M_Testcases_CSE_Release_2 { var integer v_aeIndex := -1; var integer v_resourceIndex := -1; var RequestPrimitive v_req1; - var RequestPrimitive v_req2; + var template RequestPrimitive v_req2; var RequestPrimitive v_req3; var MsgIn v_resp1, v_resp3; var ResponsePrimitive v_resp2;//Response to a Notify Request @@ -3576,10 +3580,11 @@ module OneM2M_Testcases_CSE_Release_2 { v_req1 := valueof(m_retrievePollingRequest(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))); f_send(e_mcaPort, m_request(v_req1)); - v_req2 := valueof(m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId))); + v_req2 := m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId)); - vc_cse1.start(f_cse_notifyProcedure_notify(v_req2)); + vc_cse1.start(f_cse_notifyProcedure_notify(valueof(v_req2))); v_req2.from_ := PX_TS_CSE1.cseId; + v_req2.requestIdentifier := pattern "{v_req2.requestIdentifier}*"; tc_ac.start; alt {