Commit 42c5f2b3 authored by Miguel Angel Reina Ortega's avatar Miguel Angel Reina Ortega
Browse files

Implementation of FlexContainer test cases



TC_CSE_FLXC_CRE_002, TC_CSE_FLXC_UPD_001, TC_CSE_FLXC_UPD_002,
TC_CSE_FLXC_UPD_003
Signed-off-by: Miguel Angel Reina Ortega's avatarreinaortega <miguelangel.reinaortega@etsi.org>
parent 3ae8fd8c
......@@ -4302,7 +4302,12 @@ module OneM2M_Functions {
if(ischosen(p_contentResource.statsCollect)) {
return p_contentResource.statsCollect.resourceName;
}
if(ischosen(p_contentResource.genericInterworkingService)) {
return p_contentResource.genericInterworkingService.resourceName;
}
if(ischosen(p_contentResource.genericInterworkingService_invalid)) {
return p_contentResource.genericInterworkingService_invalid.resourceName;
}
log(__SCOPE__&":WARNING: Primitive Content Kind not implemented");
return "resourceNameNotFound";
......
......@@ -558,7 +558,23 @@ module OneM2M_Templates {
requestIdentifier := "m_updateAcp",
primitiveContent:= {accessControlPolicy := m_contentUpdateAcpPrivileges(p_privileges, p_selfPrivileges)}
};
/**
* @desc Base UPDATE request primitive for GenericInterworkingService resource
*/
template (value) RequestPrimitive m_updateGenericInterworkingServiceBase modifies m_update:= {
requestIdentifier := "m_updateGenericInterworkingService",
primitiveContent:= {genericInterworkingService := m_contentUpdateGenericInterworkingService}
};
/**
* @desc Base UPDATE request primitive for GenericInterworkingService_invalid resource
*/
template (value) RequestPrimitive m_updateGenericInterworkingServiceBase_invalid modifies m_update:= {
requestIdentifier := "m_updateGenericInterworkingServiceInvalid",
primitiveContent:= {genericInterworkingService_invalid := m_contentUpdateGenericInterworkingService_invalid}
};
/**
* @desc Base UPDATE request primitive for Group resource
*/
......@@ -1936,8 +1952,9 @@ module OneM2M_Templates {
announcedAttribute := omit,//O
stateTag := omit,//NP
creator := omit,//O
containerDefinition := "org.onem2m.genericInterworkingService",//M
containerDefinition := "urn:m2m:CDT-gis-v2_17_0.xsd",//M
ontologyRef := omit,//O
contentSize := omit,//NP
serviceName := "MyService",//M??
inputDataPointLinks := omit,//O
outputDataPointLinks := omit,//O
......@@ -3264,7 +3281,62 @@ module OneM2M_Templates {
privileges := p_privileges,//O
selfPrivileges := p_selfPrivileges//O
};
/**
* @desc Base primitiveContent for UPDATE operation for GenericInterworkingService resource
*/
template (value) GenericInterworkingService_optional m_contentUpdateGenericInterworkingService := {
resourceName := omit,//NP
resourceType := omit,//NP
resourceID := omit,//NP
parentID := omit,//NP
creationTime := omit,//NP
lastModifiedTime := omit,//NP
labels := omit,//O
accessControlPolicyIDs := omit,//O
expirationTime := omit,//O
dynamicAuthorizationConsultationIDs := omit, //O
announceTo := omit,//O
announcedAttribute := omit,//O
stateTag := omit,//NP
creator := omit,//NP
containerDefinition := omit,//NP
ontologyRef := omit,//O
contentSize := omit,//NP
serviceName := omit,//NP
inputDataPointLinks := omit,//O
outputDataPointLinks := omit,//O
choice := omit//NP
};
/**
* @desc Base primitiveContent for UPDATE operation for GenericInterworkingService_invalid resource
*/
template (value) GenericInterworkingService_invalid m_contentUpdateGenericInterworkingService_invalid := {
resourceName := omit,//NP
resourceType := omit,//NP
resourceID := omit,//NP
parentID := omit,//NP
creationTime := omit,//NP
lastModifiedTime := omit,//NP
labels := omit,//O
accessControlPolicyIDs := omit,//O
expirationTime := omit,//O
dynamicAuthorizationConsultationIDs := omit, //O
announceTo := omit,//O
announcedAttribute := omit,//O
stateTag := omit,//NP
creator := omit,//NP
containerDefinition := omit,//NP
ontologyRef := omit,//O
contentSize := omit,//NP
serviceName := omit,//NP
expirationCounter:= omit,//Invalid attribute
inputDataPointLinks := omit,//O
outputDataPointLinks := omit,//O
choice := omit//NP
};
/**
* @desc Base primitiveContent for UPDATE operation for Group resource
*/
......@@ -5026,7 +5098,6 @@ module OneM2M_Templates {
parentID := omit,//NP
creationTime := omit,//NP
lastModifiedTime := omit,//NP
expirationCounter := 1,//Invalid attribute
labels := omit,//O
accessControlPolicyIDs := p_accessControlPolicyIds,//O
expirationTime := omit,//O
......@@ -5035,9 +5106,11 @@ module OneM2M_Templates {
announcedAttribute := omit,//O
stateTag := omit,//NP
creator := omit,//O
containerDefinition := "org.onem2m.genericInterworkingService",//M
containerDefinition := "urn:m2m:CDT-gis-v2_17_0.xsd",//M
ontologyRef := omit,//O
contentSize := omit, //NP
serviceName := "MyService",//M??
expirationCounter := 1,//Invalid attribute
inputDataPointLinks := omit,//O
outputDataPointLinks := omit,//O
choice := omit//NP
......
......@@ -7290,6 +7290,7 @@ group OptionalResourceTypes {
XSD.ID creator optional,
XSD.AnyURI containerDefinition optional,
XSD.AnyURI ontologyRef optional,
XSD.NonNegativeInteger contentSize optional,
XSD.String serviceName optional,
ListOfDataLinks inputDataPointLinks optional,
ListOfDataLinks outputDataPointLinks optional,
......@@ -8455,7 +8456,6 @@ group InvalidTypes {
NhURI parentID optional,
Timestamp creationTime optional,
Timestamp lastModifiedTime optional,
XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Container
Labels labels optional,
AcpType accessControlPolicyIDs optional,
Timestamp expirationTime optional,
......@@ -8466,7 +8466,9 @@ group InvalidTypes {
XSD.ID creator optional,
XSD.AnyURI containerDefinition optional,
XSD.AnyURI ontologyRef optional,
XSD.NonNegativeInteger contentSize optional,
XSD.String serviceName optional,
XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Container
ListOfDataLinks inputDataPointLinks optional,
ListOfDataLinks outputDataPointLinks optional,
union {
......
......@@ -5047,7 +5047,7 @@ module OneM2M_Testcases_CSE_Release_2 {
v_aeIndex := f_cse_preamble_registerAe(-, -);//AE1 is registred;
v_request := m_createGenericInterworkingServiceBase;
v_request.primitiveContent.genericInterworkingService.containerDefinition := "org.onem2m.nonExistingDefinition";
v_request.primitiveContent.genericInterworkingService.containerDefinition := "urn:m2m:nonExistingSchemaDefinition.xsd";
v_request := f_getCreateRequestPrimitive(int28, v_request, v_aeIndex);
f_send(e_mca_port, m_request(v_request));
......@@ -5084,207 +5084,223 @@ module OneM2M_Testcases_CSE_Release_2 {
f_cf01Down();
} // end TC_CSE_FLXC_CRE_002
}//end of group Create
group Update {
/**
* @desc Check that the IUT increments the field value of attribute stateTag in the parent <flexContainer> resource when a resource is created as the direct child of the parent <flexContainer>
* @desc Check that the IUT increments the field value of attribute stateTag in the <flexContainer> resource when a custom attribute of the resource is modified
*
*/
testcase TC_CSE_FLXC_CRE_003() runs on Tester system CseSystem {
testcase TC_CSE_FLXC_UPD_001() runs on Tester system CseSystem {
var AeSimu v_ae1 := AeSimu.create("AE1") alive;
v_ae1.start(f_CSE_FLXC_CRE_003());
v_ae1.start(f_CSE_FLXC_UPD_001());
v_ae1.done;
}
function f_CSE_FLXC_CRE_003() runs on AeSimu {
function f_CSE_FLXC_UPD_001() runs on AeSimu {
//Local variables
var integer v_aeIndex, v_acpAuxIndex := -1;
var integer v_aeIndex := -1;
var integer v_resourceIndex := -1;
var RequestPrimitive v_req1;
var RequestPrimitive v_req2;
var RequestPrimitive v_req3;
var MsgIn v_resp1, v_resp3;
var ResponsePrimitive v_resp2;//Response to a Notify Request
var RequestPrimitive v_request := m_create;
var RequestPrimitive v_updateRequest := valueof(m_updateGenericInterworkingServiceBase);
v_updateRequest.primitiveContent.genericInterworkingService.inputDataPointLinks := {
dataLinkEntry_list := {
{
name:="MyDataLink",
dataContainerID :="MyDataContainerId",
attributeName := omit
}
}
};
// Test control
// Test component configuration
f_cf02Up();
f_cf01Up();
// Test adapter configuration
// Preamble
vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSEBase));
vc_cse1.done;
v_acpAuxIndex := f_cse_preamble_createAcpAux();
v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpAuxIndex].resource)}, -);//AE1 is registred;
v_resourceIndex := f_cse_createResource(int28, m_createGenericInterworkingServiceBase, v_aeIndex);
v_resourceIndex := f_cse_createResource(int15, m_createPollingChannelBase, v_aeIndex);
v_req1 := valueof(m_retrievePollingRequest(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex)));
f_send(e_mca_port, m_request(v_req1));
//v_req2 := valueof(m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification));
v_req2 := valueof(m_notify(f_getResourceAddress(v_aeIndex)));
v_req2.requestExpirationTimestamp := {alt_1 := 15000};
// Test Body
if(ispresent(vc_resourcesList[v_resourceIndex].resource.genericInterworkingService.stateTag)) {
f_cse_updateResource(int28, v_resourceIndex, v_updateRequest);
vc_cse1.start(f_cse_notifyProcedure_notify(v_req2));
f_send(e_mca_port, m_request(m_retrieve(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))));
tc_ac.start;
alt {
[] mcaPort.receive(mw_response(mw_responsePollingResponse(v_req2))) -> value v_resp1 {
tc_ac.stop;
setverdict(pass, __SCOPE__ & ": Polling response received");
}
[] mcaPort.receive(mw_response(mw_responsePollingResponse)) {
tc_ac.stop;
setverdict(fail, __SCOPE__ & ": Content not carrying request targeting AE1");
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) {
tc_ac.stop;
setverdict(fail, __SCOPE__ & ": Wrong status code");
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
tc_ac.stop;
setverdict(fail, __SCOPE__ & ": Error while retrieving resource");
}
[] tc_ac.timeout {
setverdict(fail, __SCOPE__ & ": No answer while retrieving resource");
}
}
f_checkAeSimuStatus();
//Send response in any case
v_resp2 := valueof(m_responseNotification(int2000, omit));
v_resp2.requestIdentifier := v_resp1.primitive.responsePrimitive.primitiveContent.requestPrimitive.requestIdentifier;
v_req3 := valueof(m_notifyResponsePrimitive(f_getResourceAddress(v_resourceIndex) & "/" & c_resourceShortNamePollingChannelUri, v_resp2));
v_req3.from_ := f_getOriginator(v_aeIndex);
f_send(e_mca_port, m_request(v_req3));
tc_ac.start;
alt {
[] mcaPort.receive(mw_response(mw_responseNotify(int2000))) -> value v_resp3 {
tc_ac.stop;
setverdict(pass, __SCOPE__ & ": Polling response received");
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
tc_ac.stop;
setverdict(fail, __SCOPE__&":INFO: Error while performing notification");
}
[] mcaPort.receive {
tc_ac.stop;
setverdict(fail, __SCOPE__&":INFO: Unexpected message received");
}
[] tc_ac.timeout {
setverdict(fail, __SCOPE__&":INFO: No answer while performing notification");
}
tc_ac.start;
alt {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response {
tc_ac.stop;
if(vc_response.primitive.responsePrimitive.primitiveContent.genericInterworkingService.stateTag == 1) {
setverdict(pass, __SCOPE__ & ": The stateTag attribute is incremented");
}
else{
setverdict(fail, __SCOPE__ & ": Error the stateTag attribute is not incremented");
}
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
tc_ac.stop;
setverdict(fail, __SCOPE__ & ": Error while retrieving resource attributes");
}
[] tc_ac.timeout {
setverdict(fail, __SCOPE__ & ": No answer while retrieving resource attributes");
}
}
}//end if
else{
setverdict(fail, __SCOPE__ & ": Error the stateTag attribute is empty");
}
f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
//Postamble
f_cse_postamble_deleteResources();
// Tear down
f_cf02Down();
f_cf01Down();
}
}//end of group Create
group Update {
/**
* @desc Check that the IUT rejects the update of the <flexContainer> resource when the resource representation does not comply with the schema definition.
* @desc Check that the IUT does not increment the field value of attribute stateTag in the <flexContainer> resource when a common attribute of the resource is modified
*
*/
testcase TC_CSE_FLXC_UPD_001() runs on Tester system CseSystem {
testcase TC_CSE_FLXC_UPD_002() runs on Tester system CseSystem {
var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
var AeSimu v_ae1 := AeSimu.create("AE1") alive;
v_cse1.start(f_CSE_FLXC_UPD_001());
v_cse1.done;
v_ae1.start(f_CSE_FLXC_UPD_002());
v_ae1.done;
}
function f_CSE_FLXC_UPD_001() runs on CseSimu {
function f_CSE_FLXC_UPD_002() runs on AeSimu {
//Local variables
var integer v_localResourceIndex := -1;
var MsgIn v_request_req1, v_request_req3;
var RequestPrimitive v_request_req2;
var ResponsePrimitive v_response_rsp1;
var template UtTriggerPrimitive v_utRequest1 := m_utCreatePollingChannel;
var template UtTriggerPrimitive v_utRequest2;
var charstring v_action1 := "Please, send a Polling Channel CREATE request";
var charstring v_action2 := "Please, send a Polling request (Retrieve PollingChannelURI request)";
var RequestPrimitive v_requestNotify;
//Test control
var integer v_aeIndex := -1;
var integer v_resourceIndex := -1;
var RequestPrimitive v_request := m_create;
var RequestPrimitive v_updateRequest := valueof(m_updateGenericInterworkingServiceBase);
var Labels v_labels_1:= {"VALUE_1"};
v_updateRequest.primitiveContent.genericInterworkingService.labels := v_labels_1;
// Test control
// Test component configuration
f_cf02UpCseSimuMaster();
// Test component configuration
f_cf01Up();
// Test adapter configuration
// Test adapter configuration
// Preamble
v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
v_resourceIndex := f_cse_createResource(int28, m_createGenericInterworkingServiceBase, v_aeIndex);
// Test Body
if(ispresent(vc_resourcesList[v_resourceIndex].resource.genericInterworkingService.stateTag)) {
// Preamble
vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSEBase);
//send triggering primitive to SUT
v_localResourceIndex := f_cse_createLocalResource(v_utRequest1,v_action1);
//Check that the created resource is a PollingChannel
if(not(vc_localResourcesList[v_localResourceIndex].resourceType == int15)) {
setverdict(inconc, __SCOPE__&":INFO: Polling Channel resource not creaded");
f_checkCseSimuStatus();
}
//Trigger IUT for sending a polling request (req1)
v_utRequest2 := valueof(m_utRetrievePollingChannelUri(f_getLocalResourceAddress(v_localResourceIndex) & "/" & c_resourceShortNamePollingChannelUri));
f_sendUtPrimitive(v_utRequest2,v_action2);
f_cse_updateResource(int28, v_resourceIndex, v_updateRequest);
tc_ac.start;
alt {
[] mccPortIn.receive(mw_request(mw_retrieve(f_getResourceAddress(v_localResourceIndex) & "/" & c_resourceShortNamePollingChannelUri))) -> value v_request_req1 {
tc_ac.stop;
setverdict(pass, __SCOPE__&":INFO: Polling request received successfuly");
v_response_rsp1 := valueof(m_responsePrimitive(int2000,v_request_req1.primitive.requestPrimitive.requestIdentifier));
v_response_rsp1.from_ := PX_CSE1_ID;
v_response_rsp1.to_ := v_request_req1.primitive.requestPrimitive.from_;
//Put in the primitiveContent a Notify request (req2) (simulated) from another node CSE
v_request_req2 := valueof(m_notify(f_getResourceAddress(vc_remoteCseIndex)));
v_response_rsp1.primitiveContent := { requestPrimitive := v_request_req2 };
f_send(e_mcc_in_port, m_response(v_response_rsp1));
}
[] tc_ac.timeout {
setverdict(inconc, __SCOPE__&":INFO: No request received for creating resource type Polling Channel");
}
f_send(e_mca_port, m_request(m_retrieve(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))));
tc_ac.start;
alt {
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response {
tc_ac.stop;
if(vc_response.primitive.responsePrimitive.primitiveContent.genericInterworkingService.stateTag == 0) {
setverdict(pass, __SCOPE__ & ": The stateTag attribute has not been incremented");
}
else{
setverdict(fail, __SCOPE__ & ": Error the stateTag attribute is incremented");
}
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
tc_ac.stop;
setverdict(fail, __SCOPE__ & ": Error while retrieving resource attributes");
}
[] tc_ac.timeout {
setverdict(fail, __SCOPE__ & ": No answer while retrieving resource attributes");
}
}
}//end if
else{
setverdict(fail, __SCOPE__ & ": Error the stateTag attribute is empty");
}
//Postamble
f_cse_postamble_deleteResources();
// Tear down
f_cf01Down();
}
/**
* @desc Check that the IUT rejects the update of the <flexContainer> resource when the resource representation does not comply with the schema definition
*
*/
testcase TC_CSE_FLXC_UPD_003() runs on Tester system CseSystem {
var AeSimu v_ae1 := AeSimu.create("AE1") alive;
v_ae1.start(f_CSE_FLXC_UPD_003());
v_ae1.done;
}
function f_CSE_FLXC_UPD_003() runs on AeSimu {
//Local variables
var integer v_aeIndex := -1;
var integer v_resourceIndex := -1;
var RequestPrimitive v_request := m_create;
var RequestPrimitive v_updateRequest := valueof(m_updateGenericInterworkingServiceBase_invalid);
v_updateRequest.primitiveContent.genericInterworkingService_invalid.expirationCounter := 1;
// Test control
// Test component configuration
f_cf01Up();
// Test adapter configuration
// Preamble
v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
v_resourceIndex := f_cse_createResource(int28, m_createGenericInterworkingServiceBase, v_aeIndex);
// Test Body
v_updateRequest := f_getUpdateRequestPrimitive(int28, v_resourceIndex, v_updateRequest);
f_send(e_mca_port, m_request(v_updateRequest));
tc_ac.start;
alt {
[] mccPortIn.receive(mw_request(mw_notifyResponsePrimitive(?))) -> value v_request_req3 {
[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value vc_response {
tc_ac.stop;
//Check that primitiveContent carries the response to req2 (resp2)
if(v_request_req3.primitive.requestPrimitive.primitiveContent.responsePrimitive.requestIdentifier == v_request_req2.requestIdentifier) {
setverdict(pass, __SCOPE__ & ": NOTIFY request received carrying response (rsp2) to the Notify request (req2)");
} else {
setverdict(fail, __SCOPE__ & ": NOTIFY request received not carryng the expected response (rsp2) to the Notify request (req2)");
}
setverdict(pass, __SCOPE__ & ": GenericInterworkingService resource correctly not updated");
}
[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) {
tc_ac.stop;
setverdict(fail, __SCOPE__ & ": GenericInterworkingService resource updated with wrong attribute");
}
[] tc_ac.timeout {
setverdict(fail, __SCOPE__ & ": No message while expecting NOTIFY request");
setverdict(fail, __SCOPE__ & ": No answer while retrieving resource attributes");
}
}
}
//Postamble
f_cse_postamble_deleteResourcesCSE();
// Tear down
f_cf02DownCseSimuMaster();
f_cse_postamble_deleteResources();
// Tear down
f_cf01Down();
}
}//end of group Update
}//end group FlexContainer
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment