diff --git a/OneM2M_Functions.ttcn b/OneM2M_Functions.ttcn index 823820ee5ffc40f8a43a16450b5c52eb01660ce8..e795c2e7e5e4f9e80fb70ad82d8d4491b621b20e 100644 --- a/OneM2M_Functions.ttcn +++ b/OneM2M_Functions.ttcn @@ -88,7 +88,7 @@ module OneM2M_Functions { v_request.to_ := f_addPrefix(f_getResourceAddress()); mcaPort.send(m_request(v_request)); - //mcaPort.send(m_request(m_createAeAux(p_name, {PX_URI_CSE & PX_CSE_NAME & "/" & c_acpAuxName}))); + //mcaPort.send(m_request(m_createAeAux(p_name, {PX_URI_CSE & PX_CSE_NAME & "/" & PX_ACPAUX_NAME}))); } else { mcaPort.send(m_request(m_createAeAux())); } @@ -251,8 +251,6 @@ module OneM2M_Functions { p_request.to_ := f_addPrefix(f_getResourceAddress(p_parentIndex)); - //p_request.name := p_name; - if (p_resourceType == int1) {//AccessControlPolicy } @@ -274,7 +272,7 @@ module OneM2M_Functions { p_request.primitiveContent.any_1[0].Subscription_optional.notificationURI := {PX_CSE_ID & "/" & vc_aeAux.aE_ID}; } } else { - p_request.primitiveContent.any_1[0].Subscription_optional.notificationURI := {"/" & PX_CSE_NAME & "/" & c_aeAuxName}; + p_request.primitiveContent.any_1[0].Subscription_optional.notificationURI := {"/" & PX_CSE_NAME & "/" & PX_AEAUX_NAME};//c_aeAuxName }*/ } @@ -295,8 +293,6 @@ module OneM2M_Functions { p_request.to_ := f_addPrefix(f_getResourceAddress(p_resourceIndex)); - //p_request.name := p_name; - if (p_resourceType == int3) {//Container //TODO @@ -615,7 +611,7 @@ module OneM2M_Functions { var integer v_acpAuxIndex := -1; var integer v_containerResourceIndex := -1; - v_acpAuxIndex := f_createAccessControlPolicyAux(p_acpName := "MyAcp_2"); + v_acpAuxIndex := f_createAccessControlPolicyAux(p_acpName := c_acpAuxName);//"MyAcp_2" v_request := valueof(m_createContainerBase); v_request.primitiveContent.any_1[0].Container_optional.accessControlPolicyIDs := {f_getResourceId(vc_resourcesList[v_acpAuxIndex].resource)}; diff --git a/OneM2M_Pixits.ttcn b/OneM2M_Pixits.ttcn index ef37fc7dffe079f14eff96045ab78c7c56523f6e..b9181a6d53b3e9bd6acda047733cb207f01d2258 100644 --- a/OneM2M_Pixits.ttcn +++ b/OneM2M_Pixits.ttcn @@ -16,40 +16,51 @@ module OneM2M_Pixits { import from XSD all; import from OneM2M_Types all; - modulepar boolean PX_DELETE_CREATED_RESOURCES := true; + modulepar boolean PX_DELETE_CREATED_RESOURCES := true; - modulepar charstring PX_RESOURCE_TO_BE_DELETED := "/ae_test"; + modulepar charstring PX_RESOURCE_TO_BE_DELETED := "/ae_test"; modulepar XSD.IDREFS PX_RESOURCES_TO_BE_DELETED := {"/ae_test", "/MyAcp"}; - modulepar charstring PX_HOST_ADDRESS := "127.0.0.1:8080"; + modulepar charstring PX_HOST_ADDRESS := "127.0.0.1:8080"; - modulepar charstring PX_XML_NAMESPACE := "om2m=""http://www.onem2m.org/xml/protocols"""; + modulepar charstring PX_XML_NAMESPACE := "om2m=""http://www.onem2m.org/xml/protocols"""; - modulepar charstring PX_CSE_NAME := "in-cse"; + modulepar charstring PX_CSE_NAME := "in-cse"; - modulepar charstring PX_URI_CSE := "/~/in-cse"; + modulepar charstring PX_URI_CSE := "/~/in-cse"; + + modulepar boolean PX_UNSTRUCTURED := false; - modulepar boolean PX_UNSTRUCTURED := false; + modulepar charstring PX_AE_ID_STEM := "admin:admin"; - modulepar charstring PX_AE_ID_STEM := "admin:admin"; + modulepar charstring PX_APP_ID := "myAppId"; - modulepar charstring PX_APP_ID := "myAppId"; + modulepar boolean PX_RUN_POSTAMBLE := true; - modulepar boolean PX_RUN_POSTAMBLE := true; - - modulepar ListOfURIs PX_ACOR := {"*"}; + modulepar ListOfURIs PX_ACOR := {"*"}; modulepar AddressingFormat PX_ADDRESSING_FORMAT := e_cseRelative; - modulepar charstring PX_SERIALIZATION := "JSON"; + modulepar charstring PX_SERIALIZATION := "JSON"; + + modulepar charstring PX_PROTOCOL_BINDING := "HTTP"; + + modulepar boolean PX_ACP_SUPPORT := true; - modulepar charstring PX_PROTOCOL_BINDING := "HTTP"; + modulepar charstring PX_CSE_ID := "in-cse"; - modulepar boolean PX_ACP_SUPPORT := true; + modulepar boolean PX_FROM_IS_AE_ID := false; - modulepar charstring PX_CSE_ID := "in-cse"; + //@Martin + //constant parameters for LOC + modulepar LocationSource PX_LOCATION_SOURCE := int1;//network-defined + modulepar charstring PX_LOCATION_TARGET_ID := "{LOCATION-TARGET-ID}"; //SUPPOSE TO BE RECEIVED FROM LOCATION SERVER + modulepar charstring PX_LOCATION_SERVER_ADDRESS := "{LOCATION-SERVER-ADDRESS}"; + modulepar charstring PX_LOCATION_UPDATE_PERIOD := "PT10M10S" ;//10 Minute 10 Seconds + modulepar charstring PX_LOCATION_UPDATE_PERIOD_INVALID := "-PT30M10S" ;//duration set to invalid value (minus value) + modulepar charstring PX_LOCATION_CONTAINER_NAME := "myLoContainer"; - modulepar boolean PX_FROM_IS_AE_ID := false; + modulepar Labels LABELS := {"VALUE_1"}; } // end of module diff --git a/OneM2M_Templates.ttcn b/OneM2M_Templates.ttcn index 14b15a3698023ab2f364848f80205cdfc0eb9ccf..2386f14287c5ede4f26a530537f311e251c6e86d 100644 --- a/OneM2M_Templates.ttcn +++ b/OneM2M_Templates.ttcn @@ -67,7 +67,7 @@ module OneM2M_Templates { */ template (value) RequestPrimitive m_retrieveCseBase := { operation := int2, - to_ := c_uri_cse, + to_ := PX_URI_CSE,//c_uri_cse,//@Martin from_ := "admin:admin", requestIdentifier := "m_retrieveCseBase" & f_rnd(1, 1000000), resourceType := omit, @@ -340,6 +340,32 @@ module OneM2M_Templates { discoveryResultType := omit }; + + //@Martin + template (value) RequestPrimitive m_updateLocationPolicy(XSD.ID p_locResourceAddress, in template (omit) AcpType p_accessControlPolicyIDs, in template (omit) XSD.Duration locationUpdatePeriod) := { + operation := int3, //create + to_ := p_locResourceAddress, + from_ := PX_AE_ID_STEM, //AE originator id e.g. + requestIdentifier := "m_updateLocationPolicy", + resourceType := omit,//NP + primitiveContent := { + any_1 := {{ LocationPolicy_optional := m_contentUpdateLocationPolicy(p_accessControlPolicyIDs, locationUpdatePeriod) }} + }, + role := omit, + originatingTimestamp := omit, + requestExpirationTimestamp := omit, + resultExpirationTimestamp := omit, + operationExecutionTime := omit, + responseType := omit, + resultPersistence := omit, + resultContent := int1,//default + eventCategory := omit, + deliveryAggregation := omit, + groupRequestIdentifier := omit, + filterCriteria := omit, + discoveryResultType := omit + }; + }//end group Update group Create { @@ -401,7 +427,7 @@ module OneM2M_Templates { template (value) RequestPrimitive m_createAeAux(template (omit) AcpType p_accessControlPolicyIDs := omit ) := { operation := int1, to_ := "Not Initialized", - from_ := omit,//PX_AE_ID_STEM,//TODO We should use omit, "s", or "c" + from_ := PX_AE_ID_STEM,//TODO We should use omit, "s", or "c"//@Martin requestIdentifier := "m_createAe" & f_rnd(1, 1000000), resourceType := int2, primitiveContent := { @@ -851,6 +877,32 @@ module OneM2M_Templates { discoveryResultType := omit }; + + //@Martin + template (value) RequestPrimitive m_createLocationPolicy(XSD.ID p_parentResourceAddress, in template (omit) AcpType p_accessControlPolicyIDs, in template (omit) XSD.Duration locationUpdatePeriod, in template (omit) NodeID locationTargetID, in template (omit) XSD.AnyURI locationServerAddress) := { + operation := int1, //create + to_ := p_parentResourceAddress, + from_ := PX_AE_ID_STEM, //AE originator id e.g. + requestIdentifier := "m_createLocationPolicy", //the requestIdentifier is supposed to be set similar as "C190XX7T/001" by prepending the AE-ID-Stem and slash(‘/’) in front of it + resourceType := int10, + primitiveContent := { + any_1 := {{ LocationPolicy_optional := m_contentCreateLocationPolicy(p_accessControlPolicyIDs, locationUpdatePeriod, locationTargetID, locationServerAddress) }} + }, + role := omit, + originatingTimestamp := omit, + requestExpirationTimestamp := omit, + resultExpirationTimestamp := omit, + operationExecutionTime := omit, + responseType := omit, + resultPersistence := omit, + resultContent := int1,//default + eventCategory := omit, + deliveryAggregation := omit, + groupRequestIdentifier := omit, + filterCriteria := omit, + discoveryResultType := omit + }; + }//end group Create group Delete { @@ -1202,6 +1254,30 @@ module OneM2M_Templates { choice := omit//NP }; + //@Martin + template (value) LocationPolicy_optional m_contentCreateLocationPolicy (in template (omit) AcpType p_accessControlPolicyIDs, in template (value) XSD.Duration locationUpdatePeriod, in template (value) NodeID locationTargetID, in template (value) XSD.AnyURI locationServerAddress) := { + resourceName := c_defaultResourceName, //O + resourceType := omit, //NP + resourceID := omit, //NP + parentID := omit, //NP + creationTime := omit, //NP + lastModifiedTime := omit, //NP + labels := LABELS,//O + accessControlPolicyIDs := p_accessControlPolicyIDs, //O + expirationTime := omit, //O + announceTo := omit, //O + announcedAttribute := omit, //O + locationSource := PX_LOCATION_SOURCE, //M + locationUpdatePeriod := locationUpdatePeriod, //O + locationTargetID := locationTargetID, //O + locationServer := locationServerAddress,//O + locationContainerID := omit, //NP + locationContainerName := PX_LOCATION_CONTAINER_NAME,//O + locationStatus := omit, //NP + choice := omit //NP + + }; + }//end group ContentCreate group ContentUpdate { @@ -1399,6 +1475,30 @@ module OneM2M_Templates { oldest := omit,//NP choice := omit//NP }; + + //@Martin + template (value) LocationPolicy_optional m_contentUpdateLocationPolicy (in template (omit) AcpType p_accessControlPolicyIDs, in template (value) XSD.Duration locationUpdatePeriod) := { + resourceName := omit,//NP + resourceType := omit,//NP + resourceID := omit,//NP + parentID := omit,//NP + creationTime := omit,//NP + lastModifiedTime := omit,//NP + labels := LABELS,//O + accessControlPolicyIDs := p_accessControlPolicyIDs,//O + expirationTime := omit,//O + announceTo := omit,//O + announcedAttribute := omit,//O + locationSource := omit,//NP + locationUpdatePeriod := locationUpdatePeriod, //O + locationTargetID := omit, //NP + locationServer := omit, //NP + locationContainerID := omit, //NP + locationContainerName := PX_LOCATION_CONTAINER_NAME, //O + locationStatus := omit, //NP + choice := omit //NP + }; + }//end group ContentUpdate group responseContent { diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn index c1e3ed341ebf0bb369546604eaa2a22082934835..faab37746fe7d1043f6947b8041b01493774cbe8 100644 --- a/OneM2M_Testcases.ttcn +++ b/OneM2M_Testcases.ttcn @@ -3737,6 +3737,238 @@ module OneM2M_Testcases { }//end group Data_Management_and_Repository + //@Martin + group Location { + + group g_CSE_LOC_BV_001{ + + testcase TC_CSE_LOC_BV_001_01() runs on M2M system M2MSystem { + + var integer v_aeAuxIndex := -1; + var XSD.ID p_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & c_aeAuxName; + var RequestPrimitive v_request; + var M2MResponsePrimitive v_response; + + //Test component configuration + f_cf01Up(); + + //Preamble + v_aeAuxIndex := f_preamble_registerAe(); + + //Set requestPrimitive + v_request := f_getCreateRequestPrimitive(int10, omit, m_createLocationPolicy(p_aeResourceAddress, omit, omit, omit, omit), v_aeAuxIndex); + + //Test Body + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt{ + [] mcaPort.receive(mw_response(int4000)) -> value v_response { //BAD REQUEST + tc_ac.stop; + setverdict(pass, testcasename() & "Resource <locationPolicy> create request is rejected due to invalid request body message!!"); + } + [] mcaPort.receive(mw_responseKO) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error while handling an invalid locationPolicy resource create request with response status code:" & int2str(enum2int(v_response.responsePrimitive_.responseStatusCode))); + } + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Created a locationPolicy resource for an invalid create request with response status code:" & int2str(enum2int(v_response.responsePrimitive_.responseStatusCode))); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": Timeout due to no response received from requested server!"); + } + + } + // Postamble + f_postamble_deleteResources(); + + }// end testcase TC_CSE_LOC_BV_001_01 + + testcase TC_CSE_LOC_BV_001_02() runs on M2M system M2MSystem { + + var integer v_aeAuxIndex := -1; + var XSD.ID p_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & c_aeAuxName; + var XSD.Duration locationUpdatePeriod := PX_LOCATION_UPDATE_PERIOD; + var XSD.Token locationTargetID := PX_LOCATION_TARGET_ID; + var XSD.AnyURI locationServerAddress := PX_LOCATION_SERVER_ADDRESS; + var RequestPrimitive v_request; + var M2MResponsePrimitive v_response; + + //Test component configuration + f_cf01Up(); + + //Preamble + v_aeAuxIndex := f_preamble_registerAe(); + + //Set requestPrimitive + v_request := f_getCreateRequestPrimitive(int10, omit, m_createLocationPolicy(p_aeResourceAddress, omit, locationUpdatePeriod, locationTargetID, locationServerAddress), v_aeAuxIndex); + + // Test Body + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": Resource locationPolicy is created successfuly with response status code: " & int2str(enum2int(v_response.responsePrimitive_.responseStatusCode))&"!"); + } + [] mcaPort.receive(mw_responseKO) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error occurrs with response status code: " & int2str(enum2int(v_response.responsePrimitive_.responseStatusCode)) & "while handling a valid locationPolicy resource create request!"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!"); + } + } + + // Postamble + f_postamble_deleteResources(); + + }// end testcase TC_CSE_LOC_BV_001_02 + + }//end group g_CSE_LOC_BV_001 + + + group g_CSE_LOC_BO_001{ + + testcase TC_CSE_LOC_BO_001_01() runs on M2M system M2MSystem {//no AE_ID presented in the from_ is assigned privilege to do locationPolicy resource create operation!! + + var integer v_aeAuxIndex := -1; + var XSD.ID p_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & c_aeAuxName; + var XSD.Duration locationUpdatePeriod := PX_LOCATION_UPDATE_PERIOD; + var XSD.Token locationTargetID := PX_LOCATION_TARGET_ID; + var XSD.AnyURI locationServerAddress := PX_LOCATION_SERVER_ADDRESS; + var RequestPrimitive v_request; + var M2MResponsePrimitive v_response; + + //Test component configuration + f_cf01Up(); + + //Preamble + v_aeAuxIndex := f_preamble_registerAe(int62);//c_RUDNDi //No resource creation privilege + + //Request target resource address + p_aeResourceAddress := f_addPrefix(f_getResourceAddress(v_aeAuxIndex)); + + //Set requestPrimitive + v_request := f_getCreateRequestPrimitive(int10, omit, m_createLocationPolicy(p_aeResourceAddress, omit, locationUpdatePeriod, locationTargetID, locationServerAddress), v_aeAuxIndex); + + // Test Body + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(int4103)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": Access denied to create a resource including locationPolicy!"); + } + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error occurrs with response status code: " & int2str(enum2int(v_response.responsePrimitive_.responseStatusCode)) & "due to IUT failed to check the access privilege of originator!"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!"); + } + } + + // Postamble + f_postamble_deleteResources(); + + + } // end testcase TC_CSE_LOC_BO_001_01 + + testcase TC_CSE_LOC_BO_001_02() runs on M2M system M2MSystem { + + var integer v_aeAuxIndex := -1; + var XSD.ID p_targetResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & c_aeAuxName & "/" & c_defaultResourceName; + var XSD.Duration locationUpdatePeriod := PX_LOCATION_UPDATE_PERIOD; + var XSD.Token locationTargetID := PX_LOCATION_TARGET_ID; + var XSD.AnyURI locationServerAddress := PX_LOCATION_SERVER_ADDRESS; + var RequestPrimitive v_request; + var M2MResponsePrimitive v_response; + + //Test component configuration + f_cf01Up(); + + //Preamble + v_aeAuxIndex := f_preamble_registerAe(); + + //Set requestPrimitive + v_request := f_getCreateRequestPrimitive(int10, omit, m_createLocationPolicy(p_targetResourceAddress, omit, locationUpdatePeriod, locationTargetID, locationServerAddress), v_aeAuxIndex); + + // Test Body + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(int4000)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": The targeted resource is not found!!"); + } + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error occurrs with response status code: "& int2str(enum2int(v_response.responsePrimitive_.responseStatusCode)) & "due to IUT created a locationPolicy resource under a non-existed parent resource!"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!"); + } + } + + // Postamble + f_postamble_deleteResources(); + }// end testcase TC_CSE_LOC_BO_001_02 + + }//end group g_CSE_LOC_BO_001 + + + group g_CSE_LOC_BI_001{ + + testcase TC_CSE_LOC_BI_001_01() runs on M2M system M2MSystem {//reject a invalid update request with invalid attribtue locationUpdatePeriod + + var integer v_aeAuxIndex := -1; + var integer v_locPolicyResourceIndex := -1; + var XSD.ID p_aeResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & c_aeAuxName; + var XSD.ID p_defaultResourceAddress := PX_URI_CSE & PX_CSE_NAME & "/" & c_aeAuxName & "/" & c_defaultResourceName; + var XSD.Duration locationUpdatePeriod_invalid := PX_LOCATION_UPDATE_PERIOD_INVALID; + var RequestPrimitive v_request; + var RequestPrimitive v_request_preamble; + var M2MResponsePrimitive v_response; + + //Test component configuration + f_cf01Up(); + + //Preamble - register AE + v_aeAuxIndex := f_preamble_registerAe(); + //Preamble - create a valid locationPolicy resource for later update use + v_request_preamble := valueof(m_createLocationPolicy(p_aeResourceAddress, omit, PX_LOCATION_UPDATE_PERIOD, PX_LOCATION_TARGET_ID, PX_LOCATION_SERVER_ADDRESS)); + v_locPolicyResourceIndex := f_createResource(int10, v_request_preamble, v_aeAuxIndex); + + //Set requestPrimitive + v_request := f_getUpdateRequestPrimitive(int10, v_locPolicyResourceIndex, m_updateLocationPolicy(p_defaultResourceAddress, omit, locationUpdatePeriod_invalid)); + + // Test Body + mcaPort.send(m_request(v_request)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(int4000)) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": Update locationPolicy resource is rejected!!"); + } + [] mcaPort.receive(mw_responseOK) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Error occurrs with response status code: "& int2str(enum2int(v_response.responsePrimitive_.responseStatusCode)) & "due to IUT failed to handle an invalid locationPolicy update request"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": Timeout due to no response from requested server!"); + } + } + + // Postamble + f_postamble_deleteResources(); + + }//end testcase TC_CSE_LOC_BI_001_01 + + }//end group g_CSE_LOC_BI_001 + + + }//end group Location }//end group CSE diff --git a/OneM2M_Types.ttcn b/OneM2M_Types.ttcn index ac17dce1147f43a800b5e667d3adc383764907bc..d7cbf7d550f362644f507f028d945e7d1684d414 100644 --- a/OneM2M_Types.ttcn +++ b/OneM2M_Types.ttcn @@ -4422,7 +4422,47 @@ group optionalResourceTypes { variant (choice) "untagged"; }; + //@Martin + type record LocationPolicy_optional + { + XSD.NCName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp expirationTime optional, + ListOfURIs announceTo optional, + record length(1 .. infinity) of XSD.NCName announcedAttribute optional, + LocationSource locationSource optional, + XSD.Duration locationUpdatePeriod optional, + NodeID locationTargetID optional, + XSD.AnyURI locationServer optional, + XSD.AnyURI locationContainerID optional, + XSD.String locationContainerName optional, + XSD.String locationStatus optional, + union { + record length(1 .. infinity) of ChildResourceRef childResource_list, + record length(1 .. infinity) of union { + Subscription subscription + } choice_list + } choice optional +} + with { + variant "name as uncapitalized"; + variant "element"; + variant (resourceName) "attribute"; + variant (announcedAttribute) "list"; + variant (choice) "untagged"; + variant (choice.childResource_list) "untagged"; + variant (choice.childResource_list[-]) "name as 'childResource'"; + variant (choice.choice_list) "untagged"; + variant (choice.choice_list[-]) "untagged"; + }; + } group invalidTypes { @@ -4531,6 +4571,22 @@ group invalidTypes { EventCat notificationEventCat optional } + //@Martin + type record LocationPolicy_update_invalid { + Timestamp creationTime optional,//invalid field to be used for BI tests + Timestamp lastModifiedTime optional,//invalid field to be used for BI tests + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp expirationTime optional, + LocationSource locationSource optional,//invalid field to be used for BI tests + XSD.Duration locationUpdatePeriod optional, + NodeID locationTargetID optional,//invalid field to be used for BI tests + XSD.AnyURI locationServer optional,//invalid field to be used for BI tests + XSD.AnyURI locationContainerID optional,//invalid field to be used for BI tests + XSD.String locationContainerName optional, + XSD.String locationStatus optional//invalid field to be used for BI tests + } + }//end group invalidTypes group otherTypes {