A metronome using the FRDM K64F board

Committer:
ram54288
Date:
Sun May 14 18:40:18 2017 +0000
Revision:
0:a7a43371b306
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ram54288 0:a7a43371b306 1 /*
ram54288 0:a7a43371b306 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
ram54288 0:a7a43371b306 3 * SPDX-License-Identifier: Apache-2.0
ram54288 0:a7a43371b306 4 * Licensed under the Apache License, Version 2.0 (the License); you may
ram54288 0:a7a43371b306 5 * not use this file except in compliance with the License.
ram54288 0:a7a43371b306 6 * You may obtain a copy of the License at
ram54288 0:a7a43371b306 7 *
ram54288 0:a7a43371b306 8 * http://www.apache.org/licenses/LICENSE-2.0
ram54288 0:a7a43371b306 9 *
ram54288 0:a7a43371b306 10 * Unless required by applicable law or agreed to in writing, software
ram54288 0:a7a43371b306 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
ram54288 0:a7a43371b306 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ram54288 0:a7a43371b306 13 * See the License for the specific language governing permissions and
ram54288 0:a7a43371b306 14 * limitations under the License.
ram54288 0:a7a43371b306 15 */
ram54288 0:a7a43371b306 16 #include "CppUTest/TestHarness.h"
ram54288 0:a7a43371b306 17 #include "test_nsdlaccesshelper.h"
ram54288 0:a7a43371b306 18 #include "common_stub.h"
ram54288 0:a7a43371b306 19 #include "m2mnsdlinterface_stub.h"
ram54288 0:a7a43371b306 20 #include "m2mnsdlobserver.h"
ram54288 0:a7a43371b306 21 #include "m2mconnectionobserver.h"
ram54288 0:a7a43371b306 22
ram54288 0:a7a43371b306 23 class TestObserver : public M2MNsdlObserver,
ram54288 0:a7a43371b306 24 public M2MConnectionObserver
ram54288 0:a7a43371b306 25 {
ram54288 0:a7a43371b306 26
ram54288 0:a7a43371b306 27 public:
ram54288 0:a7a43371b306 28 TestObserver(){}
ram54288 0:a7a43371b306 29 virtual ~TestObserver(){}
ram54288 0:a7a43371b306 30 void coap_message_ready(uint8_t *,
ram54288 0:a7a43371b306 31 uint16_t,
ram54288 0:a7a43371b306 32 sn_nsdl_addr_s *){
ram54288 0:a7a43371b306 33 message_ready = true;
ram54288 0:a7a43371b306 34 }
ram54288 0:a7a43371b306 35
ram54288 0:a7a43371b306 36 void client_registered(M2MServer *){
ram54288 0:a7a43371b306 37 registered = true;
ram54288 0:a7a43371b306 38 }
ram54288 0:a7a43371b306 39
ram54288 0:a7a43371b306 40 void registration_updated(const M2MServer &){
ram54288 0:a7a43371b306 41
ram54288 0:a7a43371b306 42 }
ram54288 0:a7a43371b306 43
ram54288 0:a7a43371b306 44 void registration_error(uint8_t, bool retry = false){
ram54288 0:a7a43371b306 45 register_error = true;
ram54288 0:a7a43371b306 46 }
ram54288 0:a7a43371b306 47
ram54288 0:a7a43371b306 48 void client_unregistered(){
ram54288 0:a7a43371b306 49 unregistered = true;
ram54288 0:a7a43371b306 50 }
ram54288 0:a7a43371b306 51
ram54288 0:a7a43371b306 52 void bootstrap_done(M2MSecurity *sec){
ram54288 0:a7a43371b306 53 if(sec) {
ram54288 0:a7a43371b306 54 boot_done = true;
ram54288 0:a7a43371b306 55 }
ram54288 0:a7a43371b306 56 }
ram54288 0:a7a43371b306 57
ram54288 0:a7a43371b306 58 void bootstrap_wait(M2MSecurity *sec){
ram54288 0:a7a43371b306 59 if(sec) {
ram54288 0:a7a43371b306 60 boot_wait = true;
ram54288 0:a7a43371b306 61 }
ram54288 0:a7a43371b306 62 }
ram54288 0:a7a43371b306 63 void bootstrap_error(){
ram54288 0:a7a43371b306 64 boot_error = true;
ram54288 0:a7a43371b306 65 }
ram54288 0:a7a43371b306 66
ram54288 0:a7a43371b306 67 void coap_data_processed(){
ram54288 0:a7a43371b306 68 data_processed = true;
ram54288 0:a7a43371b306 69 }
ram54288 0:a7a43371b306 70
ram54288 0:a7a43371b306 71 void value_updated(M2MBase *){
ram54288 0:a7a43371b306 72 }
ram54288 0:a7a43371b306 73
ram54288 0:a7a43371b306 74 void data_available(uint8_t*,
ram54288 0:a7a43371b306 75 uint16_t,
ram54288 0:a7a43371b306 76 const M2MConnectionObserver::SocketAddress &) {
ram54288 0:a7a43371b306 77
ram54288 0:a7a43371b306 78 }
ram54288 0:a7a43371b306 79
ram54288 0:a7a43371b306 80 void socket_error(uint8_t, bool) {
ram54288 0:a7a43371b306 81
ram54288 0:a7a43371b306 82 }
ram54288 0:a7a43371b306 83
ram54288 0:a7a43371b306 84 void address_ready(const M2MConnectionObserver::SocketAddress &,
ram54288 0:a7a43371b306 85 M2MConnectionObserver::ServerType,
ram54288 0:a7a43371b306 86 const uint16_t) {
ram54288 0:a7a43371b306 87
ram54288 0:a7a43371b306 88 }
ram54288 0:a7a43371b306 89
ram54288 0:a7a43371b306 90 void data_sent() {
ram54288 0:a7a43371b306 91
ram54288 0:a7a43371b306 92 }
ram54288 0:a7a43371b306 93
ram54288 0:a7a43371b306 94 bool register_error;
ram54288 0:a7a43371b306 95 bool boot_error;
ram54288 0:a7a43371b306 96 bool boot_wait;
ram54288 0:a7a43371b306 97 bool boot_done;
ram54288 0:a7a43371b306 98 bool registered;
ram54288 0:a7a43371b306 99 bool data_processed;
ram54288 0:a7a43371b306 100 bool unregistered;
ram54288 0:a7a43371b306 101 bool message_ready;
ram54288 0:a7a43371b306 102
ram54288 0:a7a43371b306 103 };
ram54288 0:a7a43371b306 104
ram54288 0:a7a43371b306 105 Test_NsdlAccessHelper::Test_NsdlAccessHelper()
ram54288 0:a7a43371b306 106 {
ram54288 0:a7a43371b306 107 observer = new TestObserver();
ram54288 0:a7a43371b306 108 }
ram54288 0:a7a43371b306 109
ram54288 0:a7a43371b306 110 Test_NsdlAccessHelper::~Test_NsdlAccessHelper()
ram54288 0:a7a43371b306 111 {
ram54288 0:a7a43371b306 112 delete observer;
ram54288 0:a7a43371b306 113 observer = NULL;
ram54288 0:a7a43371b306 114
ram54288 0:a7a43371b306 115 clear_list();
ram54288 0:a7a43371b306 116 }
ram54288 0:a7a43371b306 117
ram54288 0:a7a43371b306 118 void Test_NsdlAccessHelper::test_nsdl_c_callback()
ram54288 0:a7a43371b306 119 {
ram54288 0:a7a43371b306 120 CHECK(__nsdl_c_callback(NULL,NULL,NULL,SN_NSDL_PROTOCOL_HTTP) == 0 );
ram54288 0:a7a43371b306 121
ram54288 0:a7a43371b306 122 m2mnsdlinterface_stub::int_value = 1;
ram54288 0:a7a43371b306 123 m2mnsdlinterface_stub::void_value = malloc(1);
ram54288 0:a7a43371b306 124 __nsdl_interface_list.clear();
ram54288 0:a7a43371b306 125 __nsdl_interface_list.push_back(new M2MNsdlInterface(*observer));
ram54288 0:a7a43371b306 126 common_stub::coap_header = (sn_coap_hdr_s *) malloc(sizeof(sn_coap_hdr_s));
ram54288 0:a7a43371b306 127 memset(common_stub::coap_header, 0, sizeof(sn_coap_hdr_s));
ram54288 0:a7a43371b306 128 common_stub::coap_header->options_list_ptr = (sn_coap_options_list_s *) malloc(sizeof(sn_coap_options_list_s));
ram54288 0:a7a43371b306 129 common_stub::coap_header->options_list_ptr->block1 = 0x0101;
ram54288 0:a7a43371b306 130
ram54288 0:a7a43371b306 131 CHECK(__nsdl_c_callback((nsdl_s*)m2mnsdlinterface_stub::void_value,
ram54288 0:a7a43371b306 132 common_stub::coap_header,NULL,SN_NSDL_PROTOCOL_HTTP) == 1 );
ram54288 0:a7a43371b306 133 free(common_stub::coap_header->options_list_ptr);
ram54288 0:a7a43371b306 134 free(common_stub::coap_header);
ram54288 0:a7a43371b306 135 free(m2mnsdlinterface_stub::void_value);
ram54288 0:a7a43371b306 136 clear_list();
ram54288 0:a7a43371b306 137 }
ram54288 0:a7a43371b306 138
ram54288 0:a7a43371b306 139 void Test_NsdlAccessHelper::test_nsdl_c_memory_alloc()
ram54288 0:a7a43371b306 140 {
ram54288 0:a7a43371b306 141 void *ptr = __nsdl_c_memory_alloc(6);
ram54288 0:a7a43371b306 142 CHECK(ptr != NULL);
ram54288 0:a7a43371b306 143 free(ptr);
ram54288 0:a7a43371b306 144 ptr = NULL;
ram54288 0:a7a43371b306 145 ptr = __nsdl_c_memory_alloc(UINT16_MAX+1);
ram54288 0:a7a43371b306 146 CHECK(ptr == NULL);
ram54288 0:a7a43371b306 147 free(ptr);
ram54288 0:a7a43371b306 148 }
ram54288 0:a7a43371b306 149
ram54288 0:a7a43371b306 150 void Test_NsdlAccessHelper::test_nsdl_c_memory_free()
ram54288 0:a7a43371b306 151 {
ram54288 0:a7a43371b306 152 void* ptr = malloc(7);
ram54288 0:a7a43371b306 153 __nsdl_c_memory_free(ptr);
ram54288 0:a7a43371b306 154
ram54288 0:a7a43371b306 155 CHECK(ptr != NULL);
ram54288 0:a7a43371b306 156
ram54288 0:a7a43371b306 157 ptr = NULL;
ram54288 0:a7a43371b306 158 //No need to check anything, since memory leak is the test
ram54288 0:a7a43371b306 159 }
ram54288 0:a7a43371b306 160
ram54288 0:a7a43371b306 161 void Test_NsdlAccessHelper::test_nsdl_c_send_to_server()
ram54288 0:a7a43371b306 162 {
ram54288 0:a7a43371b306 163 CHECK(__nsdl_c_send_to_server(NULL, SN_NSDL_PROTOCOL_HTTP, NULL, 0, NULL) == 0);
ram54288 0:a7a43371b306 164
ram54288 0:a7a43371b306 165 m2mnsdlinterface_stub::int_value = 1;
ram54288 0:a7a43371b306 166 m2mnsdlinterface_stub::void_value = malloc(1);
ram54288 0:a7a43371b306 167 __nsdl_interface_list.clear();
ram54288 0:a7a43371b306 168 __nsdl_interface_list.push_back(new M2MNsdlInterface(*observer));
ram54288 0:a7a43371b306 169
ram54288 0:a7a43371b306 170 CHECK(__nsdl_c_send_to_server((nsdl_s*)m2mnsdlinterface_stub::void_value, SN_NSDL_PROTOCOL_HTTP, NULL, 0, NULL) == 1);
ram54288 0:a7a43371b306 171 free(m2mnsdlinterface_stub::void_value);
ram54288 0:a7a43371b306 172 clear_list();
ram54288 0:a7a43371b306 173 }
ram54288 0:a7a43371b306 174
ram54288 0:a7a43371b306 175 void Test_NsdlAccessHelper::test_nsdl_c_received_from_server()
ram54288 0:a7a43371b306 176 {
ram54288 0:a7a43371b306 177 CHECK( 0 == __nsdl_c_received_from_server(NULL, NULL, NULL));
ram54288 0:a7a43371b306 178
ram54288 0:a7a43371b306 179 m2mnsdlinterface_stub::int_value = 1;
ram54288 0:a7a43371b306 180 m2mnsdlinterface_stub::void_value = malloc(1);
ram54288 0:a7a43371b306 181 __nsdl_interface_list.clear();
ram54288 0:a7a43371b306 182 __nsdl_interface_list.push_back(new M2MNsdlInterface(*observer));
ram54288 0:a7a43371b306 183 common_stub::coap_header = (sn_coap_hdr_s *) malloc(sizeof(sn_coap_hdr_s));
ram54288 0:a7a43371b306 184 memset(common_stub::coap_header, 0, sizeof(sn_coap_hdr_s));
ram54288 0:a7a43371b306 185 common_stub::coap_header->options_list_ptr = (sn_coap_options_list_s *) malloc(sizeof(sn_coap_options_list_s));
ram54288 0:a7a43371b306 186 common_stub::coap_header->options_list_ptr->block1 = 0x0101;
ram54288 0:a7a43371b306 187 CHECK( 1 == __nsdl_c_received_from_server((nsdl_s*)m2mnsdlinterface_stub::void_value, common_stub::coap_header, NULL));
ram54288 0:a7a43371b306 188 free(common_stub::coap_header->options_list_ptr);
ram54288 0:a7a43371b306 189 free(common_stub::coap_header);
ram54288 0:a7a43371b306 190 free(m2mnsdlinterface_stub::void_value);
ram54288 0:a7a43371b306 191 clear_list();
ram54288 0:a7a43371b306 192 }
ram54288 0:a7a43371b306 193
ram54288 0:a7a43371b306 194 void Test_NsdlAccessHelper::test_socket_malloc()
ram54288 0:a7a43371b306 195 {
ram54288 0:a7a43371b306 196 void *ptr = __socket_malloc(NULL, 6);
ram54288 0:a7a43371b306 197 CHECK(ptr != NULL);
ram54288 0:a7a43371b306 198
ram54288 0:a7a43371b306 199 free(ptr);
ram54288 0:a7a43371b306 200 }
ram54288 0:a7a43371b306 201
ram54288 0:a7a43371b306 202 void Test_NsdlAccessHelper::test_socket_free()
ram54288 0:a7a43371b306 203 {
ram54288 0:a7a43371b306 204 void* ptr = malloc(7);
ram54288 0:a7a43371b306 205 __socket_free(NULL, ptr);
ram54288 0:a7a43371b306 206
ram54288 0:a7a43371b306 207 ptr = NULL;
ram54288 0:a7a43371b306 208 //No need to check anything, since memory leak is the test
ram54288 0:a7a43371b306 209 }
ram54288 0:a7a43371b306 210
ram54288 0:a7a43371b306 211 void Test_NsdlAccessHelper::test_mutex_claim()
ram54288 0:a7a43371b306 212 {
ram54288 0:a7a43371b306 213 __connection_handler = new M2MConnectionHandler(*observer,
ram54288 0:a7a43371b306 214 NULL,
ram54288 0:a7a43371b306 215 M2MInterface::UDP,
ram54288 0:a7a43371b306 216 M2MInterface::LwIP_IPv4);
ram54288 0:a7a43371b306 217 __mutex_claim();
ram54288 0:a7a43371b306 218
ram54288 0:a7a43371b306 219 delete __connection_handler;
ram54288 0:a7a43371b306 220 }
ram54288 0:a7a43371b306 221
ram54288 0:a7a43371b306 222 void Test_NsdlAccessHelper::test_mutex_release()
ram54288 0:a7a43371b306 223 {
ram54288 0:a7a43371b306 224 __connection_handler = new M2MConnectionHandler(*observer,
ram54288 0:a7a43371b306 225 NULL,
ram54288 0:a7a43371b306 226 M2MInterface::UDP,
ram54288 0:a7a43371b306 227 M2MInterface::LwIP_IPv4);
ram54288 0:a7a43371b306 228 __mutex_release();
ram54288 0:a7a43371b306 229
ram54288 0:a7a43371b306 230 delete __connection_handler;
ram54288 0:a7a43371b306 231 }
ram54288 0:a7a43371b306 232
ram54288 0:a7a43371b306 233 void Test_NsdlAccessHelper::clear_list()
ram54288 0:a7a43371b306 234 {
ram54288 0:a7a43371b306 235 M2MNsdlInterfaceList::const_iterator it;
ram54288 0:a7a43371b306 236 it = __nsdl_interface_list.begin();
ram54288 0:a7a43371b306 237 int size = __nsdl_interface_list.size();
ram54288 0:a7a43371b306 238 if (!__nsdl_interface_list.empty()) {
ram54288 0:a7a43371b306 239 for (int i = 0; i < size; i++) {
ram54288 0:a7a43371b306 240 delete __nsdl_interface_list[i];
ram54288 0:a7a43371b306 241 __nsdl_interface_list.erase(i);
ram54288 0:a7a43371b306 242 }
ram54288 0:a7a43371b306 243 __nsdl_interface_list.clear();
ram54288 0:a7a43371b306 244 }
ram54288 0:a7a43371b306 245 }