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.
Dependencies: MAX44000 PWM_Tone_Library nexpaq_mdk
Fork of LED_Demo by
test_m2minterfaceimpl.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_m2minterfaceimpl.h" 00018 #include "m2minterfaceobserver.h" 00019 #include "m2mconnectionhandler_stub.h" 00020 #include "m2msecurity_stub.h" 00021 #include "m2mnsdlinterface_stub.h" 00022 #include "m2mobject_stub.h" 00023 #include "m2mobjectinstance_stub.h" 00024 #include "m2mbase.h" 00025 00026 entropy_cb ent_cb; 00027 00028 class TestObserver : public M2MInterfaceObserver { 00029 00030 public: 00031 TestObserver() : val_updated(false), error_occured(false), 00032 registered(false), unregistered(false), bootstrapped(false) 00033 { 00034 } 00035 00036 virtual ~TestObserver(){} 00037 void bootstrap_done(M2MSecurity */*server_object*/){ 00038 bootstrapped = true; 00039 } 00040 void object_registered(M2MSecurity */*security_object*/, 00041 const M2MServer &/*server_object*/) { 00042 registered = true; 00043 } 00044 00045 void object_unregistered(M2MSecurity */*server_object*/){ 00046 unregistered = true; 00047 } 00048 00049 void registration_updated(M2MSecurity */*security_object*/, 00050 const M2MServer &/*server_object*/){ 00051 registered = true; 00052 } 00053 00054 void error(M2MInterface::Error /*error*/){ 00055 error_occured = true; 00056 } 00057 00058 void value_updated(M2MBase *, M2MBase::BaseType ){ 00059 val_updated = true; 00060 } 00061 00062 bool val_updated; 00063 bool error_occured; 00064 bool registered; 00065 bool unregistered; 00066 bool bootstrapped; 00067 }; 00068 00069 class M2MBaseTest : public M2MBase 00070 { 00071 public: 00072 M2MBaseTest() : M2MBase("a", M2MBase::Static){} 00073 }; 00074 00075 Test_M2MInterfaceImpl::Test_M2MInterfaceImpl() 00076 { 00077 observer = new TestObserver(); 00078 impl = new M2MInterfaceImpl(*observer, 00079 "endpoint_name", 00080 "endpoint_type", 00081 120, 00082 8000, 00083 "domain"); 00084 } 00085 00086 Test_M2MInterfaceImpl:: ~Test_M2MInterfaceImpl() 00087 { 00088 delete observer; 00089 delete impl; 00090 } 00091 00092 void Test_M2MInterfaceImpl::test_constructor() 00093 { 00094 TestObserver obs; 00095 00096 M2MInterfaceImpl* obj = new M2MInterfaceImpl(obs, 00097 "endpoint_name", 00098 "endpoint_type", 00099 120, 00100 8000, 00101 "domain", 00102 M2MInterface::TCP); 00103 CHECK(obj->_current_state == 0); 00104 //TODO: Check rest of variables 00105 delete obj; 00106 00107 obj = new M2MInterfaceImpl(obs, 00108 "endpoint_name", 00109 "endpoint_type", 00110 120, 00111 8000, 00112 "domain", 00113 M2MInterface::TCP_QUEUE); 00114 00115 delete obj; 00116 } 00117 00118 void Test_M2MInterfaceImpl::test_bootstrap() 00119 { 00120 M2MSecurity *sec = new M2MSecurity(M2MSecurity::Bootstrap); 00121 m2msecurity_stub::int_value = 2; 00122 String *val = new String("coaps://[2001:12:12:23::23:FF]:5685"); 00123 00124 m2msecurity_stub::string_value = val; 00125 m2mnsdlinterface_stub::bool_value = true; 00126 m2mconnectionhandler_stub::bool_value = true; 00127 00128 impl->bootstrap(sec); 00129 00130 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_BOOTSTRAP); 00131 00132 delete val; 00133 00134 val = new String("coaps://[10.45.3.83:5685"); 00135 00136 impl->_register_ongoing = false; 00137 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00138 00139 m2msecurity_stub::string_value = val; 00140 m2mnsdlinterface_stub::bool_value = true; 00141 m2mconnectionhandler_stub::bool_value = true; 00142 00143 impl->bootstrap(sec); 00144 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00145 00146 delete val; 00147 00148 val = new String("coaps://10.45.3.83]:5685"); 00149 00150 impl->_register_ongoing = false; 00151 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00152 00153 m2msecurity_stub::string_value = val; 00154 m2mnsdlinterface_stub::bool_value = true; 00155 m2mconnectionhandler_stub::bool_value = true; 00156 00157 impl->bootstrap(sec); 00158 00159 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00160 00161 delete val; 00162 00163 val = new String("coaps://10.45.3.83:5685"); 00164 00165 impl->_register_ongoing = false; 00166 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00167 00168 m2msecurity_stub::string_value = val; 00169 m2mnsdlinterface_stub::bool_value = true; 00170 m2mconnectionhandler_stub::bool_value = true; 00171 00172 impl->bootstrap(sec); 00173 00174 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_BOOTSTRAP); 00175 00176 delete val; 00177 00178 val = new String("coap://10.45.3.83:5685"); 00179 m2msecurity_stub::string_value = val; 00180 m2mconnectionhandler_stub::bool_value = true; 00181 00182 impl->bootstrap(sec); 00183 00184 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_BOOTSTRAP); 00185 00186 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00187 m2mconnectionhandler_stub::bool_value = false; 00188 00189 impl->bootstrap(sec); 00190 00191 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00192 CHECK(observer->error_occured == true); 00193 00194 // Ignore the event. 00195 impl->_current_state = M2MInterfaceImpl::STATE_WAITING; 00196 impl->bootstrap(sec); 00197 00198 m2mconnectionhandler_stub::bool_value = true; 00199 00200 impl->bootstrap(sec); 00201 00202 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00203 CHECK(observer->error_occured == true); 00204 00205 delete val; 00206 val = NULL; 00207 00208 delete sec; 00209 } 00210 00211 void Test_M2MInterfaceImpl::test_cancel_bootstrap() 00212 { 00213 // Check for coverage, currently no implementation 00214 impl->cancel_bootstrap(); 00215 } 00216 00217 void Test_M2MInterfaceImpl::test_register_object() 00218 { 00219 M2MSecurity *sec = new M2MSecurity(M2MSecurity::M2MServer); 00220 m2msecurity_stub::int_value = 2; 00221 00222 M2MObject *object = new M2MObject("test"); 00223 M2MObjectInstance *ins = object->create_object_instance(); 00224 ins->create_dynamic_resource("test","type",M2MResourceInstance::STRING,false,false); 00225 00226 M2MObjectList list; 00227 list.push_back(object); 00228 00229 String *val = new String("coaps://[2001:12:12:23::23:FF]:5685"); 00230 m2msecurity_stub::string_value = val; 00231 m2mnsdlinterface_stub::bool_value = true; 00232 m2mconnectionhandler_stub::bool_value = true; 00233 impl->register_object(sec,list); 00234 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER); 00235 00236 impl->_register_ongoing = false; 00237 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00238 impl->register_object(sec,list); 00239 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER); 00240 00241 delete val; 00242 val = new String("coaps://[10.45.3.83:5685"); 00243 impl->_register_ongoing = false; 00244 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00245 m2msecurity_stub::string_value = val; 00246 m2mnsdlinterface_stub::bool_value = true; 00247 m2mconnectionhandler_stub::bool_value = true; 00248 00249 delete impl->_security; 00250 impl->_security = NULL; 00251 sec = new M2MSecurity(M2MSecurity::M2MServer); 00252 impl->register_object(sec,list); 00253 00254 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00255 CHECK(observer->error_occured == true); 00256 observer->error_occured = false; 00257 delete val; 00258 val = new String("coaps://10.45.3.83]:5685"); 00259 00260 impl->_register_ongoing = false; 00261 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00262 00263 m2msecurity_stub::string_value = val; 00264 m2mnsdlinterface_stub::bool_value = true; 00265 m2mconnectionhandler_stub::bool_value = true; 00266 00267 delete impl->_security; 00268 impl->_security = NULL; 00269 sec = new M2MSecurity(M2MSecurity::M2MServer); 00270 impl->register_object(sec,list); 00271 00272 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00273 CHECK(observer->error_occured == true); 00274 00275 observer->error_occured = false; 00276 delete val; 00277 val = new String("coaps://10.45.3.83:5685"); 00278 delete impl->_security; 00279 impl->_security = NULL; 00280 sec = new M2MSecurity(M2MSecurity::M2MServer); 00281 00282 impl->_register_ongoing = false; 00283 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00284 00285 m2msecurity_stub::string_value = val; 00286 m2mnsdlinterface_stub::bool_value = true; 00287 m2mconnectionhandler_stub::bool_value = true; 00288 00289 impl->register_object(sec,list); 00290 00291 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER); 00292 00293 observer->error_occured = false; 00294 delete val; 00295 val = new String("coap://10.45.3.83:5685"); 00296 delete impl->_security; 00297 impl->_security = NULL; 00298 sec = new M2MSecurity(M2MSecurity::M2MServer); 00299 00300 impl->_register_ongoing = false; 00301 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00302 00303 m2msecurity_stub::string_value = val; 00304 m2mnsdlinterface_stub::bool_value = true; 00305 m2mconnectionhandler_stub::bool_value = true; 00306 00307 impl->register_object(sec,list); 00308 00309 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER); 00310 00311 delete val; 00312 val = new String("coap://10.45.3.83:5685"); 00313 impl->register_object(sec,list); 00314 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER); 00315 00316 00317 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00318 m2mconnectionhandler_stub::bool_value = true; 00319 m2mnsdlinterface_stub::bool_value = false; 00320 00321 delete impl->_security; 00322 impl->_security = NULL; 00323 sec = new M2MSecurity(M2MSecurity::M2MServer); 00324 impl->register_object(sec,list); 00325 00326 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00327 CHECK(observer->error_occured == true); 00328 00329 00330 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00331 m2mconnectionhandler_stub::bool_value = false; 00332 m2mnsdlinterface_stub::bool_value = true; 00333 00334 impl->register_object(sec,list); 00335 00336 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00337 CHECK(observer->error_occured == true); 00338 00339 00340 impl->_register_ongoing = false; 00341 impl->_current_state = M2MInterfaceImpl::STATE_BOOTSTRAP; 00342 m2mconnectionhandler_stub::bool_value = true; 00343 m2mnsdlinterface_stub::bool_value = true; 00344 00345 impl->register_object(sec,list); 00346 00347 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_BOOTSTRAP); 00348 CHECK(observer->error_occured == true); 00349 00350 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00351 m2mconnectionhandler_stub::bool_value = true; 00352 m2mnsdlinterface_stub::bool_value = true; 00353 00354 impl->register_object(sec,list); 00355 00356 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00357 CHECK(observer->error_occured == true); 00358 00359 impl->_current_state = M2MInterfaceImpl::STATE_BOOTSTRAP; 00360 m2mconnectionhandler_stub::bool_value = true; 00361 m2mnsdlinterface_stub::bool_value = true; 00362 00363 impl->register_object(sec,list); 00364 00365 CHECK(observer->error_occured == true); 00366 00367 00368 delete val; 00369 val = NULL; 00370 00371 list.clear(); 00372 delete object; 00373 delete sec; 00374 } 00375 00376 void Test_M2MInterfaceImpl::test_update_registration() 00377 { 00378 impl->_current_state = M2MInterfaceImpl::STATE_REGISTERED; 00379 m2mnsdlinterface_stub::bool_value = true; 00380 impl->update_registration(NULL,120); 00381 00382 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_UPDATE_REGISTRATION); 00383 00384 impl->_update_register_ongoing = false; 00385 impl->_current_state = M2MInterfaceImpl::STATE_REGISTERED; 00386 m2mnsdlinterface_stub::bool_value = false; 00387 impl->update_registration(NULL,120); 00388 00389 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_UPDATE_REGISTRATION); 00390 00391 impl->_current_state = M2MInterfaceImpl::STATE_REGISTERED; 00392 m2mnsdlinterface_stub::bool_value = false; 00393 impl->update_registration(NULL,120); 00394 00395 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTERED); 00396 00397 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00398 impl->update_registration(NULL,120); 00399 00400 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00401 CHECK(observer->error_occured == true); 00402 00403 impl->_update_register_ongoing = false; 00404 impl->_current_state = M2MInterfaceImpl::STATE_BOOTSTRAP; 00405 impl->update_registration(NULL,120); 00406 00407 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_BOOTSTRAP); 00408 CHECK(observer->error_occured == true); 00409 00410 impl->update_registration(NULL,30); 00411 CHECK(observer->error_occured == true); 00412 00413 impl->_update_register_ongoing = true; 00414 impl->update_registration(NULL,120); 00415 CHECK(observer->error_occured == true); 00416 00417 } 00418 00419 void Test_M2MInterfaceImpl::test_unregister_object() 00420 { 00421 impl->_current_state = M2MInterfaceImpl::STATE_REGISTERED; 00422 m2mnsdlinterface_stub::bool_value = true; 00423 00424 impl->unregister_object(NULL); 00425 00426 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00427 00428 impl->_current_state = M2MInterfaceImpl::STATE_REGISTERED; 00429 m2mnsdlinterface_stub::bool_value = false; 00430 00431 impl->unregister_object(NULL); 00432 00433 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00434 CHECK(observer->error_occured == true); 00435 00436 impl->_current_state = M2MInterfaceImpl::STATE_IDLE; 00437 00438 impl->unregister_object(NULL); 00439 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00440 CHECK(observer->error_occured == true); 00441 } 00442 00443 void Test_M2MInterfaceImpl::test_set_queue_sleep_handler() 00444 { 00445 callback_handler cb(this,&Test_M2MInterfaceImpl::test_callback_handler); 00446 impl->set_queue_sleep_handler(cb); 00447 CHECK(impl->_callback_handler != NULL); 00448 00449 callback_handler cb1(NULL); 00450 impl->set_queue_sleep_handler(cb1); 00451 CHECK(impl->_callback_handler == NULL); 00452 } 00453 00454 00455 void Test_M2MInterfaceImpl::test_set_random_number_callback() 00456 { 00457 random_number_cb cb(&test_random_callback); 00458 impl->set_random_number_callback(cb); 00459 } 00460 00461 void Test_M2MInterfaceImpl::test_set_entropy_callback() 00462 { 00463 impl->set_entropy_callback(ent_cb); 00464 } 00465 00466 void Test_M2MInterfaceImpl::test_set_platform_network_handler() 00467 { 00468 void *test = NULL; 00469 impl->set_platform_network_handler(test); 00470 } 00471 00472 void Test_M2MInterfaceImpl::test_coap_message_ready() 00473 { 00474 m2mconnectionhandler_stub::bool_value = true; 00475 uint8_t *data_ptr = (uint8_t *)malloc(sizeof(uint8_t)); 00476 uint16_t data_len = sizeof(uint8_t); 00477 sn_nsdl_addr_s *address_ptr = (sn_nsdl_addr_s*)malloc(sizeof(sn_nsdl_addr_s)); 00478 00479 impl->coap_message_ready(data_ptr,data_len,address_ptr); 00480 00481 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00482 00483 m2mconnectionhandler_stub::bool_value = false; 00484 impl->coap_message_ready(data_ptr,data_len,address_ptr); 00485 00486 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00487 CHECK(observer->error_occured == true); 00488 00489 free(address_ptr); 00490 free(data_ptr); 00491 } 00492 00493 void Test_M2MInterfaceImpl::test_client_registered() 00494 { 00495 impl->client_registered(NULL); 00496 00497 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTERED); 00498 CHECK(observer->registered == true); 00499 } 00500 00501 void Test_M2MInterfaceImpl::test_registration_updated() 00502 { 00503 M2MServer *server = NULL; 00504 impl->registration_updated(*server); 00505 00506 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTERED); 00507 CHECK(observer->registered == true); 00508 } 00509 00510 void Test_M2MInterfaceImpl::test_registration_error() 00511 { 00512 impl->registration_error(1); 00513 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00514 CHECK(observer->error_occured == true); 00515 00516 observer->error_occured = false; 00517 impl->registration_error(1, true); 00518 CHECK(observer->error_occured == false); 00519 } 00520 00521 void Test_M2MInterfaceImpl::test_client_unregistered() 00522 { 00523 impl->client_unregistered(); 00524 00525 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00526 CHECK(observer->unregistered == true); 00527 } 00528 00529 void Test_M2MInterfaceImpl::test_bootstrap_done() 00530 { 00531 M2MSecurity *sec = new M2MSecurity(M2MSecurity::M2MServer); 00532 impl->bootstrap_done(sec); 00533 00534 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_BOOTSTRAPPED); 00535 CHECK(observer->bootstrapped == true); 00536 00537 delete sec; 00538 } 00539 00540 void Test_M2MInterfaceImpl::test_bootstrap_error() 00541 { 00542 impl->bootstrap_error(); 00543 00544 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00545 CHECK(observer->error_occured == true); 00546 } 00547 00548 void Test_M2MInterfaceImpl::test_coap_data_processed() 00549 { 00550 impl->coap_data_processed(); 00551 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00552 } 00553 00554 void Test_M2MInterfaceImpl::test_value_updated() 00555 { 00556 impl->value_updated(NULL); 00557 CHECK(observer->val_updated == false); 00558 00559 M2MBaseTest b; 00560 impl->value_updated(&b); 00561 CHECK(observer->val_updated == true); 00562 } 00563 00564 void Test_M2MInterfaceImpl::test_data_available() 00565 { 00566 uint8_t* data = (uint8_t*)malloc(sizeof(uint8_t)); 00567 uint16_t data_size = sizeof(uint8_t); 00568 M2MConnectionObserver::SocketAddress *address = (M2MConnectionObserver::SocketAddress*) 00569 malloc(sizeof(M2MConnectionObserver::SocketAddress)); 00570 00571 address->_stack = M2MInterface::LwIP_IPv4; 00572 m2mnsdlinterface_stub::bool_value = true; 00573 00574 impl->data_available(data,data_size,*address); 00575 00576 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00577 00578 address->_stack = M2MInterface::LwIP_IPv6; 00579 m2mnsdlinterface_stub::bool_value = true; 00580 00581 impl->data_available(data,data_size,*address); 00582 00583 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00584 00585 address->_stack = M2MInterface::LwIP_IPv4; 00586 m2mnsdlinterface_stub::bool_value = false; 00587 00588 impl->data_available(data,data_size,*address); 00589 00590 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00591 CHECK(observer->error_occured == true); 00592 00593 free(data); 00594 free(address); 00595 } 00596 00597 void Test_M2MInterfaceImpl::test_socket_error() 00598 { 00599 for (int i = 0; i <= MBED_CLIENT_RECONNECTION_COUNT; i++) { 00600 impl->socket_error(M2MConnectionHandler::SSL_CONNECTION_ERROR); 00601 impl->_retry_timer_expired = true; 00602 } 00603 CHECK(observer->error_occured == true); 00604 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00605 00606 observer->error_occured = false; 00607 impl->socket_error(M2MConnectionHandler::SOCKET_READ_ERROR, false); 00608 CHECK(observer->error_occured == true); 00609 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00610 00611 observer->error_occured = false; 00612 impl->socket_error(M2MConnectionHandler::DNS_RESOLVING_ERROR, false); 00613 CHECK(observer->error_occured == true); 00614 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00615 00616 observer->error_occured = false; 00617 impl->socket_error(M2MConnectionHandler::SOCKET_SEND_ERROR, false); 00618 CHECK(observer->error_occured == true); 00619 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00620 00621 observer->error_occured = false; 00622 impl->socket_error(M2MConnectionHandler::SSL_HANDSHAKE_ERROR, false); 00623 CHECK(observer->error_occured == true); 00624 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00625 00626 observer->error_occured = false; 00627 impl->socket_error(M2MConnectionHandler::SOCKET_ABORT, false); 00628 CHECK(observer->error_occured == true); 00629 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00630 00631 observer->error_occured = false; 00632 impl->socket_error(M2MConnectionHandler::ERROR_NONE, false); 00633 CHECK(observer->error_occured == false); 00634 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00635 } 00636 00637 void Test_M2MInterfaceImpl::test_address_ready() 00638 { 00639 M2MConnectionObserver::SocketAddress *address = 00640 (M2MConnectionObserver::SocketAddress*) malloc(sizeof(M2MConnectionObserver::SocketAddress)); 00641 M2MConnectionObserver::ServerType server_type = M2MConnectionObserver::Bootstrap; 00642 uint16_t server_port = 5685; 00643 00644 address->_stack = M2MInterface::LwIP_IPv6; 00645 m2mnsdlinterface_stub::bool_value = true; 00646 00647 impl->address_ready(*address,server_type,server_port); 00648 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_BOOTSTRAP_RESOURCE_CREATED); 00649 00650 address->_stack = M2MInterface::LwIP_IPv4; 00651 m2mnsdlinterface_stub::bool_value = true; 00652 00653 impl->address_ready(*address,server_type,server_port); 00654 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_BOOTSTRAP_RESOURCE_CREATED); 00655 00656 00657 address->_stack = M2MInterface::LwIP_IPv6; 00658 m2mnsdlinterface_stub::bool_value = false; 00659 00660 impl->address_ready(*address,server_type,server_port); 00661 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00662 CHECK(observer->error_occured == true); 00663 00664 // Test for Address resolving for LWM2M server 00665 server_type = M2MConnectionObserver::LWM2MServer; 00666 00667 address->_stack = M2MInterface::LwIP_IPv6; 00668 m2mnsdlinterface_stub::bool_value = true; 00669 00670 impl->address_ready(*address,server_type,server_port); 00671 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER_RESOURCE_CREATED); 00672 00673 address->_stack = M2MInterface::LwIP_IPv4; 00674 m2mnsdlinterface_stub::bool_value = true; 00675 00676 impl->address_ready(*address,server_type,server_port); 00677 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER_RESOURCE_CREATED); 00678 00679 00680 address->_stack = M2MInterface::LwIP_IPv6; 00681 m2mnsdlinterface_stub::bool_value = false; 00682 00683 impl->address_ready(*address,server_type,server_port); 00684 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); 00685 CHECK(observer->error_occured == true); 00686 00687 free(address); 00688 } 00689 00690 void Test_M2MInterfaceImpl::test_data_sent() 00691 { 00692 m2mconnectionhandler_stub::bool_value = true; 00693 00694 impl->data_sent(); 00695 00696 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00697 00698 m2mconnectionhandler_stub::bool_value = false; 00699 00700 impl->data_sent(); 00701 00702 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00703 CHECK(observer->error_occured == false); 00704 00705 impl->_callback_handler = callback_handler(this, &Test_M2MInterfaceImpl::test_callback_handler); 00706 00707 m2mconnectionhandler_stub::bool_value = true; 00708 00709 impl->_binding_mode = M2MInterface::UDP_QUEUE; 00710 impl->data_sent(); 00711 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00712 00713 impl->_binding_mode = M2MInterface::TCP_QUEUE; 00714 impl->data_sent(); 00715 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00716 00717 impl->_binding_mode = M2MInterface::SMS_QUEUE; 00718 impl->data_sent(); 00719 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00720 00721 impl->_binding_mode = M2MInterface::UDP_SMS_QUEUE; 00722 impl->data_sent(); 00723 CHECK(impl->_current_state == M2MInterfaceImpl::STATE_WAITING); 00724 } 00725 00726 void Test_M2MInterfaceImpl::test_timer_expired() 00727 { 00728 visited = false; 00729 impl->_callback_handler = NULL; 00730 impl->timer_expired(M2MTimerObserver::QueueSleep); 00731 CHECK(visited == false); 00732 00733 impl->_callback_handler = callback_handler(this, &Test_M2MInterfaceImpl::test_callback_handler); 00734 00735 visited = false; 00736 impl->timer_expired(M2MTimerObserver::QueueSleep); 00737 CHECK(visited == true); 00738 00739 int port = impl->_listen_port; 00740 impl->timer_expired(M2MTimerObserver::RetryTimer); 00741 CHECK(impl->_listen_port != port); 00742 00743 observer->error_occured = false; 00744 impl->timer_expired(M2MTimerObserver::BootstrapTimer); 00745 CHECK(observer->error_occured == true); 00746 } 00747 00748 void Test_M2MInterfaceImpl::test_callback_handler() 00749 { 00750 visited = true; 00751 } 00752 00753 uint32_t test_random_callback(void) 00754 { 00755 return 1; 00756 }
Generated on Tue Jul 12 2022 12:28:54 by
1.7.2
