Loading ttcn/LibSmartAppliances/SmartAppliances_Functions.ttcn 0 → 100644 +136 −0 Original line number Diff line number Diff line /** * * @author ETSI / STF510 * @version $URL$ * $Id$ * @desc Module containing functions for SmartAppliances * */ module SmartAppliances_Functions { // LibOneM2M import from OneM2M_TestSystem all; import from OneM2M_Functions all; import from OneM2M_Templates all; import from OneM2M_Types all; // LibSmartAppliances import from SmartAppliances_Templates all; group configFunctions { /** * @desc Ports mapping and default behaviour activation for Config XX */ function f_cf0XXUp() runs on AeTester system AeSystem { map(self:mcaPort, system:mcaPort); map(self:acPort, system:acPort); activate(a_ae_default_sap()); } /** * @desc Ports unmapping for Config XX */ function f_cf0XXDown() runs on AeTester system AeSystem { unmap(self:mcaPort, system:mcaPort); unmap(self:acPort, system:acPort); } } // end configFunctions group aeFunctions { group altstepFunctions { /** * @desc Ae altstep (SAP - TODO: merge in oneM2M) */ altstep a_ae_default_sap() runs on AeTester { var MsgIn v_request; [] mcaPort.receive(mw_request(?)) -> value v_request { log("a_default: WARNING: Unexpected request received"); mcaPort.send(m_response(m_responsePrimitive(int5000, v_request.primitive.requestPrimitive.requestIdentifier))); repeat; } [] mcaPort.receive { log("a_default: WARNING: Unexpected message received"); repeat; } } } // end altstepFunctions group preambleFunctions { /** * @desc Waits for AE registration request and process it * @verdict inconc if no AE registration request is received */ function f_ae_preamble_registerAe() runs on AeTester { var MsgIn v_request; var AE_optional v_ae; var integer v_resourceId; tc_ac.start; alt { [] mcaPort.receive(mw_request(mw_createAe)) -> value v_request { // TODO: answer registration request v_ae := valueof(v_request.primitive.requestPrimitive.primitiveContent.any_1[0].AE_optional); v_ae.resourceType := v_request.primitive.requestPrimitive.resourceType; v_ae.parentID := "~"; // FIXME: to be checked v_ae.creationTime := fx_generateTimestamp(); v_ae.lastModifiedTime := v_ae.creationTime; v_resourceId := lengthof(vc_resourcesList) - 1; v_ae.resourceID := "ae" & int2char(v_resourceId); v_ae.aE_ID := "ae" & int2char(v_resourceId); v_ae.resourceName := "ae" & int2char(v_resourceId); v_request.primitive.requestPrimitive.primitiveContent.any_1[0].AE_optional := v_ae; f_setResource(v_request.primitive.requestPrimitive.primitiveContent, -1); mcaPort.send(m_response(m_responsePrimitive_content(int2001, v_request.primitive.requestPrimitive.requestIdentifier, v_request.primitive.requestPrimitive.primitiveContent))); log("Preamble: Application registered successfuly"); } [] tc_ac.timeout { setverdict(inconc, testcasename() & ": AE registration request not received"); stop; } } } } // end preambleFunctions group postambleFunctions { /** * @desc Default postamble * @verdict */ function f_ae_postamble_default() runs on AeTester { // currently empty } } // end postambleFunctions } // end aeFunctions group externalFunctions { /** * @desc Generates a oneM2M timestamp based on current time. * Format shall be YYYYMMDDTHHMMSS */ external function fx_generateTimestamp() return charstring; } } No newline at end of file ttcn/LibSmartAppliances/SmartAppliances_Templates.ttcn 0 → 100644 +96 −0 Original line number Diff line number Diff line /** * * @author ETSI / STF510 * @version $URL$ * $Id$ * @desc Module containing templates for SmartAppliances * */ module SmartAppliances_Templates { // LibOneM2M import from OneM2M_TestSystem all; import from OneM2M_Types all; import from OneM2M_Pixits all; group primitives { /** * @desc Base template for response sending operations * @param p_responsePrimitive */ template (value) MsgOut m_response(in template (value) ResponsePrimitive p_responsePrimitive, in template (omit) AttributeList_1 p_nullFields := omit ) := { primitive := { responsePrimitive := p_responsePrimitive}, host := PX_HOST_ADDRESS, xmlNamespace := PX_XML_NAMESPACE, protocolBinding := PX_PROTOCOL_BINDING, serialization := PX_SERIALIZATION, nullFields := p_nullFields }; } // end primitives group RequestPrimitives { group Create { /** * @desc Reception template for AE registration */ template RequestPrimitive mw_createAe := { operation := int1, to_ := ?, from_ := *, requestIdentifier := ?, resourceType := int2, primitiveContent := { any_1 := {{AE_optional := ?}} }, role := *, originatingTimestamp := *, requestExpirationTimestamp := *, resultExpirationTimestamp := *, operationExecutionTime := *, responseType := *, resultPersistence := *, resultContent := *, eventCategory := *, deliveryAggregation := *, groupRequestIdentifier := *, filterCriteria := *, discoveryResultType := * }; } // end Create } // end RequestPrimitives group ResponsePrimitives { /** * @desc Base template for sending ResponsePrimitive * @param p_statusCode Status code * @param p_requestId Request ID of the corresponding request */ template (value) ResponsePrimitive m_responsePrimitive(in ResponseStatusCode p_statusCode, in RequestID p_requestId) := { responseStatusCode := p_statusCode, requestIdentifier := p_requestId, primitiveContent := omit, to_ := omit, from_ := omit, originatingTimestamp := omit, resultExpirationTimestamp := omit, eventCategory := omit }; /** * @desc Base template for sending ResponsePrimitive * @param p_statusCode Status code * @param p_requestId Request ID of the corresponding request */ template (value) ResponsePrimitive m_responsePrimitive_content(in ResponseStatusCode p_statusCode, in RequestID p_requestId, in PrimitiveContent p_content) modifies m_responsePrimitive := { primitiveContent := p_content } } // end ResponsePrimitives } No newline at end of file ttcn/LibSmartAppliances/SmartAppliances_TestSystem.ttcn +10 −1 Original line number Diff line number Diff line /** * * @author ETSI * @author ETSI / STF510 * @version $URL$ * $Id$ * @desc Module containing test cases for SmartAppliances Loading @@ -8,12 +8,21 @@ */ module SmartAppliances_TestSystem { // LibOneM2M import from OneM2M_TestSystem all; /** * @desc SUT component for SmartAppliances (oneM2M AE) * @see AeSystem */ type component SmartAppliancesSystem extends AeSystem { } /** * @desc Tester component for SmartAppliances (oneM2M CSE) * @see AeTester */ type component SmartAppliancesTester extends AeTester { } Loading ttcn/SmartAppliances_TestControl.ttcn +1 −2 Original line number Diff line number Diff line /** * * @author ETSI * @author ETSI / STF510 * @version $URL$ * $Id$ * @desc Test control module for SmartAppliances Loading @@ -8,7 +8,6 @@ */ module SmartAppliances_TestControl { import from SmartAppliances_Testcases all; control { Loading ttcn/SmartAppliances_Testcases.ttcn +49 −20 Original line number Diff line number Diff line /** * * @author ETSI * @author ETSI / STF510 * @version $URL$ * $Id$ * @desc Module containing test cases for SmartAppliances Loading @@ -8,10 +8,17 @@ */ module SmartAppliances_Testcases { import from SmartAppliances_TestSystem all; // LibOneM2M import from OneM2M_Functions all; import from OneM2M_Templates all; // LibSmartAppliances import from SmartAppliances_TestSystem all; import from SmartAppliances_Functions all; group g_saref { testcase TC_SAP_XXX() runs on SmartAppliancesTester system SmartAppliancesSystem { testcase TC_SAP_SAREF_BV_001() runs on SmartAppliancesTester system SmartAppliancesSystem { // Local variables Loading @@ -23,11 +30,33 @@ module SmartAppliances_Testcases { // Test adapter configuration // Preamble f_ae_preamble_registerAe(); // Test Body tc_ac.start; alt { [] mcaPort.receive { /* TODO: requires onM2M release 2 */ setverdict(pass, testcasename() & ": Correct request received"); } [] mcaPort.receive(mw_request(?)) { setverdict(fail, testcasename() & ": Incorrect request received"); } [] tc_ac.timeout { setverdict(inconc, testcasename() & ": No CREATE request received"); } } // Postamble f_postamble_deleteResources(); f_ae_postamble_default(); // Tear down f_cf0XXDown(); } } // end g_saref } No newline at end of file Loading
ttcn/LibSmartAppliances/SmartAppliances_Functions.ttcn 0 → 100644 +136 −0 Original line number Diff line number Diff line /** * * @author ETSI / STF510 * @version $URL$ * $Id$ * @desc Module containing functions for SmartAppliances * */ module SmartAppliances_Functions { // LibOneM2M import from OneM2M_TestSystem all; import from OneM2M_Functions all; import from OneM2M_Templates all; import from OneM2M_Types all; // LibSmartAppliances import from SmartAppliances_Templates all; group configFunctions { /** * @desc Ports mapping and default behaviour activation for Config XX */ function f_cf0XXUp() runs on AeTester system AeSystem { map(self:mcaPort, system:mcaPort); map(self:acPort, system:acPort); activate(a_ae_default_sap()); } /** * @desc Ports unmapping for Config XX */ function f_cf0XXDown() runs on AeTester system AeSystem { unmap(self:mcaPort, system:mcaPort); unmap(self:acPort, system:acPort); } } // end configFunctions group aeFunctions { group altstepFunctions { /** * @desc Ae altstep (SAP - TODO: merge in oneM2M) */ altstep a_ae_default_sap() runs on AeTester { var MsgIn v_request; [] mcaPort.receive(mw_request(?)) -> value v_request { log("a_default: WARNING: Unexpected request received"); mcaPort.send(m_response(m_responsePrimitive(int5000, v_request.primitive.requestPrimitive.requestIdentifier))); repeat; } [] mcaPort.receive { log("a_default: WARNING: Unexpected message received"); repeat; } } } // end altstepFunctions group preambleFunctions { /** * @desc Waits for AE registration request and process it * @verdict inconc if no AE registration request is received */ function f_ae_preamble_registerAe() runs on AeTester { var MsgIn v_request; var AE_optional v_ae; var integer v_resourceId; tc_ac.start; alt { [] mcaPort.receive(mw_request(mw_createAe)) -> value v_request { // TODO: answer registration request v_ae := valueof(v_request.primitive.requestPrimitive.primitiveContent.any_1[0].AE_optional); v_ae.resourceType := v_request.primitive.requestPrimitive.resourceType; v_ae.parentID := "~"; // FIXME: to be checked v_ae.creationTime := fx_generateTimestamp(); v_ae.lastModifiedTime := v_ae.creationTime; v_resourceId := lengthof(vc_resourcesList) - 1; v_ae.resourceID := "ae" & int2char(v_resourceId); v_ae.aE_ID := "ae" & int2char(v_resourceId); v_ae.resourceName := "ae" & int2char(v_resourceId); v_request.primitive.requestPrimitive.primitiveContent.any_1[0].AE_optional := v_ae; f_setResource(v_request.primitive.requestPrimitive.primitiveContent, -1); mcaPort.send(m_response(m_responsePrimitive_content(int2001, v_request.primitive.requestPrimitive.requestIdentifier, v_request.primitive.requestPrimitive.primitiveContent))); log("Preamble: Application registered successfuly"); } [] tc_ac.timeout { setverdict(inconc, testcasename() & ": AE registration request not received"); stop; } } } } // end preambleFunctions group postambleFunctions { /** * @desc Default postamble * @verdict */ function f_ae_postamble_default() runs on AeTester { // currently empty } } // end postambleFunctions } // end aeFunctions group externalFunctions { /** * @desc Generates a oneM2M timestamp based on current time. * Format shall be YYYYMMDDTHHMMSS */ external function fx_generateTimestamp() return charstring; } } No newline at end of file
ttcn/LibSmartAppliances/SmartAppliances_Templates.ttcn 0 → 100644 +96 −0 Original line number Diff line number Diff line /** * * @author ETSI / STF510 * @version $URL$ * $Id$ * @desc Module containing templates for SmartAppliances * */ module SmartAppliances_Templates { // LibOneM2M import from OneM2M_TestSystem all; import from OneM2M_Types all; import from OneM2M_Pixits all; group primitives { /** * @desc Base template for response sending operations * @param p_responsePrimitive */ template (value) MsgOut m_response(in template (value) ResponsePrimitive p_responsePrimitive, in template (omit) AttributeList_1 p_nullFields := omit ) := { primitive := { responsePrimitive := p_responsePrimitive}, host := PX_HOST_ADDRESS, xmlNamespace := PX_XML_NAMESPACE, protocolBinding := PX_PROTOCOL_BINDING, serialization := PX_SERIALIZATION, nullFields := p_nullFields }; } // end primitives group RequestPrimitives { group Create { /** * @desc Reception template for AE registration */ template RequestPrimitive mw_createAe := { operation := int1, to_ := ?, from_ := *, requestIdentifier := ?, resourceType := int2, primitiveContent := { any_1 := {{AE_optional := ?}} }, role := *, originatingTimestamp := *, requestExpirationTimestamp := *, resultExpirationTimestamp := *, operationExecutionTime := *, responseType := *, resultPersistence := *, resultContent := *, eventCategory := *, deliveryAggregation := *, groupRequestIdentifier := *, filterCriteria := *, discoveryResultType := * }; } // end Create } // end RequestPrimitives group ResponsePrimitives { /** * @desc Base template for sending ResponsePrimitive * @param p_statusCode Status code * @param p_requestId Request ID of the corresponding request */ template (value) ResponsePrimitive m_responsePrimitive(in ResponseStatusCode p_statusCode, in RequestID p_requestId) := { responseStatusCode := p_statusCode, requestIdentifier := p_requestId, primitiveContent := omit, to_ := omit, from_ := omit, originatingTimestamp := omit, resultExpirationTimestamp := omit, eventCategory := omit }; /** * @desc Base template for sending ResponsePrimitive * @param p_statusCode Status code * @param p_requestId Request ID of the corresponding request */ template (value) ResponsePrimitive m_responsePrimitive_content(in ResponseStatusCode p_statusCode, in RequestID p_requestId, in PrimitiveContent p_content) modifies m_responsePrimitive := { primitiveContent := p_content } } // end ResponsePrimitives } No newline at end of file
ttcn/LibSmartAppliances/SmartAppliances_TestSystem.ttcn +10 −1 Original line number Diff line number Diff line /** * * @author ETSI * @author ETSI / STF510 * @version $URL$ * $Id$ * @desc Module containing test cases for SmartAppliances Loading @@ -8,12 +8,21 @@ */ module SmartAppliances_TestSystem { // LibOneM2M import from OneM2M_TestSystem all; /** * @desc SUT component for SmartAppliances (oneM2M AE) * @see AeSystem */ type component SmartAppliancesSystem extends AeSystem { } /** * @desc Tester component for SmartAppliances (oneM2M CSE) * @see AeTester */ type component SmartAppliancesTester extends AeTester { } Loading
ttcn/SmartAppliances_TestControl.ttcn +1 −2 Original line number Diff line number Diff line /** * * @author ETSI * @author ETSI / STF510 * @version $URL$ * $Id$ * @desc Test control module for SmartAppliances Loading @@ -8,7 +8,6 @@ */ module SmartAppliances_TestControl { import from SmartAppliances_Testcases all; control { Loading
ttcn/SmartAppliances_Testcases.ttcn +49 −20 Original line number Diff line number Diff line /** * * @author ETSI * @author ETSI / STF510 * @version $URL$ * $Id$ * @desc Module containing test cases for SmartAppliances Loading @@ -8,10 +8,17 @@ */ module SmartAppliances_Testcases { import from SmartAppliances_TestSystem all; // LibOneM2M import from OneM2M_Functions all; import from OneM2M_Templates all; // LibSmartAppliances import from SmartAppliances_TestSystem all; import from SmartAppliances_Functions all; group g_saref { testcase TC_SAP_XXX() runs on SmartAppliancesTester system SmartAppliancesSystem { testcase TC_SAP_SAREF_BV_001() runs on SmartAppliancesTester system SmartAppliancesSystem { // Local variables Loading @@ -23,11 +30,33 @@ module SmartAppliances_Testcases { // Test adapter configuration // Preamble f_ae_preamble_registerAe(); // Test Body tc_ac.start; alt { [] mcaPort.receive { /* TODO: requires onM2M release 2 */ setverdict(pass, testcasename() & ": Correct request received"); } [] mcaPort.receive(mw_request(?)) { setverdict(fail, testcasename() & ": Incorrect request received"); } [] tc_ac.timeout { setverdict(inconc, testcasename() & ": No CREATE request received"); } } // Postamble f_postamble_deleteResources(); f_ae_postamble_default(); // Tear down f_cf0XXDown(); } } // end g_saref } No newline at end of file