Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
test_m2mnsdlinterface.cpp
00001 /* 00002 * Copyright (c) 2015 ARM Limited. All rights reserved. 00003 * SPDX-License-Identifier: Apache-2.0 00004 * Licensed under the Apache License, Version 2.0 (the License); you may 00005 * not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an AS IS BASIS, WITHOUT 00012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 #include "CppUTest/TestHarness.h" 00017 #include "test_m2mnsdlinterface.h" 00018 #include "common_stub.h" 00019 #include "m2msecurity_stub.h" 00020 #include "m2mnsdlobserver.h" 00021 #include "m2mobject_stub.h" 00022 #include "m2mobjectinstance_stub.h" 00023 #include "m2mresource_stub.h" 00024 #include "m2mresourceinstance_stub.h" 00025 #include "m2mresource.h" 00026 #include "m2mbase_stub.h" 00027 #include "m2mserver.h" 00028 #include "m2msecurity.h" 00029 #include "m2mtlvdeserializer_stub.h" 00030 class TestObserver : public M2MNsdlObserver { 00031 00032 public: 00033 TestObserver(){} 00034 virtual ~TestObserver(){} 00035 void coap_message_ready(uint8_t *, 00036 uint16_t, 00037 sn_nsdl_addr_s *){ 00038 message_ready = true; 00039 } 00040 00041 void client_registered(M2MServer *){ 00042 registered = true; 00043 } 00044 00045 void registration_updated(const M2MServer &){ 00046 register_updated = true; 00047 } 00048 00049 void registration_error(uint8_t, bool retry = false){ 00050 register_error = true; 00051 } 00052 00053 void client_unregistered(){ 00054 unregistered = true; 00055 } 00056 00057 void bootstrap_done(M2MSecurity *sec){ 00058 if(sec) { 00059 boot_done = true; 00060 delete sec; 00061 sec = NULL; 00062 } 00063 } 00064 00065 void bootstrap_wait(M2MSecurity *sec){ 00066 if(sec) { 00067 boot_wait = true; 00068 delete sec; 00069 sec = NULL; 00070 } 00071 } 00072 00073 void bootstrap_error(){ 00074 boot_error = true; 00075 } 00076 00077 void coap_data_processed(){ 00078 data_processed = true; 00079 } 00080 00081 void value_updated(M2MBase *){ 00082 value_update = true; 00083 } 00084 00085 bool register_error; 00086 bool boot_error; 00087 bool boot_wait; 00088 bool boot_done; 00089 bool registered; 00090 bool register_updated; 00091 bool data_processed; 00092 bool unregistered; 00093 bool message_ready; 00094 bool value_update; 00095 }; 00096 00097 struct nsdl_s { 00098 uint16_t update_register_msg_id; 00099 uint16_t register_msg_len; 00100 uint16_t update_register_msg_len; 00101 00102 uint16_t register_msg_id; 00103 uint16_t unregister_msg_id; 00104 00105 uint16_t bootstrap_msg_id; 00106 uint16_t oma_bs_port; /* Bootstrap port */ 00107 uint8_t oma_bs_address_len; /* Bootstrap address length */ 00108 unsigned int sn_nsdl_endpoint_registered:1; 00109 bool handle_bootstrap_msg:1; 00110 00111 struct grs_s *grs; 00112 uint8_t *oma_bs_address_ptr; /* Bootstrap address pointer. If null, no bootstrap in use */ 00113 sn_nsdl_ep_parameters_s *ep_information_ptr; // Endpoint parameters, Name, Domain etc.. 00114 sn_nsdl_oma_server_info_t *nsp_address_ptr; // NSP server address information 00115 00116 void (*sn_nsdl_oma_bs_done_cb)(sn_nsdl_oma_server_info_t *server_info_ptr); /* Callback to inform application when bootstrap is done */ 00117 void *(*sn_nsdl_alloc)(uint16_t); 00118 void (*sn_nsdl_free)(void *); 00119 uint8_t (*sn_nsdl_tx_callback)(struct nsdl_s *, sn_nsdl_capab_e , uint8_t *, uint16_t, sn_nsdl_addr_s *); 00120 uint8_t (*sn_nsdl_rx_callback)(struct nsdl_s *, sn_coap_hdr_s *, sn_nsdl_addr_s *); 00121 void (*sn_nsdl_oma_bs_done_cb_handle)(sn_nsdl_oma_server_info_t *server_info_ptr, 00122 struct nsdl_s *handle); /* Callback to inform application when bootstrap is done with nsdl handle */ 00123 }; 00124 00125 Test_M2MNsdlInterface::Test_M2MNsdlInterface() 00126 { 00127 observer = new TestObserver(); 00128 nsdl = new M2MNsdlInterface(*observer); 00129 //nsdl->_server = new M2MServer(); 00130 } 00131 00132 Test_M2MNsdlInterface:: ~Test_M2MNsdlInterface() 00133 { 00134 delete nsdl; 00135 nsdl = NULL; 00136 delete observer; 00137 observer = NULL; 00138 } 00139 00140 void Test_M2MNsdlInterface::test_create_endpoint() 00141 { 00142 u_int8_t value[] = {"120"}; 00143 if( nsdl->_endpoint == NULL){ 00144 nsdl->_endpoint = (sn_nsdl_ep_parameters_s*)nsdl->memory_alloc(sizeof(sn_nsdl_ep_parameters_s)); 00145 } 00146 00147 nsdl->create_endpoint("name", "type",120,"domain",100,"context"); 00148 CHECK(nsdl->_endpoint->lifetime_len == 3); 00149 CHECK(*nsdl->_endpoint->lifetime_ptr == *value); 00150 } 00151 00152 void Test_M2MNsdlInterface::test_delete_endpoint() 00153 { 00154 if( nsdl->_endpoint == NULL){ 00155 nsdl->_endpoint = (sn_nsdl_ep_parameters_s*)nsdl->memory_alloc(sizeof(sn_nsdl_ep_parameters_s)); 00156 } 00157 nsdl->_endpoint->lifetime_ptr = (uint8_t*)malloc(sizeof(uint8_t)); 00158 00159 nsdl->delete_endpoint(); 00160 CHECK(nsdl->_endpoint == NULL); 00161 } 00162 00163 void Test_M2MNsdlInterface::test_create_nsdl_list_structure() 00164 { 00165 String *name = new String("name"); 00166 common_stub::int_value = 0; 00167 m2mbase_stub::int_value = 0; 00168 M2MObject *object = new M2MObject(*name, (char*)name->c_str()); 00169 M2MObjectInstance* instance = new M2MObjectInstance(*object,*name, "", "name/0"); 00170 00171 M2MResource* create_resource = new M2MResource(*instance, 00172 *name, 00173 *name, 00174 M2MResourceInstance::INTEGER, 00175 false, 00176 "name"); 00177 00178 M2MResourceInstance* res_instance = new M2MResourceInstance(*create_resource, *name, *name, 00179 M2MResourceInstance::INTEGER, 0, (char*)name->c_str(), false); 00180 00181 m2mobject_stub::instance_list.clear(); 00182 m2mobject_stub::instance_list.push_back(instance); 00183 00184 m2mobjectinstance_stub::resource_list.clear(); 00185 m2mobjectinstance_stub::resource_list.push_back(create_resource); 00186 00187 M2MObjectList list; 00188 list.push_back(object); 00189 00190 m2mbase_stub::string_value = name->c_str(); 00191 m2mbase_stub::mode_value = M2MBase::Static; 00192 00193 00194 CHECK(nsdl->create_nsdl_list_structure(list)== true); 00195 00196 m2mresource_stub::bool_value = true; 00197 m2mbase_stub::mode_value = M2MBase::Dynamic; 00198 00199 m2mresource_stub::list.push_back(res_instance); 00200 m2mresourceinstance_stub::base_type = M2MBase::Resource; 00201 00202 CHECK(nsdl->create_nsdl_list_structure(list)== true); 00203 00204 m2mbase_stub::mode_value = M2MBase::Directory; 00205 CHECK(nsdl->create_nsdl_list_structure(list)== true); 00206 00207 list.clear(); 00208 delete object; 00209 delete name; 00210 name = NULL; 00211 m2mobject_stub::instance_list.clear(); 00212 delete instance; 00213 instance = NULL; 00214 m2mobjectinstance_stub::resource_list.clear(); 00215 delete create_resource; 00216 create_resource = NULL; 00217 00218 m2mresource_stub::list.clear(); 00219 delete res_instance; 00220 res_instance = NULL; 00221 } 00222 00223 void Test_M2MNsdlInterface::test_delete_nsdl_resource() 00224 { 00225 common_stub::int_value = 0; 00226 M2MObject *object = new M2MObject("name", "name"); 00227 00228 CHECK(nsdl->remove_nsdl_resource(object) == false); 00229 00230 common_stub::int_value = 1; 00231 00232 CHECK(nsdl->remove_nsdl_resource(object) == true); 00233 delete object; 00234 } 00235 00236 void Test_M2MNsdlInterface::test_create_bootstrap_resource() 00237 { 00238 common_stub::uint_value = 11; 00239 CHECK(nsdl->create_bootstrap_resource(NULL, "") == true); 00240 00241 common_stub::uint_value = 0; 00242 CHECK(nsdl->create_bootstrap_resource(NULL, "") == false); 00243 } 00244 00245 void Test_M2MNsdlInterface::test_send_register_message() 00246 { 00247 common_stub::uint_value = 12; 00248 common_stub::int_value = 0; 00249 CHECK(nsdl->send_register_message(NULL,4,100,SN_NSDL_ADDRESS_TYPE_IPV6) == true); 00250 00251 common_stub::uint_value = 0; 00252 CHECK(nsdl->send_register_message(NULL,4,100,SN_NSDL_ADDRESS_TYPE_IPV6) == false); 00253 } 00254 00255 void Test_M2MNsdlInterface::test_send_update_registration() 00256 { 00257 common_stub::uint_value = 23; 00258 nsdl->_nsdl_handle = (nsdl_s*)malloc(sizeof(1)); 00259 CHECK(nsdl->send_update_registration(120) == true); 00260 00261 // Update lifetime value 00262 common_stub::uint_value = 1; 00263 CHECK(nsdl->send_update_registration(100) == true); 00264 00265 // Lifetime value is 0, don't change the existing lifetime value 00266 common_stub::uint_value = 1; 00267 CHECK(nsdl->send_update_registration(0) == true); 00268 00269 free(nsdl->_nsdl_handle); 00270 } 00271 00272 void Test_M2MNsdlInterface::test_send_unregister_message() 00273 { 00274 common_stub::uint_value = 22; 00275 CHECK(nsdl->send_unregister_message() == true); 00276 00277 // Unreg already in progress 00278 common_stub::uint_value = 0; 00279 CHECK(nsdl->send_unregister_message() == true); 00280 } 00281 00282 void Test_M2MNsdlInterface::test_memory_alloc() 00283 { 00284 CHECK(nsdl->memory_alloc(0) == 0); 00285 uint8_t *ptr = 0; 00286 ptr = (uint8_t*)nsdl->memory_alloc(sizeof(uint8_t)); 00287 CHECK(ptr != NULL); 00288 nsdl->memory_free(ptr); 00289 } 00290 00291 void Test_M2MNsdlInterface::test_memory_free() 00292 { 00293 uint8_t *ptr = (uint8_t*)nsdl->memory_alloc(sizeof(uint8_t)); 00294 nsdl->memory_free((void*)ptr); 00295 //memory leak test will fail, if there is a leak, so no need for CHECK 00296 } 00297 00298 void Test_M2MNsdlInterface::test_send_to_server_callback() 00299 { 00300 uint8_t *data_ptr = (uint8_t*)malloc(sizeof(uint8_t)); 00301 uint16_t data_len = sizeof(uint8_t); 00302 sn_nsdl_addr_s *address = (sn_nsdl_addr_s *)malloc(sizeof(sn_nsdl_addr_s)); 00303 00304 nsdl->send_to_server_callback(NULL, SN_NSDL_PROTOCOL_COAP, data_ptr,data_len,address); 00305 CHECK(observer->message_ready == true); 00306 00307 free(data_ptr); 00308 free(address); 00309 } 00310 00311 void Test_M2MNsdlInterface::test_received_from_server_callback() 00312 { 00313 nsdl_s* handle = (nsdl_s*)malloc(sizeof(nsdl_s)); 00314 memset(handle,0,sizeof(nsdl_s)); 00315 00316 sn_coap_hdr_s *coap_header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s)); 00317 memset(coap_header, 0, sizeof(sn_coap_hdr_s)); 00318 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_CREATED; 00319 00320 00321 coap_header->options_list_ptr = (sn_coap_options_list_s *)malloc(sizeof(sn_coap_options_list_s)); 00322 memset(coap_header->options_list_ptr, 0, sizeof(sn_coap_options_list_s)); 00323 00324 coap_header->options_list_ptr->max_age = 2; 00325 00326 coap_header->options_list_ptr->location_path_len = 2; 00327 coap_header->options_list_ptr->location_path_ptr = (uint8_t *)malloc(sizeof(coap_header->options_list_ptr->location_path_len)); 00328 memset(coap_header->options_list_ptr->location_path_ptr, 0, sizeof(coap_header->options_list_ptr->location_path_len)); 00329 00330 observer->data_processed = false; 00331 observer->registered = false; 00332 nsdl->received_from_server_callback(handle,coap_header,NULL); 00333 CHECK(observer->data_processed == true); 00334 CHECK(observer->registered == true); 00335 00336 free(nsdl->_endpoint->lifetime_ptr); 00337 nsdl->_endpoint->lifetime_ptr = NULL; 00338 00339 free(nsdl->_endpoint->location_ptr); 00340 nsdl->_endpoint->location_ptr = NULL; 00341 00342 uint8_t life1[] = {"120"}; 00343 nsdl->_endpoint->lifetime_ptr = (uint8_t*)malloc(sizeof(life1)); 00344 memcpy(nsdl->_endpoint->lifetime_ptr,life1,sizeof(life1)); 00345 nsdl->_endpoint->lifetime_len = (uint8_t)sizeof(life1); 00346 00347 observer->data_processed = false; 00348 observer->registered = false; 00349 nsdl->received_from_server_callback(handle,coap_header,NULL); 00350 CHECK(observer->data_processed == true); 00351 CHECK(observer->registered == true); 00352 00353 free(coap_header->options_list_ptr->location_path_ptr); 00354 coap_header->options_list_ptr->location_path_ptr = NULL; 00355 00356 free(coap_header->options_list_ptr); 00357 coap_header->options_list_ptr = NULL; 00358 00359 free(nsdl->_endpoint->lifetime_ptr); 00360 nsdl->_endpoint->lifetime_ptr = NULL; 00361 00362 uint8_t life[] = {"120"}; 00363 nsdl->_endpoint->lifetime_ptr = (uint8_t*)malloc(sizeof(life)); 00364 memcpy(nsdl->_endpoint->lifetime_ptr,life,sizeof(life)); 00365 nsdl->_endpoint->lifetime_len = (uint8_t)sizeof(life); 00366 00367 observer->data_processed = false; 00368 observer->registered = false; 00369 00370 nsdl->received_from_server_callback(handle,coap_header,NULL); 00371 CHECK(observer->data_processed == true); 00372 CHECK(observer->registered == true); 00373 free(nsdl->_endpoint->lifetime_ptr); 00374 nsdl->_endpoint->lifetime_ptr = NULL; 00375 00376 uint8_t big_life[] = {"4000"}; 00377 nsdl->_endpoint->lifetime_ptr = (uint8_t*)malloc(sizeof(big_life)); 00378 memcpy(nsdl->_endpoint->lifetime_ptr,big_life,sizeof(big_life)); 00379 nsdl->_endpoint->lifetime_len = (uint8_t)sizeof(big_life); 00380 observer->data_processed = false; 00381 observer->registered = false; 00382 nsdl->received_from_server_callback(handle,coap_header,NULL); 00383 CHECK(observer->data_processed == true); 00384 CHECK(observer->registered == true); 00385 00386 free(nsdl->_endpoint->lifetime_ptr); 00387 nsdl->_endpoint->lifetime_ptr = NULL; 00388 00389 observer->data_processed = false; 00390 observer->registered = false; 00391 00392 uint8_t less_life[] = {"30"}; 00393 nsdl->_endpoint->lifetime_ptr = (uint8_t*)malloc(sizeof(less_life)); 00394 memcpy(nsdl->_endpoint->lifetime_ptr,less_life,sizeof(less_life)); 00395 nsdl->_endpoint->lifetime_len = (uint8_t)sizeof(less_life); 00396 00397 nsdl->received_from_server_callback(handle,coap_header,NULL); 00398 CHECK(observer->data_processed == true); 00399 CHECK(observer->registered == true); 00400 00401 observer->data_processed = false; 00402 observer->registered = false; 00403 observer->unregistered = false; 00404 observer->register_error = false; 00405 00406 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_BAD_REQUEST; 00407 nsdl->received_from_server_callback(handle,coap_header,NULL); 00408 CHECK(observer->data_processed == true); 00409 CHECK(observer->register_error == true); 00410 00411 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_BAD_OPTION; 00412 nsdl->received_from_server_callback(handle,coap_header,NULL); 00413 CHECK(observer->data_processed == true); 00414 CHECK(observer->register_error == true); 00415 00416 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_REQUEST_ENTITY_INCOMPLETE; 00417 nsdl->received_from_server_callback(handle,coap_header,NULL); 00418 CHECK(observer->data_processed == true); 00419 CHECK(observer->register_error == true); 00420 00421 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_PRECONDITION_FAILED; 00422 nsdl->received_from_server_callback(handle,coap_header,NULL); 00423 CHECK(observer->data_processed == true); 00424 CHECK(observer->register_error == true); 00425 00426 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_REQUEST_ENTITY_TOO_LARGE; 00427 nsdl->received_from_server_callback(handle,coap_header,NULL); 00428 CHECK(observer->data_processed == true); 00429 CHECK(observer->register_error == true); 00430 00431 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_UNSUPPORTED_CONTENT_FORMAT; 00432 nsdl->received_from_server_callback(handle,coap_header,NULL); 00433 CHECK(observer->data_processed == true); 00434 CHECK(observer->register_error == true); 00435 00436 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_UNAUTHORIZED; 00437 nsdl->received_from_server_callback(handle,coap_header,NULL); 00438 CHECK(observer->data_processed == true); 00439 CHECK(observer->register_error == true); 00440 00441 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_FORBIDDEN; 00442 nsdl->received_from_server_callback(handle,coap_header,NULL); 00443 CHECK(observer->data_processed == true); 00444 CHECK(observer->register_error == true); 00445 00446 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_NOT_FOUND; 00447 nsdl->received_from_server_callback(handle,coap_header,NULL); 00448 CHECK(observer->data_processed == true); 00449 CHECK(observer->register_error == true); 00450 00451 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_METHOD_NOT_ALLOWED; 00452 nsdl->received_from_server_callback(handle,coap_header,NULL); 00453 CHECK(observer->data_processed == true); 00454 CHECK(observer->register_error == true); 00455 00456 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_BAD_GATEWAY; 00457 coap_header->coap_status = COAP_STATUS_BUILDER_MESSAGE_SENDING_FAILED; 00458 nsdl->received_from_server_callback(handle,coap_header,NULL); 00459 CHECK(observer->data_processed == true); 00460 CHECK(observer->register_error == true); 00461 00462 00463 coap_header->msg_id = 8; 00464 handle->unregister_msg_id = 8; 00465 00466 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_DELETED; 00467 observer->register_error = false; 00468 nsdl->received_from_server_callback(handle,coap_header,NULL); 00469 CHECK(observer->unregistered == true); 00470 00471 observer->register_error = false; 00472 handle->unregister_msg_id = 8; 00473 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_CREATED; 00474 00475 nsdl->received_from_server_callback(handle,coap_header,NULL); 00476 CHECK(observer->register_error == true); 00477 00478 observer->register_error = false; 00479 handle->unregister_msg_id = 8; 00480 coap_header->coap_status = COAP_STATUS_BUILDER_MESSAGE_SENDING_FAILED; 00481 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_BAD_REQUEST; 00482 nsdl->received_from_server_callback(handle,coap_header,NULL); 00483 CHECK(observer->register_error == true); 00484 00485 observer->register_error = false; 00486 handle->unregister_msg_id = 8; 00487 coap_header->coap_status = COAP_STATUS_PARSER_ERROR_IN_HEADER; 00488 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_METHOD_NOT_ALLOWED; 00489 nsdl->received_from_server_callback(handle,coap_header,NULL); 00490 CHECK(observer->register_error == true); 00491 00492 observer->register_error = false; 00493 handle->unregister_msg_id = 8; 00494 coap_header->coap_status = COAP_STATUS_PARSER_ERROR_IN_HEADER; 00495 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_GATEWAY_TIMEOUT; 00496 nsdl->received_from_server_callback(handle,coap_header,NULL); 00497 CHECK(observer->register_error == true); 00498 00499 // Receive initial bs message with error 00500 handle->unregister_msg_id = 0; 00501 observer->boot_error = false; 00502 nsdl->_bootstrap_id = 8; 00503 handle->bootstrap_msg_id = 8; 00504 coap_header->coap_status = COAP_STATUS_BUILDER_MESSAGE_SENDING_FAILED; 00505 nsdl->received_from_server_callback(handle,coap_header,NULL); 00506 CHECK(observer->boot_error == true); 00507 00508 //_update_id == msg_id 00509 handle->update_register_msg_id = 10; 00510 coap_header->msg_id = 10; 00511 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_CHANGED; 00512 nsdl->received_from_server_callback(handle,coap_header,NULL); 00513 CHECK(observer->register_updated == true); 00514 00515 coap_header->msg_id = 10; 00516 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_FORBIDDEN; 00517 coap_header->coap_status = COAP_STATUS_OK; 00518 nsdl->received_from_server_callback(handle,coap_header,NULL); 00519 CHECK(observer->register_error == true); 00520 00521 coap_header->msg_id = 11; 00522 CHECK( 0== nsdl->received_from_server_callback(handle,coap_header,NULL) ); 00523 00524 handle->update_register_msg_id = 0; 00525 handle->register_msg_id = 0; 00526 handle->unregister_msg_id = 0; 00527 coap_header->msg_id = 10; 00528 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 00529 00530 uint8_t object[] = {"name"}; 00531 00532 coap_header->uri_path_ptr = object; 00533 coap_header->uri_path_len = sizeof(object); 00534 00535 CHECK(0== nsdl->received_from_server_callback(handle,coap_header,NULL)); 00536 00537 //Test methods that are not allowed 00538 coap_header->msg_code = COAP_MSG_CODE_REQUEST_GET; 00539 nsdl->received_from_server_callback(handle,coap_header,NULL); 00540 00541 coap_header->msg_code = COAP_MSG_CODE_REQUEST_PUT; 00542 nsdl->received_from_server_callback(handle,coap_header,NULL); 00543 00544 coap_header->msg_code = COAP_MSG_CODE_REQUEST_DELETE; 00545 nsdl->received_from_server_callback(handle,coap_header,NULL); 00546 00547 //Continue testing with post method 00548 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 00549 00550 uint8_t object_instance[] = {"name/0"}; 00551 00552 coap_header->uri_path_ptr = object_instance; 00553 coap_header->uri_path_len = sizeof(object_instance); 00554 00555 coap_header->payload_ptr = (uint8_t*)malloc(1); 00556 m2mobjectinstance_stub::bool_value = true; 00557 CHECK(0== nsdl->received_from_server_callback(handle,coap_header,NULL)); 00558 00559 M2MObject *obj = new M2MObject("name", "name"); 00560 00561 m2mbase_stub::string_value = "name"; 00562 m2mbase_stub::nsdl_resource = 00563 (sn_nsdl_dynamic_resource_parameters_s*) malloc(sizeof(sn_nsdl_dynamic_resource_parameters_s)); 00564 m2mbase_stub::nsdl_resource->static_resource_parameters = 00565 (sn_nsdl_static_resource_parameters_s*) malloc(sizeof(sn_nsdl_static_resource_parameters_s)); 00566 m2mbase_stub::nsdl_resource->static_resource_parameters->path = (uint8_t*)malloc(5); 00567 m2mbase_stub::nsdl_resource->static_resource_parameters->path[0] = 'n'; 00568 m2mbase_stub::nsdl_resource->static_resource_parameters->path[1] = 'a'; 00569 m2mbase_stub::nsdl_resource->static_resource_parameters->path[2] = 'm'; 00570 m2mbase_stub::nsdl_resource->static_resource_parameters->path[3] = 'e'; 00571 m2mbase_stub::nsdl_resource->static_resource_parameters->path[4] = '\0'; 00572 m2mbase_stub::nsdl_resource->static_resource_parameters->pathlen = 5; 00573 00574 nsdl->_object_list.push_back(obj); 00575 00576 m2mobject_stub::inst = new M2MObjectInstance(*obj, "name", "", ""); 00577 00578 m2mobject_stub::header = (sn_coap_hdr_s*) malloc(sizeof(sn_coap_hdr_s)); 00579 memset(m2mobject_stub::header,0,sizeof(sn_coap_hdr_s)); 00580 00581 m2mobjectinstance_stub::header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s)); 00582 memset(m2mobjectinstance_stub::header, 0, sizeof(sn_coap_hdr_s)); 00583 m2mobjectinstance_stub::header->msg_code = COAP_MSG_CODE_RESPONSE_BAD_REQUEST; 00584 common_stub::coap_header = NULL; 00585 m2mobjectinstance_stub::base_type = M2MBase::ObjectInstance; 00586 00587 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,NULL)); 00588 m2mobjectinstance_stub::header = NULL; 00589 00590 m2mobjectinstance_stub::header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s)); 00591 memset(m2mobjectinstance_stub::header, 0, sizeof(sn_coap_hdr_s)); 00592 00593 m2mobjectinstance_stub::header->msg_code = COAP_MSG_CODE_RESPONSE_CREATED; 00594 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,NULL)); 00595 m2mobjectinstance_stub::header = NULL; 00596 00597 free(coap_header->payload_ptr); 00598 coap_header->payload_ptr = NULL; 00599 00600 CHECK(0== nsdl->received_from_server_callback(handle,coap_header,NULL)); 00601 00602 delete m2mobject_stub::inst; 00603 nsdl->_object_list.clear(); 00604 delete obj; 00605 00606 free(coap_header->payload_ptr); 00607 free(m2mobject_stub::header); 00608 m2mobject_stub::header = NULL; 00609 00610 uint8_t object_instance1[] = {"name/65536"}; 00611 00612 coap_header->uri_path_ptr = object_instance1; 00613 coap_header->uri_path_len = sizeof(object_instance1); 00614 00615 obj = new M2MObject("name", "name"); 00616 00617 nsdl->_object_list.push_back(obj); 00618 00619 m2mobject_stub::inst = new M2MObjectInstance(*obj, "name", "", ""); 00620 00621 m2mobject_stub::header = (sn_coap_hdr_s*) malloc(sizeof(sn_coap_hdr_s)); 00622 memset(m2mobject_stub::header,0,sizeof(sn_coap_hdr_s)); 00623 00624 CHECK(0== nsdl->received_from_server_callback(handle,coap_header,NULL)); 00625 00626 delete m2mobject_stub::inst; 00627 nsdl->_object_list.clear(); 00628 delete obj; 00629 00630 free(m2mobject_stub::header); 00631 00632 uint8_t resource[] = {"name/0/resource"}; 00633 00634 coap_header->uri_path_ptr = resource; 00635 coap_header->uri_path_len = sizeof(resource); 00636 00637 CHECK(0== nsdl->received_from_server_callback(handle,coap_header,NULL)); 00638 00639 // Test EMPTY ACK 00640 coap_header->msg_code = COAP_MSG_CODE_EMPTY; 00641 obj = new M2MObject("0", "0"); 00642 m2mbase_stub::string_value = "0"; 00643 nsdl->_object_list.push_back(obj); 00644 m2mobject_stub::inst = new M2MObjectInstance(*obj, "name", "", ""); 00645 00646 uint8_t *token = (uint8_t*) malloc(4); 00647 token[0] = 't'; 00648 token[1] = 'o'; 00649 token[2] = 'k'; 00650 token[3] = 'e'; 00651 coap_header->token_ptr = token; 00652 coap_header->token_len = 4; 00653 00654 M2MResource res2(*m2mobject_stub::inst, "test","test",M2MResourceInstance::STRING,false, "test"); 00655 m2mbase_stub::object_token = token; 00656 m2mbase_stub::object_token_len = 4; 00657 m2mobject_stub::base_type = M2MBase::Resource; 00658 res2.set_observation_token(token, 4); 00659 00660 m2mobjectinstance_stub::resource_list.push_back(&res2); 00661 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,NULL)); 00662 00663 // Test RESET message 00664 coap_header->msg_type = COAP_MSG_TYPE_RESET; 00665 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,NULL)); 00666 m2mobject_stub::base_type = M2MBase::Object; 00667 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,NULL)); 00668 m2mobject_stub::base_type = M2MBase::ObjectInstance; 00669 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,NULL)); 00670 m2mobject_stub::base_type = M2MBase::ResourceInstance; 00671 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,NULL)); 00672 free(token); 00673 delete m2mobject_stub::inst; 00674 delete obj; 00675 nsdl->_object_list.clear(); 00676 00677 00678 // Bootstrap cases start from here 00679 // handle_bootstrap_put_message() invalid object name 00680 common_stub::coap_header = (sn_coap_hdr_s *) malloc(sizeof(sn_coap_hdr_s)); 00681 sn_nsdl_addr_s *address = (sn_nsdl_addr_s *)malloc(sizeof(sn_nsdl_addr_s)); 00682 memset(address, 0, sizeof(sn_nsdl_addr_s)); 00683 address->addr_len = 1; 00684 address->addr_ptr = (uint8_t *)malloc(1); 00685 address->addr_ptr[0] = 1; 00686 address->port = 5683; 00687 handle->oma_bs_address_len = 1; 00688 handle->oma_bs_port = 5683; 00689 handle->oma_bs_address_ptr = (uint8_t *)malloc(1); 00690 handle->oma_bs_address_ptr[0] = 1; 00691 coap_header->msg_code = COAP_MSG_CODE_REQUEST_PUT; 00692 observer->boot_error = false; 00693 CHECK(0== nsdl->received_from_server_callback(handle,coap_header,address)); 00694 CHECK(observer->boot_error == true); 00695 00696 // handle_bootstrap_put_message() invalid content type 00697 obj = new M2MObject("0", "0"); 00698 m2mbase_stub::string_value = "0"; 00699 nsdl->_object_list.push_back(obj); 00700 m2mobject_stub::inst = new M2MObjectInstance(*obj, "name", "", ""); 00701 uint8_t security[] = {"0"}; 00702 coap_header->uri_path_ptr = security; 00703 coap_header->uri_path_len = sizeof(security); 00704 M2MResource res(*m2mobject_stub::inst,"test","test",M2MResourceInstance::STRING,false,"test"); 00705 m2mobjectinstance_stub::resource_list.push_back(&res); 00706 observer->boot_error = false; 00707 m2msecurity_stub::resource = new M2MResource(*m2mobject_stub::inst,"1","type",M2MResourceInstance::STRING,false,"1"); 00708 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00709 CHECK(observer->boot_error == true); 00710 00711 // handle_bootstrap_put_message() success 00712 coap_header->token_ptr = String::convert_integer_to_array(1,coap_header->token_len); 00713 observer->boot_error = false; 00714 m2mtlvdeserializer_stub::is_object_bool_value = true; 00715 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00716 CHECK(observer->boot_error == true); 00717 coap_header->content_format = sn_coap_content_format_e(99); 00718 observer->boot_error = false; 00719 observer->boot_done = false; 00720 m2mtlvdeserializer_stub::is_object_bool_value = true; 00721 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00722 CHECK(observer->boot_error == false); 00723 00724 // handle_bootstrap_put_message() TLV parsing fails 00725 observer->boot_error = false; 00726 observer->boot_done = false; 00727 m2mtlvdeserializer_stub::is_object_bool_value = false; 00728 m2mtlvdeserializer_stub::bool_value = true; 00729 m2mtlvdeserializer_stub::error = M2MTLVDeserializer::NotAllowed; 00730 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00731 CHECK(observer->boot_error == true); 00732 delete m2mobject_stub::inst; 00733 nsdl->_object_list.clear(); 00734 delete obj; 00735 00736 // handle_bootstrap_put_message() TLV object instance 00737 obj = new M2MObject("1", "1"); 00738 m2mbase_stub::string_value = "1"; 00739 nsdl->_object_list.push_back(obj); 00740 m2mobject_stub::inst = new M2MObjectInstance(*obj, "name","", ""); 00741 uint8_t server[] = {"1"}; 00742 coap_header->uri_path_ptr = server; 00743 coap_header->uri_path_len = 1; 00744 00745 observer->boot_error = false; 00746 observer->boot_done = false; 00747 m2mtlvdeserializer_stub::is_object_bool_value = false; 00748 m2mtlvdeserializer_stub::bool_value = true; 00749 m2mtlvdeserializer_stub::error = M2MTLVDeserializer::None; 00750 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00751 CHECK(observer->boot_error == false); 00752 00753 // handle_bootstrap_put_message() TLV server object 00754 observer->boot_error = false; 00755 observer->boot_done = false; 00756 m2mtlvdeserializer_stub::is_object_bool_value = true; 00757 m2mtlvdeserializer_stub::bool_value = false; 00758 m2mtlvdeserializer_stub::error = M2MTLVDeserializer::None; 00759 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00760 CHECK(observer->boot_error == false); 00761 00762 // handle_bootstrap_put_message() TLV not resource 00763 observer->boot_error = false; 00764 observer->boot_done = false; 00765 m2mtlvdeserializer_stub::is_object_bool_value = false; 00766 m2mtlvdeserializer_stub::bool_value = false; 00767 m2mtlvdeserializer_stub::error = M2MTLVDeserializer::None; 00768 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00769 CHECK(observer->boot_error == true); 00770 CHECK(nsdl->_security == NULL); 00771 00772 // handle_bootstrap_delete() object name not match 00773 observer->boot_error = false; 00774 nsdl->_bootstrap_id = 8; 00775 handle->bootstrap_msg_id = 8; 00776 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_CHANGED; 00777 coap_header->msg_id = 8; 00778 nsdl->received_from_server_callback(handle,coap_header,NULL); 00779 coap_header->msg_id = 18; 00780 nsdl->_security = new M2MSecurity(M2MSecurity::M2MServer); 00781 observer->boot_done = false; 00782 coap_header->msg_code = COAP_MSG_CODE_REQUEST_DELETE; 00783 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00784 CHECK(observer->boot_error == true); 00785 00786 free(common_stub::coap_header); 00787 common_stub::coap_header = NULL; 00788 00789 // handle_bootstrap_delete() _identity_accepted false 00790 observer->boot_error = false; 00791 observer->boot_done = false; 00792 coap_header->msg_code = COAP_MSG_CODE_REQUEST_DELETE; 00793 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00794 CHECK(observer->boot_error == true); 00795 CHECK(nsdl->_security == NULL); 00796 00797 free(common_stub::coap_header); 00798 common_stub::coap_header = NULL; 00799 00800 // handle_bootstrap_delete() object name not match 00801 observer->boot_error = false; 00802 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_CHANGED; 00803 coap_header->msg_id = 8; 00804 nsdl->received_from_server_callback(handle,coap_header,NULL); 00805 coap_header->msg_id = 18; 00806 uint8_t object_name[] = {"0/0"}; 00807 coap_header->uri_path_ptr = object_name; 00808 coap_header->uri_path_len = 3; 00809 observer->boot_done = false; 00810 coap_header->msg_code = COAP_MSG_CODE_REQUEST_DELETE; 00811 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00812 CHECK(observer->boot_error == true); 00813 CHECK(nsdl->_security == NULL); 00814 00815 free(common_stub::coap_header); 00816 common_stub::coap_header = NULL; 00817 00818 // handle_bootstrap_delete() object name not match 00819 observer->boot_error = false; 00820 coap_header->msg_code = COAP_MSG_CODE_RESPONSE_CHANGED; 00821 coap_header->msg_id = 8; 00822 nsdl->received_from_server_callback(handle,coap_header,NULL); 00823 coap_header->msg_id = 18; 00824 uint8_t invalid[] = {"0/0/1"}; 00825 coap_header->uri_path_ptr = invalid; 00826 coap_header->uri_path_len = 5; 00827 observer->boot_done = false; 00828 coap_header->msg_code = COAP_MSG_CODE_REQUEST_DELETE; 00829 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00830 CHECK(observer->boot_error == true); 00831 CHECK(nsdl->_security == NULL); 00832 00833 //handle_bootstrap_finished() path does not match 00834 coap_header->uri_path_ptr = server; 00835 coap_header->uri_path_len = 1; 00836 nsdl->_security = new M2MSecurity(M2MSecurity::M2MServer); 00837 observer->boot_error = false; 00838 observer->boot_done = false; 00839 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 00840 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00841 CHECK(observer->boot_error == true); 00842 CHECK(nsdl->_security == NULL); 00843 00844 //handle_bootstrap_finished() send coap response 00845 nsdl->_security = new M2MSecurity(M2MSecurity::M2MServer); 00846 common_stub::coap_header = (sn_coap_hdr_s *) malloc(sizeof(sn_coap_hdr_s)); 00847 m2msecurity_stub::string_value = new String("coaps://"); 00848 observer->boot_error = false; 00849 observer->boot_done = false; 00850 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 00851 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00852 CHECK(observer->boot_error == true); 00853 CHECK(nsdl->_security == NULL); 00854 00855 //handle_bootstrap_finished() success no security 00856 nsdl->_security = new M2MSecurity(M2MSecurity::M2MServer); 00857 m2msecurity_stub::sec_mode = M2MSecurity::NoSecurity; 00858 m2msecurity_stub::int_value = true; 00859 m2msecurity_stub::bool_value = false; 00860 observer->boot_error = false; 00861 observer->boot_wait = false; 00862 observer->boot_done = false; 00863 coap_header->uri_path_ptr = (uint8_t*)malloc(2); 00864 coap_header->uri_path_len = 2; 00865 coap_header->uri_path_ptr[0] = 'b'; 00866 coap_header->uri_path_ptr[1] = 's'; 00867 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 00868 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00869 CHECK(observer->boot_error == false); 00870 CHECK(observer->boot_wait == true); 00871 CHECK(observer->boot_done == false); 00872 00873 //handle_bootstrap_finished() success certificate 00874 nsdl->_security = new M2MSecurity(M2MSecurity::M2MServer); 00875 m2msecurity_stub::sec_mode = M2MSecurity::Certificate; 00876 m2mresourceinstance_stub::int_value = 10; 00877 m2msecurity_stub::int_value = true; 00878 m2msecurity_stub::bool_value = false; 00879 observer->boot_error = false; 00880 observer->boot_wait = false; 00881 observer->boot_done = false; 00882 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 00883 00884 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00885 CHECK(observer->boot_error == false); 00886 CHECK(observer->boot_wait == true); 00887 CHECK(observer->boot_done == false); 00888 00889 //handle_bootstrap_finished() fail, Psk not supported 00890 nsdl->_security = new M2MSecurity(M2MSecurity::M2MServer); 00891 m2msecurity_stub::sec_mode = M2MSecurity::Psk; 00892 m2msecurity_stub::int_value = true; 00893 m2msecurity_stub::bool_value = false; 00894 observer->boot_error = false; 00895 observer->boot_done = false; 00896 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 00897 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00898 CHECK(observer->boot_error == true); 00899 CHECK(observer->boot_done == false); 00900 00901 //handle_bootstrap_finished() fail, Bootstrap server 00902 nsdl->_security = new M2MSecurity(M2MSecurity::M2MServer); 00903 m2msecurity_stub::sec_mode = M2MSecurity::Certificate; 00904 m2msecurity_stub::int_value = true; 00905 m2msecurity_stub::bool_value = true; 00906 observer->boot_error = false; 00907 observer->boot_done = false; 00908 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 00909 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00910 CHECK(observer->boot_error == true); 00911 CHECK(observer->boot_done == false); 00912 00913 //handle_bootstrap_finished() fail, key size 0 00914 nsdl->_security = new M2MSecurity(M2MSecurity::M2MServer); 00915 m2msecurity_stub::sec_mode = M2MSecurity::Certificate; 00916 m2msecurity_stub::int_value = false; 00917 m2msecurity_stub::bool_value = false; 00918 m2mresourceinstance_stub::int_value = 0; 00919 observer->boot_error = false; 00920 observer->boot_done = false; 00921 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 00922 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00923 CHECK(observer->boot_error == true); 00924 CHECK(observer->boot_done == false); 00925 00926 //handle_bootstrap_finished() fail, _security null 00927 m2msecurity_stub::sec_mode = M2MSecurity::Certificate; 00928 m2msecurity_stub::int_value = false; 00929 m2msecurity_stub::bool_value = false; 00930 m2mresourceinstance_stub::int_value = 0; 00931 observer->boot_error = false; 00932 observer->boot_done = false; 00933 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 00934 CHECK(0 == nsdl->received_from_server_callback(handle,coap_header,address)); 00935 CHECK(observer->boot_error == true); 00936 CHECK(observer->boot_done == false); 00937 00938 delete m2mobject_stub::inst; 00939 //delete m2mbase_stub::string_value; 00940 //m2mbase_stub::string_value = NULL; 00941 nsdl->_object_list.clear(); 00942 m2mobjectinstance_stub::resource_list.clear(); 00943 delete obj; 00944 delete m2msecurity_stub::string_value; 00945 delete m2msecurity_stub::resource; 00946 00947 free(m2mbase_stub::nsdl_resource->static_resource_parameters->path); 00948 free(m2mbase_stub::nsdl_resource->static_resource_parameters); 00949 free(m2mbase_stub::nsdl_resource); 00950 00951 free(common_stub::coap_header); 00952 free(address->addr_ptr); 00953 free(address); 00954 free(coap_header->token_ptr); 00955 free(coap_header->uri_path_ptr); 00956 free(coap_header); 00957 free(handle->oma_bs_address_ptr); 00958 free(handle); 00959 } 00960 00961 void Test_M2MNsdlInterface::test_resource_callback() 00962 { 00963 uint8_t value[] = {"name"}; 00964 sn_coap_hdr_s *coap_header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s)); 00965 memset(coap_header,0,sizeof(sn_coap_hdr_s)); 00966 sn_nsdl_addr_s *address = (sn_nsdl_addr_s *)malloc(sizeof(sn_nsdl_addr_s)); 00967 memset(address,0,sizeof(sn_nsdl_addr_s)); 00968 00969 common_stub::coap_header = (sn_coap_hdr_ *)malloc(sizeof(sn_coap_hdr_)); 00970 memset(common_stub::coap_header,0,sizeof(sn_coap_hdr_)); 00971 00972 common_stub::coap_header->payload_ptr =(uint8_t*)malloc(1); 00973 common_stub::coap_header->payload_len = 1; 00974 00975 coap_header->uri_path_ptr = value; 00976 coap_header->uri_path_len = sizeof(value); 00977 00978 common_stub::int_value = 0; 00979 00980 common_stub::coap_header->msg_code = COAP_MSG_CODE_RESPONSE_BAD_REQUEST; 00981 00982 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 00983 00984 common_stub::int_value = 0; 00985 m2mbase_stub::string_value = "name"; 00986 M2MObject *object = new M2MObject("name", "name"); 00987 m2mbase_stub::int_value = 0; 00988 m2mobject_stub::int_value = 1; 00989 m2mbase_stub::nsdl_resource = 00990 (sn_nsdl_dynamic_resource_parameters_s*) malloc(sizeof(sn_nsdl_dynamic_resource_parameters_s)); 00991 m2mbase_stub::nsdl_resource->static_resource_parameters = 00992 (sn_nsdl_static_resource_parameters_s*) malloc(sizeof(sn_nsdl_static_resource_parameters_s)); 00993 m2mbase_stub::nsdl_resource->static_resource_parameters->path = (uint8_t*)malloc(5); 00994 m2mbase_stub::nsdl_resource->static_resource_parameters->path[0] = 'n'; 00995 m2mbase_stub::nsdl_resource->static_resource_parameters->path[1] = 'a'; 00996 m2mbase_stub::nsdl_resource->static_resource_parameters->path[2] = 'm'; 00997 m2mbase_stub::nsdl_resource->static_resource_parameters->path[3] = 'e'; 00998 m2mbase_stub::nsdl_resource->static_resource_parameters->path[4] = '\0'; 00999 m2mbase_stub::nsdl_resource->static_resource_parameters->pathlen = 5; 01000 01001 nsdl->_object_list.push_back(object); 01002 01003 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_COAP) ==0); 01004 01005 coap_header->msg_code = COAP_MSG_CODE_REQUEST_PUT; 01006 m2mobject_stub::bool_value = true; 01007 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_COAP) ==0); 01008 01009 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 01010 01011 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_COAP) ==0); 01012 m2mobject_stub::base_type = M2MBase::ResourceInstance; 01013 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_COAP) ==0); 01014 01015 delete object; 01016 free(m2mbase_stub::nsdl_resource->static_resource_parameters->path); 01017 free(m2mbase_stub::nsdl_resource->static_resource_parameters); 01018 free(m2mbase_stub::nsdl_resource); 01019 01020 free(common_stub::coap_header); 01021 free(address); 01022 free(coap_header); 01023 } 01024 01025 01026 void Test_M2MNsdlInterface::test_resource_callback_get() 01027 { 01028 } 01029 01030 void Test_M2MNsdlInterface::test_resource_callback_put() 01031 { 01032 uint8_t value[] = {"name/0/resource"}; 01033 sn_coap_hdr_s *coap_header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s)); 01034 memset(coap_header,0,sizeof(sn_coap_hdr_s)); 01035 sn_nsdl_addr_s *address = (sn_nsdl_addr_s *)malloc(sizeof(sn_nsdl_addr_s)); 01036 memset(address,0,sizeof(sn_nsdl_addr_s)); 01037 01038 coap_header->uri_path_ptr = value; 01039 coap_header->uri_path_len = sizeof(value); 01040 01041 coap_header->msg_code = COAP_MSG_CODE_REQUEST_PUT; 01042 01043 common_stub::int_value = 0; 01044 m2mbase_stub::string_value = "name"; 01045 01046 M2MObject *object = new M2MObject("name", "name"); 01047 M2MObjectInstance* instance = new M2MObjectInstance(*object,"name","", ""); 01048 01049 M2MResource* create_resource = new M2MResource(*instance, 01050 "res", 01051 "res", 01052 M2MResourceInstance::INTEGER, 01053 false, 01054 "res"); 01055 m2mobject_stub::int_value = 2; 01056 m2mobject_stub::instance_list.push_back(instance); 01057 01058 m2mobjectinstance_stub::resource_list.push_back(create_resource); 01059 m2mobjectinstance_stub::int_value = 1; 01060 01061 nsdl->_object_list.push_back(object); 01062 01063 m2mbase_stub::operation = M2MBase::PUT_ALLOWED; 01064 01065 coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s)); 01066 01067 uint8_t query[] = {"pmax=200&pmin=120"}; 01068 coap_header->options_list_ptr->uri_query_ptr = (uint8_t*)malloc(sizeof(query)); 01069 coap_header->options_list_ptr->uri_query_len = sizeof(query); 01070 01071 m2mbase_stub::bool_value = true; 01072 01073 common_stub::coap_header = (sn_coap_hdr_ *)malloc(sizeof(sn_coap_hdr_)); 01074 memset(common_stub::coap_header,0,sizeof(sn_coap_hdr_)); 01075 common_stub::coap_header->msg_code = COAP_MSG_CODE_RESPONSE_BAD_REQUEST; 01076 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01077 01078 m2mobject_stub::base_type = M2MBase::Resource; 01079 m2mbase_stub::base_type = M2MBase::Resource; 01080 m2mobject_stub::bool_value = true; 01081 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01082 01083 m2mobject_stub::base_type = M2MBase::ObjectInstance; 01084 m2mbase_stub::base_type = M2MBase::ObjectInstance; 01085 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01086 01087 m2mbase_stub::base_type = M2MBase::Object; 01088 m2mbase_stub::bool_value = false; 01089 01090 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01091 01092 delete object; 01093 m2mobject_stub::instance_list.clear(); 01094 delete instance; 01095 // m2mobjectinstance_stub::resource_list.clear(); 01096 delete create_resource; 01097 01098 free(coap_header->options_list_ptr->uri_query_ptr); 01099 free(coap_header->options_list_ptr); 01100 if(common_stub::coap_header){ 01101 if( common_stub::coap_header->options_list_ptr){ 01102 free(common_stub::coap_header->options_list_ptr); 01103 common_stub::coap_header->options_list_ptr = NULL; 01104 } 01105 free(common_stub::coap_header); 01106 common_stub::coap_header = NULL; 01107 } 01108 free(coap_header); 01109 free(address); 01110 01111 m2mbase_stub::clear(); 01112 common_stub::clear(); 01113 m2mobject_stub::clear(); 01114 m2mobjectinstance_stub::clear(); 01115 } 01116 01117 void Test_M2MNsdlInterface::test_resource_callback_post() 01118 { 01119 uint8_t value[] = {"name/0/name"}; 01120 sn_coap_hdr_s *coap_header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s)); 01121 memset(coap_header,0,sizeof(sn_coap_hdr_s)); 01122 sn_nsdl_addr_s *address = (sn_nsdl_addr_s *)malloc(sizeof(sn_nsdl_addr_s)); 01123 memset(address,0,sizeof(sn_nsdl_addr_s)); 01124 01125 coap_header->uri_path_ptr = value; 01126 coap_header->uri_path_len = sizeof(value); 01127 01128 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST; 01129 01130 common_stub::int_value = 0; 01131 m2mbase_stub::string_value = "name"; 01132 m2mbase_stub::bool_value = false; 01133 M2MObject *object = new M2MObject("name", "name"); 01134 M2MObjectInstance* instance = new M2MObjectInstance(*object,"name","",""); 01135 M2MResource* create_resource = new M2MResource(*instance, 01136 "name", 01137 "name", 01138 M2MResourceInstance::INTEGER, 01139 false, 01140 "name"); 01141 m2mobject_stub::int_value = 2; 01142 m2mobject_stub::instance_list.push_back(instance); 01143 01144 m2mobjectinstance_stub::resource_list.push_back(create_resource); 01145 m2mobjectinstance_stub::int_value = 1; 01146 01147 nsdl->_object_list.push_back(object); 01148 01149 m2mbase_stub::operation = M2MBase::POST_ALLOWED; 01150 01151 coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s)); 01152 01153 uint8_t query[] = {"pmax=200&pmin=120"}; 01154 coap_header->options_list_ptr->uri_query_ptr = (uint8_t*)malloc(sizeof(query)); 01155 coap_header->options_list_ptr->uri_query_len = sizeof(query); 01156 01157 m2mbase_stub::bool_value = true; 01158 01159 m2mbase_stub::nsdl_resource = 01160 (sn_nsdl_dynamic_resource_parameters_s*) malloc(sizeof(sn_nsdl_dynamic_resource_parameters_s)); 01161 m2mbase_stub::nsdl_resource->static_resource_parameters = 01162 (sn_nsdl_static_resource_parameters_s*) malloc(sizeof(sn_nsdl_static_resource_parameters_s)); 01163 m2mbase_stub::nsdl_resource->static_resource_parameters->path = (uint8_t*)malloc(5); 01164 m2mbase_stub::nsdl_resource->static_resource_parameters->path[0] = 'n'; 01165 m2mbase_stub::nsdl_resource->static_resource_parameters->path[1] = 'a'; 01166 m2mbase_stub::nsdl_resource->static_resource_parameters->path[2] = 'm'; 01167 m2mbase_stub::nsdl_resource->static_resource_parameters->path[3] = 'e'; 01168 m2mbase_stub::nsdl_resource->static_resource_parameters->path[4] = '\0'; 01169 m2mbase_stub::nsdl_resource->static_resource_parameters->pathlen = 5; 01170 01171 common_stub::coap_header = (sn_coap_hdr_ *)malloc(sizeof(sn_coap_hdr_)); 01172 memset(common_stub::coap_header,0,sizeof(sn_coap_hdr_)); 01173 common_stub::coap_header->msg_code = COAP_MSG_CODE_RESPONSE_BAD_REQUEST; 01174 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01175 01176 m2mobject_stub::base_type = M2MBase::Resource; 01177 m2mbase_stub::base_type = M2MBase::Resource; 01178 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01179 01180 m2mobject_stub::base_type = M2MBase::ResourceInstance; 01181 m2mbase_stub::base_type = M2MBase::ResourceInstance; 01182 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01183 01184 m2mobject_stub::base_type = M2MBase::ObjectInstance; 01185 m2mbase_stub::base_type = M2MBase::ObjectInstance; 01186 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01187 01188 m2mbase_stub::base_type = M2MBase::Object; 01189 m2mbase_stub::bool_value = false; 01190 01191 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01192 01193 delete object; 01194 m2mobject_stub::instance_list.clear(); 01195 delete instance; 01196 m2mobjectinstance_stub::resource_list.clear(); 01197 delete create_resource; 01198 01199 free(coap_header->options_list_ptr->uri_query_ptr); 01200 free(coap_header->options_list_ptr); 01201 if(common_stub::coap_header){ 01202 if( common_stub::coap_header->options_list_ptr){ 01203 free(common_stub::coap_header->options_list_ptr); 01204 common_stub::coap_header->options_list_ptr = NULL; 01205 } 01206 free(common_stub::coap_header); 01207 common_stub::coap_header = NULL; 01208 } 01209 free(coap_header); 01210 free(address); 01211 free(m2mbase_stub::nsdl_resource->static_resource_parameters->path); 01212 free(m2mbase_stub::nsdl_resource->static_resource_parameters); 01213 free(m2mbase_stub::nsdl_resource); 01214 01215 m2mbase_stub::clear(); 01216 common_stub::clear(); 01217 m2mobject_stub::clear(); 01218 m2mobjectinstance_stub::clear(); 01219 } 01220 01221 void Test_M2MNsdlInterface::test_resource_callback_delete() 01222 { 01223 uint8_t value[] = {"name/0"}; 01224 sn_coap_hdr_s *coap_header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s)); 01225 memset(coap_header,0,sizeof(sn_coap_hdr_s)); 01226 sn_nsdl_addr_s *address = (sn_nsdl_addr_s *)malloc(sizeof(sn_nsdl_addr_s)); 01227 memset(address,0,sizeof(sn_nsdl_addr_s)); 01228 01229 common_stub::coap_header = (sn_coap_hdr_ *)malloc(sizeof(sn_coap_hdr_)); 01230 memset(common_stub::coap_header,0,sizeof(sn_coap_hdr_)); 01231 01232 coap_header->uri_path_ptr = value; 01233 coap_header->uri_path_len = sizeof(value); 01234 01235 coap_header->msg_code = COAP_MSG_CODE_REQUEST_DELETE; 01236 common_stub::coap_header->msg_code = COAP_MSG_CODE_RESPONSE_BAD_REQUEST; 01237 common_stub::int_value = 0; 01238 01239 m2mbase_stub::nsdl_resource = 01240 (sn_nsdl_dynamic_resource_parameters_s*) malloc(sizeof(sn_nsdl_dynamic_resource_parameters_s)); 01241 m2mbase_stub::nsdl_resource->static_resource_parameters = 01242 (sn_nsdl_static_resource_parameters_s*) malloc(sizeof(sn_nsdl_static_resource_parameters_s)); 01243 01244 m2mbase_stub::nsdl_resource->static_resource_parameters->path = (uint8_t*)malloc(7); 01245 m2mbase_stub::nsdl_resource->static_resource_parameters->path[0] = 'n'; 01246 m2mbase_stub::nsdl_resource->static_resource_parameters->path[1] = 'a'; 01247 m2mbase_stub::nsdl_resource->static_resource_parameters->path[2] = 'm'; 01248 m2mbase_stub::nsdl_resource->static_resource_parameters->path[3] = 'e'; 01249 m2mbase_stub::nsdl_resource->static_resource_parameters->path[4] = '/'; 01250 m2mbase_stub::nsdl_resource->static_resource_parameters->path[5] = '0'; 01251 m2mbase_stub::nsdl_resource->static_resource_parameters->path[6] = '\0'; 01252 m2mbase_stub::nsdl_resource->static_resource_parameters->pathlen = 7; 01253 01254 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01255 01256 common_stub::int_value = 0; 01257 m2mbase_stub::string_value = "name/0"; 01258 M2MObject *object = new M2MObject("name", "name"); 01259 M2MObjectInstance* instance = new M2MObjectInstance(*object,"name", "", "name/0"); 01260 m2mbase_stub::int_value = 0; 01261 m2mobject_stub::int_value = 1; 01262 m2mobject_stub::bool_value = true; 01263 m2mobject_stub::instance_list.push_back(instance); 01264 m2mobject_stub::base_type = M2MBase::ObjectInstance; 01265 nsdl->_object_list.push_back(object); 01266 01267 m2mbase_stub::operation = M2MBase::DELETE_ALLOWED; 01268 01269 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01270 01271 m2mobject_stub::base_type = M2MBase::Object; 01272 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) ==0); 01273 01274 delete instance; 01275 delete object; 01276 free(m2mbase_stub::nsdl_resource->static_resource_parameters->path); 01277 free(m2mbase_stub::nsdl_resource->static_resource_parameters); 01278 free(m2mbase_stub::nsdl_resource); 01279 free(common_stub::coap_header); 01280 free(address); 01281 free(coap_header); 01282 m2mobject_stub::instance_list.clear(); 01283 } 01284 01285 /* 01286 void Test_M2MNsdlInterface::test_resource_callback_reset() 01287 { 01288 uint8_t value[] = {"name"}; 01289 sn_coap_hdr_s *coap_header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s)); 01290 memset(coap_header,0,sizeof(sn_coap_hdr_s)); 01291 sn_nsdl_addr_s *address = (sn_nsdl_addr_s *)malloc(sizeof(sn_nsdl_addr_s)); 01292 memset(address,0,sizeof(sn_nsdl_addr_s)); 01293 01294 coap_header->uri_path_ptr = value; 01295 coap_header->uri_path_len = sizeof(value); 01296 01297 coap_header->msg_type = COAP_MSG_TYPE_RESET; 01298 m2mobjectinstance_stub::base_type = M2MBase::Object; 01299 String *name = new String("name"); 01300 common_stub::int_value = 0; 01301 m2mbase_stub::string_value = name; 01302 M2MObject *object = new M2MObject(*name); 01303 M2MObjectInstance* instance = new M2MObjectInstance(*name,*object); 01304 M2MResource* create_resource = new M2MResource(*instance, 01305 *name, 01306 *name, 01307 M2MResourceInstance::INTEGER, 01308 M2MResource::Dynamic,false); 01309 m2mobject_stub::int_value = 2; 01310 m2mobject_stub::instance_list.push_back(instance); 01311 01312 m2mobjectinstance_stub::resource_list.push_back(create_resource); 01313 m2mobjectinstance_stub::int_value = 1; 01314 01315 nsdl->_object_list.push_back(object); 01316 // No response for RESET message 01317 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) == 1); 01318 01319 01320 m2mobject_stub::base_type = M2MBase::ObjectInstance; 01321 // No response for RESET message 01322 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) == 1); 01323 01324 m2mobject_stub::base_type = M2MBase::Resource; 01325 // No response for RESET message 01326 CHECK(nsdl->resource_callback(NULL,coap_header,address,SN_NSDL_PROTOCOL_HTTP) == 1); 01327 01328 delete instance; 01329 delete object; 01330 delete name; 01331 delete create_resource; 01332 free(address); 01333 free(coap_header); 01334 m2mobject_stub::instance_list.clear(); 01335 m2mobjectinstance_stub::resource_list.clear(); 01336 //nsdl->_object_list.clear(); 01337 } 01338 */ 01339 void Test_M2MNsdlInterface::test_process_received_data() 01340 { 01341 uint8_t *data = (uint8_t*)malloc(sizeof(uint8_t)); 01342 uint16_t data_size = sizeof(uint16_t); 01343 sn_nsdl_addr_s *address = (sn_nsdl_addr_s *)malloc(sizeof(sn_nsdl_addr_s)); 01344 01345 common_stub::int_value = 0; 01346 01347 CHECK(nsdl->process_received_data(data,data_size,address) == true); 01348 01349 common_stub::int_value = -1; 01350 01351 CHECK(nsdl->process_received_data(data,data_size,address) == false); 01352 01353 free(address); 01354 free(data); 01355 common_stub::clear(); 01356 } 01357 01358 void Test_M2MNsdlInterface::test_stop_timers() 01359 { 01360 // Check if there is no memory leak or crash 01361 nsdl->stop_timers(); 01362 } 01363 01364 void Test_M2MNsdlInterface::test_timer_expired() 01365 { 01366 nsdl->timer_expired(M2MTimerObserver::NsdlExecution); 01367 CHECK(nsdl->_counter_for_nsdl == 1); 01368 01369 if( nsdl->_endpoint == NULL){ 01370 nsdl->_endpoint = (sn_nsdl_ep_parameters_s*)nsdl->memory_alloc(sizeof(sn_nsdl_ep_parameters_s)); 01371 } 01372 nsdl->_endpoint->lifetime_ptr = (uint8_t*)malloc(sizeof(uint8_t)); 01373 01374 // For checking the registration update 01375 nsdl->timer_expired(M2MTimerObserver::Registration); 01376 01377 nsdl->delete_endpoint(); 01378 CHECK(nsdl->_endpoint == NULL); 01379 } 01380 01381 void Test_M2MNsdlInterface::test_observation_to_be_sent() 01382 { 01383 Vector<uint16_t> instance_list_ids; 01384 m2mbase_stub::clear(); 01385 M2MObject *object = new M2MObject("name", "name"); 01386 M2MObjectInstance* instance = new M2MObjectInstance(*object, "name", "", ""); 01387 M2MResource *res = new M2MResource(*instance,"res", "res", M2MResourceInstance::INTEGER,false, "res"); 01388 M2MResource *res2 = new M2MResource(*instance,"res2", "res2", M2MResourceInstance::INTEGER,false, "res2"); 01389 01390 01391 M2MResourceInstance* res_instance = new M2MResourceInstance(*res, 01392 "res", "res", 01393 M2MResourceInstance::INTEGER,0,"",false); 01394 M2MResourceInstance* res_instance_1 = new M2MResourceInstance(*res2, 01395 "res2", "res2", 01396 M2MResourceInstance::INTEGER,0,"",false); 01397 m2mresource_stub::list.clear(); 01398 m2mresource_stub::list.push_back(res_instance); 01399 m2mresource_stub::list.push_back(res_instance_1); 01400 m2mresource_stub::int_value = 2; 01401 instance_list_ids.push_back(0); 01402 01403 uint8_t value[] = {"value"}; 01404 m2mresourceinstance_stub::value = (uint8_t *)malloc(sizeof(value)); 01405 memset( m2mresourceinstance_stub::value, 0, sizeof(value)); 01406 memcpy(m2mresourceinstance_stub::value,value,sizeof(value)); 01407 m2mresourceinstance_stub::int_value = sizeof(value); 01408 01409 m2mbase_stub::uint16_value = 321; 01410 m2mbase_stub::string_value = "token"; 01411 01412 m2mresourceinstance_stub::base_type = M2MBase::Resource; 01413 01414 nsdl->_nsdl_handle = (nsdl_s*)malloc(sizeof(nsdl_s)); 01415 memset(nsdl->_nsdl_handle,0,sizeof(nsdl_s)); 01416 sn_nsdl_oma_server_info_t * nsp_address = (sn_nsdl_oma_server_info_t *)malloc(sizeof(sn_nsdl_oma_server_info_t)); 01417 memset(nsp_address,0,sizeof(sn_nsdl_oma_server_info_t)); 01418 sn_nsdl_addr_s* address = (sn_nsdl_addr_s*)malloc(sizeof(sn_nsdl_addr_s)); 01419 memset(address,0,sizeof(sn_nsdl_addr_s)); 01420 01421 nsdl->_nsdl_handle->nsp_address_ptr = nsp_address; 01422 memset(nsdl->_nsdl_handle->nsp_address_ptr,0,sizeof(sn_nsdl_oma_server_info_t)); 01423 nsdl->_nsdl_handle->nsp_address_ptr->omalw_address_ptr = address; 01424 01425 //CHECK if nothing crashes 01426 common_stub::coap_header = (sn_coap_hdr_s *) malloc(sizeof(sn_coap_hdr_s)); 01427 common_stub::coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s)); 01428 nsdl->observation_to_be_sent(res2, 1, instance_list_ids); 01429 free(common_stub::coap_header); 01430 01431 m2mresourceinstance_stub::resource_type = M2MResource::OPAQUE; 01432 01433 //CHECK if nothing crashes 01434 common_stub::coap_header = (sn_coap_hdr_s *) malloc(sizeof(sn_coap_hdr_s)); 01435 common_stub::coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s)); 01436 nsdl->observation_to_be_sent(res2, 1, instance_list_ids); 01437 free(common_stub::coap_header); 01438 01439 m2mresource_stub::list.clear(); 01440 m2mresource_stub::int_value = 0; 01441 01442 //CHECK if nothing crashes 01443 common_stub::coap_header = (sn_coap_hdr_s *) malloc(sizeof(sn_coap_hdr_s)); 01444 common_stub::coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s)); 01445 nsdl->observation_to_be_sent(res, 500, instance_list_ids); 01446 free(common_stub::coap_header); 01447 01448 M2MObjectInstance *object_instance = new M2MObjectInstance(*object, "name", "",""); 01449 m2mobject_stub::int_value = 1; 01450 m2mobject_stub::base_type = M2MBase::Object; 01451 m2mobject_stub::inst = object_instance; 01452 m2mobjectinstance_stub::resource_list.push_back(res); 01453 nsdl->_object_list.push_back(object); 01454 instance_list_ids.push_back(1); 01455 //CHECK if nothing crashes 01456 common_stub::coap_header = (sn_coap_hdr_s *) malloc(sizeof(sn_coap_hdr_s)); 01457 common_stub::coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s)); 01458 nsdl->observation_to_be_sent(object, 1, instance_list_ids); 01459 free(common_stub::coap_header); 01460 01461 common_stub::coap_header = (sn_coap_hdr_s *) malloc(sizeof(sn_coap_hdr_s)); 01462 common_stub::coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s)); 01463 nsdl->observation_to_be_sent(object, 500, instance_list_ids, true); 01464 free(common_stub::coap_header); 01465 01466 //CHECK if nothing crashes 01467 m2mobjectinstance_stub::base_type = M2MBase::ObjectInstance; 01468 common_stub::coap_header = (sn_coap_hdr_s *) malloc(sizeof(sn_coap_hdr_s)); 01469 common_stub::coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s)); 01470 nsdl->observation_to_be_sent(object_instance, 1, instance_list_ids); 01471 free(common_stub::coap_header); 01472 01473 common_stub::coap_header = (sn_coap_hdr_s *) malloc(sizeof(sn_coap_hdr_s)); 01474 common_stub::coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s)); 01475 nsdl->observation_to_be_sent(object_instance, 500, instance_list_ids); 01476 free(common_stub::coap_header); 01477 01478 free(m2mresourceinstance_stub::value); 01479 m2mresourceinstance_stub::value = NULL; 01480 01481 m2mbase_stub::clear(); 01482 m2mresourceinstance_stub::clear(); 01483 m2mobjectinstance_stub::clear(); 01484 m2mobject_stub::clear(); 01485 m2mresource_stub::list.clear(); 01486 delete res; 01487 res = NULL; 01488 01489 delete res2; 01490 res2 = NULL; 01491 01492 delete res_instance; 01493 res_instance = NULL; 01494 01495 delete res_instance_1; 01496 res_instance_1 = NULL; 01497 01498 delete object_instance; 01499 object_instance = NULL; 01500 01501 delete object; 01502 object = NULL; 01503 01504 delete instance; 01505 instance = NULL; 01506 01507 free(nsp_address); 01508 free(address); 01509 free(nsdl->_nsdl_handle); 01510 } 01511 01512 void Test_M2MNsdlInterface::test_resource_to_be_deleted() 01513 { 01514 //Checking coverage for the code 01515 M2MObject *object = new M2MObject("name", "name"); 01516 nsdl->resource_to_be_deleted(object); 01517 delete object; 01518 } 01519 01520 void Test_M2MNsdlInterface::test_value_updated() 01521 { 01522 M2MObject *object = new M2MObject("name", "name"); 01523 M2MObjectInstance *object_instance = new M2MObjectInstance(*object, "name", "", ""); 01524 M2MResource *resource = new M2MResource(*object_instance, 01525 "resource_name", 01526 "resource_type", 01527 M2MResourceInstance::INTEGER, 01528 false, 01529 "resource_name"); 01530 01531 M2MResourceInstance *resource_instance = new M2MResourceInstance(*resource, 01532 "resource_name", 01533 "resource_type", 01534 M2MResourceInstance::INTEGER, 01535 0,"",false); 01536 01537 m2mobject_stub::base_type = M2MBase::Object; 01538 m2mbase_stub::string_value = "name"; 01539 m2mbase_stub::operation = M2MBase::GET_ALLOWED; 01540 nsdl->value_updated(object,"name"); 01541 CHECK(observer->value_update == true); 01542 observer->value_update = false; 01543 01544 m2mobjectinstance_stub::base_type = M2MBase::ObjectInstance; 01545 01546 nsdl->value_updated(object_instance,"name/0"); 01547 CHECK(observer->value_update == true); 01548 observer->value_update = false; 01549 01550 common_stub::resource = (sn_nsdl_dynamic_resource_parameters_s*)malloc(sizeof(sn_nsdl_dynamic_resource_parameters_s)); 01551 memset(common_stub::resource,0, sizeof(sn_nsdl_dynamic_resource_parameters_s)); 01552 01553 common_stub::resource->static_resource_parameters = 01554 (sn_nsdl_static_resource_parameters_s*)malloc(sizeof(sn_nsdl_static_resource_parameters_s)); 01555 memset(common_stub::resource->static_resource_parameters,0, sizeof(sn_nsdl_static_resource_parameters_s)); 01556 01557 common_stub::resource->static_resource_parameters->resource = (uint8_t*)malloc(2); 01558 memset(common_stub::resource->static_resource_parameters->resource,0, 2); 01559 01560 common_stub::resource->static_resource_parameters->mode = SN_GRS_STATIC; 01561 m2mbase_stub::mode_value = M2MBase::Static; 01562 01563 common_stub::resource->observable = false; 01564 m2mbase_stub::bool_value = true; 01565 01566 m2mresourceinstance_stub::int_value = 2; 01567 uint8_t value[] = "1"; 01568 m2mresourceinstance_stub::value = value; 01569 01570 m2mresourceinstance_stub::base_type = M2MBase::Resource; 01571 01572 nsdl->value_updated(resource,"name/0/name"); 01573 CHECK(observer->value_update == true); 01574 observer->value_update = false; 01575 01576 m2mresourceinstance_stub::clear(); 01577 free(common_stub::resource->static_resource_parameters->resource); 01578 free(common_stub::resource->static_resource_parameters); 01579 free(common_stub::resource); 01580 common_stub::resource = NULL; 01581 common_stub::clear(); 01582 01583 m2mresourceinstance_stub::base_type = M2MBase::ResourceInstance; 01584 01585 common_stub::resource = (sn_nsdl_dynamic_resource_parameters_s*)malloc(sizeof(sn_nsdl_dynamic_resource_parameters_s)); 01586 memset(common_stub::resource,0, sizeof(sn_nsdl_dynamic_resource_parameters_s)); 01587 01588 common_stub::resource->static_resource_parameters = 01589 (sn_nsdl_static_resource_parameters_s*)malloc(sizeof(sn_nsdl_static_resource_parameters_s)); 01590 memset(common_stub::resource->static_resource_parameters,0, sizeof(sn_nsdl_static_resource_parameters_s)); 01591 01592 common_stub::resource->static_resource_parameters->resource = (uint8_t*)malloc(2); 01593 memset(common_stub::resource->static_resource_parameters->resource,0, 2); 01594 01595 common_stub::resource->static_resource_parameters->mode = SN_GRS_STATIC; 01596 m2mbase_stub::mode_value = M2MBase::Static; 01597 01598 m2mresourceinstance_stub::int_value = 2; 01599 m2mresourceinstance_stub::value = value; 01600 01601 nsdl->value_updated(resource_instance,"name/0/name/0"); 01602 CHECK(observer->value_update == true); 01603 observer->value_update = false; 01604 01605 m2mbase_stub::is_value_updated_function_set = true; 01606 nsdl->value_updated(resource_instance,"name/0/name/0"); 01607 CHECK(observer->value_update == false); 01608 observer->value_update = false; 01609 01610 m2mobject_stub::clear(); 01611 m2mobjectinstance_stub::clear(); 01612 01613 m2mresourceinstance_stub::clear(); 01614 01615 free(common_stub::resource->static_resource_parameters->resource); 01616 free(common_stub::resource->static_resource_parameters); 01617 free(common_stub::resource); 01618 01619 common_stub::resource = NULL; 01620 common_stub::clear(); 01621 01622 delete resource_instance; 01623 delete resource; 01624 delete object_instance; 01625 delete object; 01626 } 01627 01628 01629 void Test_M2MNsdlInterface::test_find_resource() 01630 { 01631 m2mbase_stub::string_value = "name"; 01632 m2mbase_stub::object_instance_name = "name/0"; 01633 m2mbase_stub::resource_name_inst = "name/0/resource_name/0"; 01634 m2mbase_stub::resource_name = "name/0/resource_name"; 01635 m2mbase_stub::find_resource = true; 01636 uint8_t *token = (uint8_t*) malloc(4); 01637 token[0] = 't'; 01638 token[1] = 'o'; 01639 token[2] = 'k'; 01640 token[3] = 'e'; 01641 m2mbase_stub::object_token = token; 01642 m2mbase_stub::object_token_len = 4; 01643 01644 uint8_t *inst_token = (uint8_t*) malloc(4); 01645 inst_token[0] = 't'; 01646 inst_token[1] = 'o'; 01647 inst_token[2] = 'k'; 01648 inst_token[3] = 'k'; 01649 m2mbase_stub::object_inst_token = inst_token; 01650 m2mbase_stub::object_inst_token_len = 4; 01651 01652 uint8_t *resource_token = (uint8_t*) malloc(4); 01653 resource_token[0] = 't'; 01654 resource_token[1] = 'k'; 01655 resource_token[2] = 'k'; 01656 resource_token[3] = 'k'; 01657 m2mbase_stub::resource_token = resource_token; 01658 m2mbase_stub::resource_token_len = 4; 01659 01660 M2MObject *object = new M2MObject("name", "name"); 01661 M2MObjectInstance *object_instance = new M2MObjectInstance(*object,"name/0", "","name/0"); 01662 M2MResource *resource = new M2MResource(*object_instance, 01663 "resource_name", 01664 "resource_type", 01665 M2MResourceInstance::INTEGER, 01666 false, 01667 "resource_name"); 01668 01669 M2MResourceInstance *resource_instance = new M2MResourceInstance(*resource, 01670 "0", 01671 "resource_type", 01672 M2MResourceInstance::INTEGER,0,"0",false); 01673 01674 m2mobjectinstance_stub::base_type = M2MBase::ObjectInstance; 01675 m2mobject_stub::instance_list.push_back(object_instance); 01676 m2mobjectinstance_stub::resource_list.push_back(resource); 01677 m2mresource_stub::list.push_back(resource_instance); 01678 m2mobject_stub::base_type = M2MBase::Object; 01679 nsdl->_object_list.push_back(object); 01680 m2mresource_stub::bool_value = true; 01681 CHECK(nsdl->find_resource("name") == object); 01682 CHECK(nsdl->find_resource("name1") == NULL); 01683 CHECK(nsdl->find_resource("name", token, 4) == object); 01684 CHECK(nsdl->find_resource("name", token, 5) == NULL); 01685 01686 m2mbase_stub::ret_counter = 0; 01687 CHECK(nsdl->find_resource("name/0") == object_instance); 01688 m2mbase_stub::ret_counter = 0; 01689 CHECK(nsdl->find_resource("name/0", inst_token, 4) == object_instance); 01690 m2mbase_stub::ret_counter = 0; 01691 01692 CHECK(nsdl->find_resource("name/0/resource_name") == resource); 01693 m2mbase_stub::ret_counter = 0; 01694 CHECK(nsdl->find_resource("name/0/resource_name", resource_token, 4) == resource); 01695 01696 m2mbase_stub::ret_counter = 0; 01697 CHECK(nsdl->find_resource("name/0/resource_name/0") == resource_instance); 01698 01699 free(token); 01700 free(inst_token); 01701 free(resource_token); 01702 01703 m2mobject_stub::clear(); 01704 m2mobjectinstance_stub::clear(); 01705 01706 m2mresourceinstance_stub::clear(); 01707 m2mresource_stub::clear(); 01708 m2mobjectinstance_stub::clear(); 01709 m2mobject_stub::clear(); 01710 01711 delete resource_instance; 01712 delete resource; 01713 delete object_instance; 01714 delete object; 01715 } 01716 01717 void Test_M2MNsdlInterface::test_remove_object() 01718 { 01719 M2MObject *obj = new M2MObject("name", "name"); 01720 nsdl->_object_list.push_back(obj); 01721 01722 nsdl->remove_object((M2MBase*)obj); 01723 01724 CHECK(nsdl->_object_list.empty() == true); 01725 01726 nsdl->_object_list.clear(); 01727 delete obj; 01728 } 01729 01730 void Test_M2MNsdlInterface::test_add_object_to_list() 01731 { 01732 M2MObject *obj = new M2MObject("name", "name"); 01733 nsdl->_object_list.push_back(obj); 01734 01735 nsdl->add_object_to_list(obj); 01736 CHECK(nsdl->_object_list.size() == 1); 01737 01738 nsdl->_object_list.clear(); 01739 delete obj; 01740 } 01741 01742 void Test_M2MNsdlInterface::test_send_delayed_response() 01743 { 01744 common_stub::int_value = 0; 01745 m2mbase_stub::int_value = 0; 01746 01747 M2MObject *object = new M2MObject("name", "name"); 01748 M2MObjectInstance* instance = new M2MObjectInstance(*object, "name", "", ""); 01749 nsdl->_nsdl_handle = (nsdl_s*)malloc(sizeof(nsdl_s)); 01750 memset(nsdl->_nsdl_handle,0,sizeof(nsdl_s)); 01751 01752 sn_nsdl_oma_server_info_t * nsp_address = (sn_nsdl_oma_server_info_t *)malloc(sizeof(sn_nsdl_oma_server_info_t)); 01753 memset(nsp_address,0,sizeof(sn_nsdl_oma_server_info_t)); 01754 sn_nsdl_addr_s* address = (sn_nsdl_addr_s*)malloc(sizeof(sn_nsdl_addr_s)); 01755 memset(address,0,sizeof(sn_nsdl_addr_s)); 01756 01757 M2MResource* resource = new M2MResource(*instance, 01758 "name", 01759 "name", 01760 M2MResourceInstance::INTEGER, 01761 false, 01762 "name"); 01763 01764 uint8_t val[] = {"name"}; 01765 m2mresource_stub::delayed_token = (uint8_t*)malloc(sizeof(val)); 01766 memcpy(m2mresource_stub::delayed_token,val,sizeof(val)); 01767 m2mresource_stub::delayed_token_len = sizeof(val); 01768 01769 m2mresourceinstance_stub::base_type = M2MBase::Resource; 01770 01771 nsdl->_nsdl_handle->nsp_address_ptr = nsp_address; 01772 memset(nsdl->_nsdl_handle->nsp_address_ptr,0,sizeof(sn_nsdl_oma_server_info_t)); 01773 nsdl->_nsdl_handle->nsp_address_ptr->omalw_address_ptr = address; 01774 01775 nsdl->send_delayed_response(resource); 01776 01777 free(nsp_address); 01778 free(address); 01779 free(nsdl->_nsdl_handle); 01780 01781 delete object; 01782 delete instance; 01783 delete resource; 01784 free(m2mresource_stub::delayed_token); 01785 m2mresource_stub::delayed_token = NULL; 01786 m2mresource_stub::delayed_token_len = 0; 01787 } 01788 01789 void Test_M2MNsdlInterface::test_get_nsdl_handle() 01790 { 01791 CHECK(nsdl->get_nsdl_handle() == nsdl->_nsdl_handle); 01792 } 01793 01794 void Test_M2MNsdlInterface::test_endpoint_name() 01795 { 01796 String endpoint = "test"; 01797 nsdl->_endpoint_name = endpoint; 01798 CHECK(nsdl->endpoint_name() == endpoint); 01799 }
Generated on Tue Jul 12 2022 21:20:29 by
1.7.2