diff --git a/OneM2M_Testcases_CSE_Release_4.ttcn b/OneM2M_Testcases_CSE_Release_4.ttcn index ea5beec4e9f740271eeb7b521c78fca0ee003c4c..14e5efd2debec61b36026c90a7fbaad5366a749a 100644 --- a/OneM2M_Testcases_CSE_Release_4.ttcn +++ b/OneM2M_Testcases_CSE_Release_4.ttcn @@ -572,7 +572,7 @@ module OneM2M_Testcases_CSE_Release_4 { function f_CSE_SCH_001() runs on AeSimu system CseSystem { // Local variables var integer v_aeIndex, v_resourceIndex := -1; - var template RequestPrimitive v_createRequestSchedule := m_createScheduleBase; + var template RequestPrimitive v_createRequestSchedule := m_createScheduleBase_subscription; var RequestPrimitive v_request; // Test component configuration @@ -645,11 +645,11 @@ module OneM2M_Testcases_CSE_Release_4 { v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi); v_resourceIndex := f_cse_createResource(int23, m_createSubscriptionBase, v_aeIndex);//Subscription - v_childscheduleResourceIndex := f_cse_createResource(v_scheduleresourceType, m_updateScheduleBase, v_resourceIndex); + v_childscheduleResourceIndex := f_cse_createResource(v_scheduleresourceType, m_createScheduleBase_subscription, v_resourceIndex); v_contentUpdateSchedule.primitiveContent.schedule.networkCoordinated := true; // Test Body - v_request := f_getUpdateRequestPrimitive(v_scheduleresourceType, v_resourceIndex, v_contentUpdateSchedule); + v_request := f_getUpdateRequestPrimitive(v_scheduleresourceType, v_childscheduleResourceIndex, v_contentUpdateSchedule); f_send(e_mcaPort, m_request(valueof(v_request))); tc_ac.start; alt { @@ -696,18 +696,21 @@ module OneM2M_Testcases_CSE_Release_4 { timer t_batchNotificationTimer := PX_TAC * 2.0; //just gives enough time to execute const ResourceType c_containerResourceType := int3; var float v_elapsedTime; - var integer v_ae1Index, v_ae2Index, v_containerResourceIndex, v_childScheduleIndex := -1; - var template RequestPrimitive v_updateRequestPrimitive := m_updateContainerBase; - var template RequestPrimitive v_updateRequest; - var template RequestPrimitive v_createRequestSubscription; - var template RequestPrimitive v_createRequest := m_createScheduleBase; - + var integer v_ae1Index, v_ae2LocalIndex, v_ae2Index, v_containerResourceIndex, v_subscriptionResourceIndex, v_childScheduleIndex := -1; + var template RequestPrimitive v_updateRequest := m_updateContainerBase; + var template RequestPrimitive v_createRequest := m_createScheduleBase_subscription; + var ResponsePrimitive v_responsePrimitive; + var integer v_actualYear; + var XSD.ID v_containerResourceAddress; + var template PrimitiveContent v_contentResponse := {container := mw_contentContainerBase};// all attributes expected + v_contentResponse.container.labels := ?; + // Test control if(PX_TAC < 10.0) { setverdict(inconc, __SCOPE__ & ": PX_TAC is required to be bigger than 10 seconds to run this test case"); stop; } - + // Test component configuration f_cf01Up(true); @@ -716,39 +719,123 @@ module OneM2M_Testcases_CSE_Release_4 { // Preamble f_cse_createAccessControlPolicyAux("SubscriptionVerificationAcp",{"all"}, int63); - v_ae1Index := f_cse_createResource_withAcpAux(int2, m_createAe(vc_aeSimuDesc.appId, -, vc_aeSimuDesc.aeIdStem, c_defaultAe1ResourceName, {f_getLocalPoA(vc_aeSimuDesc.mcaPortIn, "")}), -1); - // AE1 is registered - - vc_ae2.start(f_cse_createResource_withAcpAux(int2, m_createAe(PX_TS_AE2.appId, -, PX_TS_AE2.aeIdStem, c_defaultAe2ResourceName, {f_getLocalPoA(PX_TS_AE2.mcaPortIn, "")}), -1)); - // AE2 is registered + v_ae1Index := f_cse_createResource_withAcpAux(int2, m_createAe(vc_aeSimuDesc.appId, -, vc_aeSimuDesc.aeIdStem, c_defaultAe1ResourceName, {f_getLocalPoA(vc_aeSimuDesc.mcaPortIn, "")}), -1); // now AE1 is registered + + vc_ae2.start(f_cse_createResource(int2, m_createAe(PX_TS_AE2.appId, -, PX_TS_AE2.aeIdStem, c_defaultAe2ResourceName, omit), -1)); // AE2 is registered + + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + v_ae2LocalIndex := f_getResourceFromAeSimu(vc_ae2); + + v_ae2Index := f_getLatestResourceIndex(vc_ae2); + + vc_ae2.start(f_cse_createResource(c_containerResourceType, m_createContainerBase, v_ae2Index)); f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); - v_ae2Index := f_getResourceFromAeSimu(vc_ae2); + + v_containerResourceIndex := f_getLatestResourceIndex(vc_ae2); + + v_containerResourceAddress := f_getLatestResourceAddress(vc_ae2); - v_containerResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_ae1Index); + vc_ae2.start(f_cse_createResource(int23, m_createSubscription(v_containerResourceAddress, -, {f_getResourceAddress(v_ae1Index)}), v_containerResourceIndex)); + + tc_ac.start; + alt { + [] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotificationVerification))) -> value vc_request { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ":INFO: Notification received"); + v_responsePrimitive := valueof(m_responseNotification(int2000, omit)); + v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; + f_send(e_mcaPortIn, m_response(v_responsePrimitive)); + } + [] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotification(?)))) -> value vc_request { + tc_ac.stop; + setverdict(inconc, __SCOPE__ & ":ERROR: Notification received but verificationRequest isn't set to TRUE"); + v_responsePrimitive := valueof(m_responseNotification(int4000, omit)); + v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; + f_send(e_mcaPortIn, m_response(v_responsePrimitive)); + } + [] tc_ac.timeout { + if (not(vc_ae2.running)){ + setverdict(pass, __SCOPE__ & ":INFO: No subscription verification received but subscription resource was created"); + } + } + } + + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + v_subscriptionResourceIndex := f_getLatestResourceIndex(vc_ae2); + + v_actualYear := f_getYear(fx_generateTimestamp()); + v_createRequest.primitiveContent.schedule.scheduleElement := {{"* * * * * * " & int2str(v_actualYear)}};//scheduled for this year + vc_ae2.start(f_cse_createResource(int18, v_createRequest, v_subscriptionResourceIndex)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + // Test Body + v_updateRequest.primitiveContent.container.labels := {"LABEL_1"}; + vc_ae2.start(f_cse_updateResource(int3, v_containerResourceIndex, v_updateRequest)); // Update request 1 + + tc_ac.start; + alt { + [] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotification(?)))) -> value vc_request { + tc_ac.stop; + if(f_check_notificationContent(vc_request.primitive.requestPrimitive, v_contentResponse)){ + setverdict(pass, __SCOPE__ & ":INFO: Notification received"); + } + else{ + setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match"); + } + //Send response in any case + v_responsePrimitive := valueof(m_responseNotification(int2000, omit)); + v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; + f_send(e_mcaPortIn, m_response(v_responsePrimitive)); + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + setverdict(pass, __SCOPE__ & ": Notifications sent on scheduled time"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No notification received"); + } + } + + f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2); + + //Postamble + f_cse_postamble_deleteResources(); + + //Tear down + f_cf01Down(); + + /* + // Test component configuration + f_cf01Up(); + + // Test adapter configuration - v_createRequestSubscription := m_createSubscription(f_getResourceAddress(v_ae2Index), omit, {f_getResourceAddress(v_ae1Index)}); + // Preamble + v_aeIndex := f_cse_preamble_registerAe(-, {f_getLocalPoA(vc_aeSimuDesc.mcaPortIn, "")}); + + // AE1 is registered - vc_ae2.start(f_cse_createResource(int23, v_createRequestSubscription, v_containerResourceIndex));//Subscription + v_containerResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_ae1Index); - v_createRequest.primitiveContent.schedule.scheduleElement := {{"*/5 0 0 * * * *"}};//scheduled every 5 seconds - v_childScheduleIndex := f_cse_createResource(int18, v_createRequest, v_containerResourceIndex); //schedule resource child + v_subscriptionResourceIndex := f_cse_createResource(int23, m_createSubscriptionBase(), v_containerResourceIndex);//Subscription - v_updateRequest := f_getUpdateRequestPrimitive(c_containerResourceType, v_containerResourceIndex, v_updateRequestPrimitive); + v_createRequest.primitiveContent.schedule.scheduleElement := {{"*//*5 0 0 * * * *"}};//scheduled every 5 seconds + v_childScheduleIndex := f_cse_createResource(int18, v_createRequest, v_subscriptionResourceIndex); //schedule resource child + v_updateRequest := f_getUpdateRequestPrimitive(c_containerResourceType, v_containerResourceIndex, v_updateRequest); + v_updateRequest.primitiveContent.container.labels := {"LABEL_1"}; + // Test Body - t_batchNotificationTimer.start; - f_send(e_mcaPort, m_request(valueof(v_updateRequest))); tc_ac.start; alt { [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value vc_response { tc_ac.stop; setverdict(pass, __SCOPE__&":INFO: Attribute of resource updated successfuly"); - v_elapsedTime := t_batchNotificationTimer.read; - t_batchNotificationTimer.stop; - if(float2int(v_elapsedTime) mod 5 != 0) { - setverdict(fail, __SCOPE__ & ": Notifications sent before SCHEDULE_TIME is reached"); - } + if (v_firstNotification) { + + } + } [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response { tc_ac.stop; @@ -758,6 +845,38 @@ module OneM2M_Testcases_CSE_Release_4 { tc_ac.stop; setverdict(fail, __SCOPE__ & ": Error while updating scheduling resource "); } + [] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotification(?)))) -> value vc_request { + tc_ac.stop; + if(f_check_notificationContent(vc_request.primitive.requestPrimitive, v_contentNotification)){ + setverdict(pass, __SCOPE__ & ":INFO: Notification received"); + } + else{ + setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match"); + } + //Send response in any case + v_responsePrimitive := valueof(m_responseNotification(int2000, omit)); + v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; + f_send(e_mcaPortIn, m_response(v_responsePrimitive)); + if (v_firstNotification){ + t_batchNotificationTimer.start; + v_updateRequest := f_getUpdateRequestPrimitive(c_containerResourceType, v_containerResourceIndex, v_updateRequest); + v_updateRequest.primitiveContent.container.labels := {"LABEL_2"}; + f_send(e_mcaPort, m_request(valueof(v_updateRequest))); + repeat; + } else { + v_elapsedTime := t_batchNotificationTimer.read; + t_batchNotificationTimer.stop; + if(v_elapsedTime < 5.0) { + setverdict(fail, __SCOPE__ & ": Notifications sent before SCHEDULE_TIME is reached"); + } else { + setverdict(pass, __SCOPE__ & ": Notifications sent on scheduled time"); + } + } + } + [] mcaPortIn.receive(mw_request(mw_notifyNotification(?))) -> value vc_request { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match"); + } [] tc_ac.timeout { setverdict(fail, __SCOPE__ & ": No answer while updating scheduling resource "); } @@ -769,7 +888,7 @@ module OneM2M_Testcases_CSE_Release_4 { f_cse_postamble_deleteResources(); // Tear down - f_cf01Down(); + f_cf01Down();*/ } // f_CSE_SCH_003 }//end group Schedule_functionality