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.
flush3.cpp
00001 /* 00002 * mbed Microcontroller Library 00003 * Copyright (c) 2006-2016 ARM Limited 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); 00006 * you may not use this file except in compliance with the License. 00007 * You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, 00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 */ 00017 00018 /** @file flush3.cpp Test cases to flush KVs in the CFSTORE using the drv->Flush() interface. 00019 * 00020 * Please consult the documentation under the test-case functions for 00021 * a description of the individual test case. 00022 * 00023 * CFSTORE flash-journal sync mode test for github issue Heap Corruption by Jenia Kogan: 00024 * https://github.com/ARMmbed/configuration-store/issues/17 00025 * No evidence of heap corruption has been found but the test case put together to 00026 * investiage that problem did result in a bug being found, that being that 00027 * when the last attribute was deleted from CFSTORE, this was not properly committed to 00028 * flash, so that CFSTORE was re-initialised, the old attribute was read back from 00029 * flash into the store. This has now been fixed. 00030 */ 00031 00032 #include "mbed.h" 00033 #include "cfstore_config.h" 00034 #include "Driver_Common.h" 00035 #include "cfstore_debug.h" 00036 #include "cfstore_test.h" 00037 #include "configuration_store.h" 00038 #include "utest/utest.h" 00039 #include "unity/unity.h" 00040 #include "greentea-client/test_env.h" 00041 00042 00043 #include <stdio.h> 00044 #include <stdlib.h> 00045 #include <string.h> 00046 #include <inttypes.h> 00047 00048 using namespace utest::v1; 00049 00050 static char cfstore_flush3_utest_msg_g[CFSTORE_UTEST_MSG_BUF_SIZE]; 00051 00052 /// @cond CFSTORE_DOXYGEN_DISABLE 00053 #ifdef CFSTORE_DEBUG 00054 #define CFSTORE_FLUSH3_GREENTEA_TIMEOUT_S 1000 00055 #else 00056 #define CFSTORE_FLUSH3_GREENTEA_TIMEOUT_S 100 00057 #endif 00058 /// @endcond 00059 00060 /* used for sync mode build only */ 00061 #if defined STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS && STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS==0 00062 00063 #define CFSTORE_UNUSED_PARAM(param) (void)(param) 00064 00065 int32_t cfstore_flush3_end(void) 00066 { 00067 int32_t cfsStatus; 00068 ARM_CFSTORE_DRIVER *cfstoreDriver = &cfstore_driver; 00069 00070 CFSTORE_DBGLOG("%s:IN\n", __func__); 00071 cfsStatus = cfstoreDriver->Uninitialize(); 00072 if(cfsStatus < ARM_DRIVER_OK){ 00073 CFSTORE_DBGLOG("CFStore Finalization failed (err %ld)\n", cfsStatus); 00074 return ARM_DRIVER_ERROR; 00075 } 00076 CFSTORE_DBGLOG("%s:OUT:returning ARM_DRIVER_OK\n", __func__); 00077 return ARM_DRIVER_OK; 00078 } 00079 00080 00081 int32_t cfstore_flush3_delete_file(const char *fileDir, size_t maxFilePathSize, const char *fileName) 00082 { 00083 int32_t cfsStatus; 00084 int32_t status = ARM_DRIVER_OK; 00085 00086 ARM_CFSTORE_DRIVER *cfstoreDriver = &cfstore_driver; 00087 ARM_CFSTORE_FMODE flags; 00088 ARM_CFSTORE_HANDLE_INIT(hkey); 00089 00090 CFSTORE_DBGLOG("%s:IN. File name %s\n", __func__, fileName); 00091 00092 CFSTORE_UNUSED_PARAM(fileDir); 00093 CFSTORE_UNUSED_PARAM(maxFilePathSize); 00094 00095 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Uninitialize Cfstore\n", __func__); 00096 TEST_ASSERT_MESSAGE(cfstoreDriver != NULL, cfstore_flush3_utest_msg_g); 00097 00098 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Invalid file name\n", __func__); 00099 TEST_ASSERT_MESSAGE(fileName != NULL, cfstore_flush3_utest_msg_g); 00100 00101 memset(&flags, 0, sizeof(flags)); 00102 flags.write = true; 00103 cfsStatus = cfstoreDriver->Open(fileName, flags, hkey); 00104 if (cfsStatus == ARM_CFSTORE_DRIVER_ERROR_KEY_NOT_FOUND) { 00105 /* printf added: modification to original code supplied by Jenia Kogan. */ 00106 CFSTORE_DBGLOG("%s: cfsStatus == ARM_CFSTORE_DRIVER_ERROR_KEY_NOT_FOUND. returning success\n", __func__); 00107 return ARM_DRIVER_OK; 00108 } 00109 if(cfsStatus < ARM_DRIVER_OK){ 00110 CFSTORE_DBGLOG("Open failed (err %ld)\n", cfsStatus); 00111 return ARM_DRIVER_ERROR; 00112 } 00113 cfsStatus = cfstoreDriver->Delete(hkey); 00114 if(cfsStatus < ARM_DRIVER_OK){ 00115 CFSTORE_DBGLOG("Failed deleting (%s) failed (err %ld)\n", fileName, cfsStatus); 00116 status = ARM_DRIVER_ERROR; 00117 goto out; 00118 } 00119 out: 00120 cfsStatus = cfstoreDriver->Close(hkey); 00121 if(cfsStatus < ARM_DRIVER_OK){ 00122 CFSTORE_DBGLOG("Close failed (err %ld)\n", cfsStatus); 00123 return ARM_DRIVER_ERROR; 00124 } 00125 /* Flash-to-flash only on success */ 00126 if (status == ARM_DRIVER_OK) { 00127 cfsStatus = cfstoreDriver->Flush(); 00128 if(cfsStatus < ARM_DRIVER_OK){ 00129 CFSTORE_DBGLOG("Flush to flash failed (err %ld)\n", cfsStatus); 00130 return ARM_DRIVER_ERROR; 00131 } 00132 } 00133 CFSTORE_DBGLOG("%s:OUT: status=%d\n", __func__, (int) status); 00134 return status; 00135 } 00136 00137 00138 int32_t cfstore_flush3_read_file(const char *fileDir, size_t maxFilePathSize, const char *fileName, uint8_t *buff, size_t buffSize) 00139 { 00140 int32_t cfsStatus; 00141 int32_t status = ARM_DRIVER_OK; 00142 00143 ARM_CFSTORE_DRIVER *cfstoreDriver = &cfstore_driver; 00144 ARM_CFSTORE_FMODE flags; 00145 ARM_CFSTORE_SIZE readCount = buffSize; 00146 ARM_CFSTORE_HANDLE_INIT(hkey); 00147 00148 CFSTORE_DBGLOG("%s:IN. File name %s, buffer %p, buffsize %d\n", __func__, fileName, buff, buffSize); 00149 00150 CFSTORE_UNUSED_PARAM(fileDir); 00151 CFSTORE_UNUSED_PARAM(maxFilePathSize); 00152 00153 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Uninitialize Cfstore\n", __func__); 00154 TEST_ASSERT_MESSAGE(cfstoreDriver != NULL, cfstore_flush3_utest_msg_g); 00155 00156 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Invalid file name\n", __func__); 00157 TEST_ASSERT_MESSAGE(fileName != NULL, cfstore_flush3_utest_msg_g); 00158 00159 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Invalid buff\n", __func__); 00160 TEST_ASSERT_MESSAGE(buff != NULL, cfstore_flush3_utest_msg_g); 00161 00162 memset(&flags, 0, sizeof(flags)); 00163 flags.read = true; 00164 00165 cfsStatus = cfstoreDriver->Open(fileName, flags, hkey); 00166 if(cfsStatus == ARM_CFSTORE_DRIVER_ERROR_KEY_NOT_FOUND){ 00167 CFSTORE_DBGLOG("File (%s) not found (err %ld)\n", fileName, cfsStatus); 00168 return ARM_CFSTORE_DRIVER_ERROR_KEY_NOT_FOUND; 00169 00170 } 00171 if(cfsStatus < ARM_DRIVER_OK){ 00172 CFSTORE_DBGLOG("Open failed (err %ld)\n", cfsStatus); 00173 return ARM_DRIVER_ERROR; 00174 } 00175 cfsStatus = cfstoreDriver->Read(hkey, buff, &readCount); 00176 if(cfsStatus < ARM_DRIVER_OK){ 00177 CFSTORE_DBGLOG("Read failed (err %ld)\n", cfsStatus); 00178 status = ARM_DRIVER_ERROR; 00179 goto out; 00180 } 00181 if(readCount < buffSize){ 00182 CFSTORE_DBGLOG("Read failed, amount is %zu while requested %zu\n", readCount, buffSize); 00183 status = ARM_DRIVER_ERROR; 00184 goto out; 00185 } 00186 out: 00187 cfsStatus = cfstoreDriver->Close(hkey); 00188 if(cfsStatus < ARM_DRIVER_OK){ 00189 CFSTORE_DBGLOG("Close failed (err %ld)\n", cfsStatus); 00190 return ARM_DRIVER_ERROR; 00191 } 00192 CFSTORE_DBGLOG("%s:OUT: status=%d\n", __func__, (int) status); 00193 return status; 00194 } 00195 00196 int32_t cfstore_flush3_write_file(const char *fileDir, size_t maxFilePathSize, const char *fileName, const uint8_t *buff, size_t buffSize) 00197 { 00198 int32_t cfsStatus; 00199 int32_t status = ARM_DRIVER_ERROR; 00200 00201 ARM_CFSTORE_DRIVER *cfstoreDriver = &cfstore_driver; 00202 ARM_CFSTORE_SIZE writeCount = buffSize; 00203 ARM_CFSTORE_KEYDESC keyDesc; 00204 ARM_CFSTORE_HANDLE_INIT(hkey); 00205 00206 CFSTORE_DBGLOG("%s:IN. File name %s, buffer %p, buffsize %d\n", __func__, fileName, buff, buffSize); 00207 00208 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Uninitialize Cfstore\n", __func__); 00209 TEST_ASSERT_MESSAGE(cfstoreDriver != NULL, cfstore_flush3_utest_msg_g); 00210 00211 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Invalid file name\n", __func__); 00212 TEST_ASSERT_MESSAGE(fileName != NULL, cfstore_flush3_utest_msg_g); 00213 00214 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Invalid buff\n", __func__); 00215 TEST_ASSERT_MESSAGE(buff != NULL, cfstore_flush3_utest_msg_g); 00216 00217 /* We always deleting the old file and recreating a new one to preserve simplicity */ 00218 CFSTORE_DBGLOG("Before delete%s", "\n"); 00219 00220 /* Delete the old file */ 00221 status = cfstore_flush3_delete_file(fileDir, maxFilePathSize, fileName); 00222 if(status != ARM_DRIVER_OK){ 00223 CFSTORE_DBGLOG("Failed deleting (%s)\n", fileName); 00224 return status; 00225 } 00226 00227 CFSTORE_DBGLOG("After delete%s", "\n"); 00228 /* Create a new file */ 00229 memset(&keyDesc, 0, sizeof(keyDesc)); 00230 keyDesc.drl = ARM_RETENTION_NVM; 00231 keyDesc.flags.read = true; 00232 keyDesc.flags.write = true; 00233 cfsStatus = cfstoreDriver->Create(fileName, buffSize, &keyDesc, hkey); 00234 if(cfsStatus < ARM_DRIVER_OK){ 00235 CFSTORE_DBGLOG("Fail creating (%s) key-store (%ld)\n", fileName, cfsStatus); 00236 return ARM_DRIVER_ERROR; 00237 } 00238 CFSTORE_DBGLOG("After create%s", "\n"); 00239 cfsStatus = cfstoreDriver->Write(hkey, (const char *)buff, &writeCount); 00240 if(cfsStatus < ARM_DRIVER_OK){ 00241 CFSTORE_DBGLOG("Write failed (err %ld)\n", cfsStatus); 00242 status = ARM_DRIVER_ERROR; 00243 goto out; 00244 } 00245 if(writeCount != buffSize){ 00246 CFSTORE_DBGLOG("Write failed, amount is %d while requested is %d\n", (int)writeCount, (int)buffSize); 00247 status = ARM_DRIVER_ERROR; 00248 goto out; 00249 } 00250 CFSTORE_DBGLOG("After write%s", "\n"); 00251 out: 00252 cfsStatus = cfstoreDriver->Close(hkey); 00253 if(cfsStatus < ARM_DRIVER_OK){ 00254 CFSTORE_DBGLOG("Close failed (err %ld)\n", cfsStatus); 00255 return ARM_DRIVER_ERROR; 00256 } 00257 CFSTORE_DBGLOG("After close%s", "\n"); 00258 /* Flash-to-flash only on success */ 00259 if (status == ARM_DRIVER_OK) { 00260 cfsStatus = cfstoreDriver->Flush(); 00261 if(cfsStatus < ARM_DRIVER_OK){ 00262 CFSTORE_DBGLOG("Flush to flash failed(err %ld)\n", cfsStatus); 00263 return ARM_DRIVER_ERROR; 00264 } 00265 CFSTORE_DBGLOG("After flush%s", "\n"); 00266 } 00267 CFSTORE_DBGLOG("%s:OUT: status=%d\n", __func__, (int) status); 00268 return status; 00269 } 00270 00271 00272 int32_t cfstore_flush3_start(void) 00273 { 00274 int32_t status = ARM_DRIVER_OK; 00275 int32_t cfsStatus; 00276 ARM_CFSTORE_DRIVER *cfstoreDriver = &cfstore_driver; 00277 ARM_CFSTORE_CAPABILITIES caps; 00278 00279 CFSTORE_DBGLOG("%s:IN\n", __func__); 00280 00281 /* Initialize configuration store */ 00282 cfsStatus = cfstoreDriver->Initialize(NULL, NULL); 00283 if(cfsStatus < ARM_DRIVER_OK){ 00284 CFSTORE_DBGLOG("CFStore Initialization failed (err %lu)\n", cfsStatus); 00285 return ARM_DRIVER_ERROR; 00286 } 00287 /* Get capabilities */ 00288 memset(&caps, 0, sizeof(caps)); 00289 caps = cfstoreDriver->GetCapabilities(); 00290 if(caps.asynchronous_ops == true){ 00291 CFSTORE_DBGLOG("%s:Please configure CFstore to work in synchronous mode. This can be change in config.json file.\n", __func__); 00292 status = ARM_DRIVER_ERROR; 00293 goto out; 00294 } 00295 CFSTORE_DBGLOG("%s:OUT: returning ARM_DRIVER_OK\n", __func__); 00296 return ARM_DRIVER_OK; /* init succeeded */ 00297 00298 out: 00299 /* init failed */ 00300 (void) cfstore_flush3_end(); 00301 CFSTORE_DBGLOG("%s:OUT: status=%d\n", __func__, (int) status); 00302 return status; 00303 } 00304 00305 int32_t cfstore_flush3_check_data(uint8_t* data, int32_t len, uint8_t val) 00306 { 00307 int i; 00308 for(i = 0; i < len; i++) { 00309 if(data[i] != val){ 00310 /* found byte which doesnt have the expected data value */ 00311 return ARM_DRIVER_ERROR; 00312 } 00313 } 00314 return ARM_DRIVER_OK; 00315 } 00316 00317 /* @brief test case to recreate the transactions documented in the 00318 * issue 17 trace log. 00319 * 00320 * the test case was created by recreating the entries found in the 00321 * log report grepped from the trace log attached to githug issue 17: 00322 * 20160622_1321_grep_pv_configuration_store_issue_17_heap_corruption.txt 00323 * 00324 * This is what the test is intended to do: 00325 * - A (setup) 00326 * - cfstore_flush3_start 00327 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV 00328 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.0, len: 220) to create KV 00329 * - cfstore_flush3_end 00330 * - B (setup?) 00331 * - cfstore_flush3_start 00332 * - cfstore_flush3_read_file(com.arm.mbed.spv.sst.meta) 00333 * - cfstore_flush3_read_file(com.arm.mbed.spv.sst.node.0) 00334 * - cfstore_flush3_end 00335 * - C (delete everything) 00336 * - cfstore_flush3_start 00337 * - cfstore_flush3_delete_file(com.arm.mbed.spv.sst.node.0). this will work as the KV is present 00338 * - cfstore_flush3_delete_file(com.arm.mbed.spv.sst.node.x) where x = {1..29} 00339 * - cfstore_flush3_delete_file(name com.arm.mbed.spv.sst.meta). 00340 * - this should work as the KV is present 00341 * - however, its is seen to fail in the trace log for the issue. 00342 * - cfstore_flush3_end 00343 * - D 00344 * - cfstore_flush3_start 00345 * - cfstore_flush3_read_file(com.arm.mbed.spv.sst.meta). readd 2280 bytes and check correct 00346 * - this should fail as the kv has been deleted. 00347 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.0, len: 220) to create KV 00348 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV 00349 * - cfstore_flush3_end 00350 * - E 00351 * - run C-D again, to delete everything 00352 * - F 00353 * - cfstore_flush3_start 00354 * - cfstore_flush3_read_file(com.arm.mbed.spv.sst.meta). readd 2280 bytes and check correct 00355 * - this should fail as the kv has been deleted. 00356 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.0, len: 220) to create KV 00357 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV 00358 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.0, len: 816) to create KV 00359 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV 00360 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.1, len: 217) to create KV 00361 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV 00362 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.0, len: 818) to create KV 00363 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV 00364 * - cfstore_flush3_end 00365 * - G 00366 * - cfstore_flush3_start 00367 * - cfstore_flush3_read_file(com.arm.mbed.spv.sst.meta) 2280 bytes should be read 00368 * - cfstore_flush3_read_file(com.arm.mbed.spv.sst.node.0) 818 bytes should be read 00369 * - cfstore_flush3_read_file(com.arm.mbed.spv.sst.node.1) 217 bytes should be read 00370 * - cfstore_flush3_read_file(com.arm.mbed.spv.sst.node.1) 217 bytes should be read 00371 * - cfstore_flush3_read_file(com.arm.mbed.spv.sst.node.1) 217 bytes should be read 00372 * - cfstore_flush3_read_file(com.arm.mbed.spv.sst.node.1) 217 bytes should be read 00373 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.2, len: 235) to create KV 00374 * - cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV 00375 * - cfstore_flush3_end 00376 * 00377 * The issue reported heap corruption. To this end, a heap buffer 00378 * is allocated and checked as a canary against heap corruption 00379 */ 00380 00381 #define CFSTORE_FLUSH3_TEST_DATA_CHAR 'A' /* 0b1010 bit pattern */ 00382 #define CFSTORE_FLUSH3_HEAP_DATA_CHAR 'Z' 00383 #define CFSTORE_FLUSH3_TEST_DATA_BUF_LEN 3000 /* 2280 was the largest buffer used*/ 00384 00385 #ifdef TARGET_K64F 00386 #define CFSTORE_FLUSH3_TEST_HEAP_BUF_LEN 87500 /* alloc a heap buffer to use up some memory: value tuned to K64F */ 00387 #else 00388 #define CFSTORE_FLUSH3_TEST_HEAP_BUF_LEN 1000 /* alloc a heap buffer to use up some memory (minimal for non-k64f targets until tuned */ 00389 #endif /* TARGET_K64F */ 00390 00391 static control_t cfstore_flush3_test_01(const size_t call_count) 00392 { 00393 int32_t i; 00394 int32_t ret = ARM_DRIVER_ERROR; 00395 const char* kv_name_root = "com.arm.mbed.spv.sst"; 00396 const char* kv_name_node= "node"; 00397 const char* kv_name_meta= "meta"; 00398 char kv_name[CFSTORE_KEY_NAME_MAX_LENGTH+1]; 00399 uint8_t data[CFSTORE_FLUSH3_TEST_DATA_BUF_LEN]; 00400 void* heap_buf = NULL; 00401 00402 (void) call_count; 00403 heap_buf = malloc(CFSTORE_FLUSH3_TEST_HEAP_BUF_LEN); 00404 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: malloc() failed .\n", __func__); 00405 TEST_ASSERT_MESSAGE(heap_buf != NULL, cfstore_flush3_utest_msg_g); 00406 memset(heap_buf, CFSTORE_FLUSH3_HEAP_DATA_CHAR, CFSTORE_FLUSH3_TEST_HEAP_BUF_LEN); 00407 00408 CFSTORE_DBGLOG("%s: - A (setup)\n", __func__); 00409 CFSTORE_DBGLOG("%s: - cfstore_flush3_start\n", __func__); 00410 ret = cfstore_flush3_start(); 00411 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: A.1 cfstore_flush3_start() failed (ret=%d).\n", __func__, (int) ret); 00412 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00413 00414 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV\n", __func__); 00415 memset(data, CFSTORE_FLUSH3_TEST_DATA_CHAR, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00416 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, kv_name_meta); 00417 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 2280); 00418 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: A.2 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00419 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00420 00421 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.0, len: 220) to create KV\n", __func__); 00422 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.0", (char*) kv_name_root, (char*) kv_name_node); 00423 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 220); 00424 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: A.3 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00425 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00426 00427 CFSTORE_DBGLOG("%s: - cfstore_flush3_end\n", __func__); 00428 ret = cfstore_flush3_end(); 00429 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: A.4 cfstore_flush3_end() failed (ret=%d).\n", __func__, (int) ret); 00430 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00431 00432 CFSTORE_DBGLOG("%s: check for heap corruption\n", __func__); 00433 ret = cfstore_flush3_check_data((uint8_t*) heap_buf, CFSTORE_FLUSH3_TEST_HEAP_BUF_LEN, CFSTORE_FLUSH3_HEAP_DATA_CHAR); 00434 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: A.5 cfstore_flush3_check_data() failed for heap (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00435 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00436 00437 CFSTORE_DBGLOG("%s: - B\n", __func__); 00438 CFSTORE_DBGLOG("%s: - cfstore_flush3_start\n", __func__); 00439 ret = cfstore_flush3_start(); 00440 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: B.1 cfstore_flush3_start() failed (ret=%d).\n", __func__, (int) ret); 00441 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00442 00443 CFSTORE_DBGLOG("%s: cfstore_flush3_read_file(com.arm.mbed.spv.sst.meta). read 2280\n", __func__); 00444 memset(data, 0, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00445 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00446 ret = cfstore_flush3_read_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, data, 2280); 00447 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: B.2 cfstore_flush3_read_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00448 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00449 00450 ret = cfstore_flush3_check_data(data, 2280, CFSTORE_FLUSH3_TEST_DATA_CHAR); 00451 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: B.3 cfstore_flush3_check_data() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00452 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00453 00454 CFSTORE_DBGLOG("%s: cfstore_flush3_read_file(com.arm.mbed.spv.sst.node.0). read 220\n", __func__); 00455 memset(data, 0, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00456 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.0", (char*) kv_name_root, (char*) kv_name_node); 00457 ret = cfstore_flush3_read_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, data, 220); 00458 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: B.4 cfstore_flush3_read_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00459 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00460 00461 ret = cfstore_flush3_check_data(data, 220, CFSTORE_FLUSH3_TEST_DATA_CHAR); 00462 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: B.5 cfstore_flush3_check_data() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00463 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00464 00465 CFSTORE_DBGLOG("%s: - cfstore_flush3_end\n", __func__); 00466 ret = cfstore_flush3_end(); 00467 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: B.6 cfstore_flush3_end() failed (ret=%d).\n", __func__, (int) ret); 00468 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00469 00470 CFSTORE_DBGLOG("%s: check for heap corruption\n", __func__); 00471 ret = cfstore_flush3_check_data((uint8_t*) heap_buf, CFSTORE_FLUSH3_TEST_HEAP_BUF_LEN, CFSTORE_FLUSH3_HEAP_DATA_CHAR); 00472 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: B.7 cfstore_flush3_check_data() failed for heap (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00473 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00474 00475 CFSTORE_DBGLOG("%s: - C (delete everything)\n", __func__); 00476 CFSTORE_DBGLOG("%s: - cfstore_flush3_start\n", __func__); 00477 ret = cfstore_flush3_start(); 00478 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: C.1 cfstore_flush3_start() failed (ret=%d).\n", __func__, (int) ret); 00479 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00480 00481 CFSTORE_DBGLOG("%s: cfstore_flush3_delete_file(com.arm.mbed.spv.sst.node.0). this will work as the KV is present\n", __func__); 00482 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.0", (char*) kv_name_root, (char*) kv_name_node); 00483 ret = cfstore_flush3_delete_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name); 00484 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: C.2 cfstore_flush3_delete_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00485 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00486 00487 CFSTORE_DBGLOG("%s: cfstore_flush3_delete_file(com.arm.mbed.spv.sst.node.x) where x = {1..29}, each of which should fail\n", __func__); 00488 for(i = 1; i <= 29; i++){ 00489 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.%d", (char*) kv_name_root, (char*) kv_name_node, (int) i); 00490 ret = cfstore_flush3_delete_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name); 00491 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: C.%d cfstore_flush3_delete_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) i+2, (int) ret, kv_name); 00492 /* The delete operations are expected to fail as the keys dont exist 00493 * but cfstore_flush3_delete_file() returns ARM_DRIVER_OK when key isnt found, so cant test the return code. 00494 */ 00495 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00496 } 00497 00498 CFSTORE_DBGLOG("%s: cfstore_flush3_delete_file(name com.arm.mbed.spv.sst.meta). this is expected to succeed as the KV is present\n", __func__); 00499 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00500 ret = cfstore_flush3_delete_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name); 00501 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: C.32 cfstore_flush3_delete_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00502 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00503 00504 #ifdef CFSTORE_DEBUG 00505 CFSTORE_DBGLOG("%s: cfstore_test_dump: dump here contents of CFSTORE so we know whats present\n", __func__); 00506 ret = cfstore_test_dump(); 00507 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: D.1.1 cfstore_test_dump failed (ret=%d).\n", __func__, (int) ret); 00508 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00509 #endif /* CFSTORE_DEBUG */ 00510 00511 CFSTORE_DBGLOG("%s: - cfstore_flush3_end\n", __func__); 00512 ret = cfstore_flush3_end(); 00513 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: C.33 cfstore_flush3_end() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00514 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00515 00516 CFSTORE_DBGLOG("%s: check for heap corruption\n", __func__); 00517 ret = cfstore_flush3_check_data((uint8_t*) heap_buf, CFSTORE_FLUSH3_TEST_HEAP_BUF_LEN, CFSTORE_FLUSH3_HEAP_DATA_CHAR); 00518 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: C.34 cfstore_flush3_check_data() failed for heap (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00519 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00520 00521 CFSTORE_DBGLOG("%s: - D\n", __func__); 00522 CFSTORE_DBGLOG("%s: - cfstore_flush3_start\n", __func__); 00523 ret = cfstore_flush3_start(); 00524 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: D.1 cfstore_flush3_start() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00525 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00526 00527 #ifdef CFSTORE_DEBUG 00528 CFSTORE_DBGLOG("%s: cfstore_test_dump: dump here contents of CFSTORE so we know whats present\n", __func__); 00529 ret = cfstore_test_dump(); 00530 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: D.1.1 cfstore_test_dump failed (ret=%d).\n", __func__, (int) ret); 00531 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00532 #endif /* CFSTORE_DEBUG */ 00533 00534 CFSTORE_DBGLOG("%s: cfstore_flush3_read_file(com.arm.mbed.spv.sst.meta). this should fail as the kv has been deleted.\n", __func__); 00535 memset(data, 0, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00536 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00537 ret = cfstore_flush3_read_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, data, 2280); 00538 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: D.2 cfstore_flush3_read_file() succeeded when expected to fail (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00539 TEST_ASSERT_MESSAGE(ret < ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00540 00541 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.0, len: 220) to create KV.\n", __func__); 00542 memset(data, CFSTORE_FLUSH3_TEST_DATA_CHAR, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00543 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.0", (char*) kv_name_root, (char*) kv_name_node); 00544 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 220); 00545 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: D.3 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00546 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00547 00548 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV.\n", __func__); 00549 memset(data, CFSTORE_FLUSH3_TEST_DATA_CHAR, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00550 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00551 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 2280); 00552 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: D.4 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00553 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00554 00555 CFSTORE_DBGLOG("%s: - cfstore_flush3_end\n", __func__); 00556 ret = cfstore_flush3_end(); 00557 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: D.5 cfstore_flush3_end() failed (ret=%d).\n", __func__, (int) ret); 00558 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00559 00560 CFSTORE_DBGLOG("%s: check for heap corruption\n", __func__); 00561 ret = cfstore_flush3_check_data((uint8_t*) heap_buf, CFSTORE_FLUSH3_TEST_HEAP_BUF_LEN, CFSTORE_FLUSH3_HEAP_DATA_CHAR); 00562 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: D.6 cfstore_flush3_check_data() failed for heap (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00563 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00564 00565 CFSTORE_DBGLOG("%s: - E: run C-D again, to delete everything\n", __func__); 00566 CFSTORE_DBGLOG("%s: - cfstore_flush3_start\n", __func__); 00567 ret = cfstore_flush3_start(); 00568 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: E.1 cfstore_flush3_start() failed (ret=%d).\n", __func__, (int) ret); 00569 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00570 00571 CFSTORE_DBGLOG("%s: cfstore_flush3_delete_file(com.arm.mbed.spv.sst.node.0). this will work as the KV is present.\n", __func__); 00572 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.0", (char*) kv_name_root, (char*) kv_name_node); 00573 ret = cfstore_flush3_delete_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name); 00574 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: E.2 cfstore_flush3_delete_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00575 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00576 00577 CFSTORE_DBGLOG("%s: cfstore_flush3_delete_file(com.arm.mbed.spv.sst.node.x) where x = {1..29}, each of which should fail.\n", __func__); 00578 for(i = 1; i <= 29; i++){ 00579 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.%d", (char*) kv_name_root, (char*) kv_name_node, (int) i); 00580 ret = cfstore_flush3_delete_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name); 00581 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: E.%d cfstore_flush3_delete_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) i+2, (int) ret, kv_name); 00582 /* The delete operations are expected to fail as the keys dont exist 00583 * but cfstore_flush3_delete_file() returns ARM_DRIVER_OK when key isnt found, so cant test the return code. 00584 */ 00585 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00586 } 00587 00588 CFSTORE_DBGLOG("%s: cfstore_flush3_delete_file(name com.arm.mbed.spv.sst.meta). this is expected to succeed as the KV is present.\n", __func__); 00589 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00590 ret = cfstore_flush3_delete_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name); 00591 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: E.32 cfstore_flush3_delete_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00592 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00593 00594 CFSTORE_DBGLOG("%s: - cfstore_flush3_end\n", __func__); 00595 ret = cfstore_flush3_end(); 00596 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: E.33 cfstore_flush3_end() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00597 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00598 00599 CFSTORE_DBGLOG("%s: check for heap corruption\n", __func__); 00600 ret = cfstore_flush3_check_data((uint8_t*) heap_buf, CFSTORE_FLUSH3_TEST_HEAP_BUF_LEN, CFSTORE_FLUSH3_HEAP_DATA_CHAR); 00601 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: E.34 cfstore_flush3_check_data() failed for heap (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00602 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00603 00604 CFSTORE_DBGLOG("%s: - F\n", __func__); 00605 CFSTORE_DBGLOG("%s: - cfstore_flush3_start\n", __func__); 00606 ret = cfstore_flush3_start(); 00607 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.1 cfstore_flush3_start() failed (ret=%d).\n", __func__, (int) ret); 00608 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00609 00610 CFSTORE_DBGLOG("%s: cfstore_flush3_read_file(com.arm.mbed.spv.sst.meta). this should fail as the kv has been deleted.\n", __func__); 00611 memset(data, 0, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00612 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00613 ret = cfstore_flush3_read_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, data, 2280); 00614 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.2 cfstore_flush3_read_file() succeeded when expected to fail (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00615 TEST_ASSERT_MESSAGE(ret < ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00616 00617 memset(data, CFSTORE_FLUSH3_TEST_DATA_CHAR, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00618 /* cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.0, len: 220) to create KV */ 00619 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.0", (char*) kv_name_root, (char*) kv_name_node); 00620 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 220); 00621 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.3 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00622 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00623 00624 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV.\n", __func__); 00625 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00626 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 2280); 00627 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.4 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00628 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00629 00630 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.0, len: 816) to create KV.\n", __func__); 00631 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.0", (char*) kv_name_root, (char*) kv_name_node); 00632 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 816); 00633 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.5 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00634 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00635 00636 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV.\n", __func__); 00637 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00638 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 2280); 00639 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.6 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00640 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00641 00642 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.1, len: 217) to create KV.\n", __func__); 00643 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.1", (char*) kv_name_root, (char*) kv_name_node); 00644 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 217); 00645 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.7 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00646 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00647 00648 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV.\n", __func__); 00649 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00650 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 2280); 00651 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.8 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00652 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00653 00654 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.0, len: 818) to create KV.\n", __func__); 00655 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.0", (char*) kv_name_root, (char*) kv_name_node); 00656 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 818); 00657 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.9 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00658 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00659 00660 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV.\n", __func__); 00661 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00662 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 2280); 00663 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.10 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00664 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00665 00666 CFSTORE_DBGLOG("%s: - cfstore_flush3_end\n", __func__); 00667 ret = cfstore_flush3_end(); 00668 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.11 cfstore_flush3_end() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00669 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00670 00671 CFSTORE_DBGLOG("%s: check for heap corruption\n", __func__); 00672 ret = cfstore_flush3_check_data((uint8_t*) heap_buf, CFSTORE_FLUSH3_TEST_HEAP_BUF_LEN, CFSTORE_FLUSH3_HEAP_DATA_CHAR); 00673 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.12 cfstore_flush3_check_data() failed for heap (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00674 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00675 00676 CFSTORE_DBGLOG("%s: - G\n", __func__); 00677 CFSTORE_DBGLOG("%s: - cfstore_flush3_start\n", __func__); 00678 ret = cfstore_flush3_start(); 00679 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: G.1 cfstore_flush3_start() failed (ret=%d).\n", __func__, (int) ret); 00680 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00681 00682 CFSTORE_DBGLOG("%s: cfstore_flush3_read_file(com.arm.mbed.spv.sst.meta) 2280 bytes should be read.\n", __func__); 00683 memset(data, 0, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00684 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00685 ret = cfstore_flush3_read_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, data, 2280); 00686 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: G.2 cfstore_flush3_read_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00687 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00688 00689 ret = cfstore_flush3_check_data(data, 2280, CFSTORE_FLUSH3_TEST_DATA_CHAR); 00690 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: G.3 cfstore_flush3_check_data() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00691 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00692 00693 CFSTORE_DBGLOG("%s: cfstore_flush3_read_file(com.arm.mbed.spv.sst.node.0) 818 bytes should be read.\n", __func__); 00694 memset(data, 0, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00695 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.0", (char*) kv_name_root, (char*) kv_name_node); 00696 ret = cfstore_flush3_read_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, data, 818); 00697 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: G.4 cfstore_flush3_read_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00698 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00699 00700 ret = cfstore_flush3_check_data(data, 818, CFSTORE_FLUSH3_TEST_DATA_CHAR); 00701 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: G.5 cfstore_flush3_check_data() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00702 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00703 00704 CFSTORE_DBGLOG("%s: cfstore_flush3_read_file(com.arm.mbed.spv.sst.node.1) 217 bytes should be read. repeat 4 times.\n", __func__); 00705 for(i = 0; i < 4; i++){ 00706 memset(data, 0, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00707 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.1", (char*) kv_name_root, (char*) kv_name_node); 00708 ret = cfstore_flush3_read_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, data, 217); 00709 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: G.%d.1 cfstore_flush3_read_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) i+6, (int) ret, kv_name); 00710 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00711 00712 ret = cfstore_flush3_check_data(data, 217, CFSTORE_FLUSH3_TEST_DATA_CHAR); 00713 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: G.%d.2 cfstore_flush3_check_data() failed (ret=%d, kv_name=%s).\n", __func__, (int) i+6, (int) ret, kv_name); 00714 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00715 } 00716 00717 memset(data, CFSTORE_FLUSH3_TEST_DATA_CHAR, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00718 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.node.2, len: 235) to create KV.\n", __func__); 00719 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s.0", (char*) kv_name_root, (char*) kv_name_node); 00720 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 235); 00721 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.3 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00722 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00723 00724 CFSTORE_DBGLOG("%s: cfstore_flush3_write_file(com.arm.mbed.spv.sst.meta, len: 2280) to create KV.\n", __func__); 00725 memset(data, CFSTORE_FLUSH3_TEST_DATA_CHAR, CFSTORE_FLUSH3_TEST_DATA_BUF_LEN); 00726 snprintf(kv_name, CFSTORE_KEY_NAME_MAX_LENGTH, "%s.%s", (char*) kv_name_root, (char*) kv_name_meta); 00727 ret = cfstore_flush3_write_file(NULL, CFSTORE_KEY_NAME_MAX_LENGTH, (const char*) kv_name, (const uint8_t*) data, 2280); 00728 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: A.2 cfstore_flush3_write_file() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00729 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00730 00731 CFSTORE_DBGLOG("%s: - cfstore_flush3_end\n", __func__); 00732 ret = cfstore_flush3_end(); 00733 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: F.11 cfstore_flush3_end() failed (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00734 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00735 00736 CFSTORE_DBGLOG("%s: check for heap corruption\n", __func__); 00737 ret = cfstore_flush3_check_data((uint8_t*) heap_buf, CFSTORE_FLUSH3_TEST_HEAP_BUF_LEN, CFSTORE_FLUSH3_HEAP_DATA_CHAR); 00738 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: A.5 cfstore_flush3_check_data() failed for heap (ret=%d, kv_name=%s).\n", __func__, (int) ret, kv_name); 00739 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00740 00741 if(heap_buf){ 00742 free(heap_buf); 00743 } 00744 00745 return CaseNext; 00746 } 00747 00748 00749 /* @brief simple flush test */ 00750 static control_t cfstore_flush3_test_02(const size_t call_count) 00751 { 00752 int32_t cfsStatus = ARM_DRIVER_ERROR; 00753 ARM_CFSTORE_KEYDESC kdesc; 00754 ARM_CFSTORE_FMODE flags; 00755 ARM_CFSTORE_SIZE len = strlen("key0"); 00756 ARM_CFSTORE_HANDLE_INIT(hkey); 00757 ARM_CFSTORE_DRIVER* drv = &cfstore_driver; 00758 00759 (void) call_count; 00760 memset(&kdesc, 0, sizeof(kdesc)); 00761 memset(&flags, 0, sizeof(flags)); 00762 00763 CFSTORE_DBGLOG("%s:Initialize()\n", __func__); 00764 cfsStatus = drv->Initialize(NULL, NULL); 00765 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error:%d:cfsStatus=%d", __func__, __LINE__, (int) cfsStatus); 00766 TEST_ASSERT_MESSAGE(cfsStatus >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00767 00768 CFSTORE_DBGLOG("%s:Create()\n", __func__); 00769 cfsStatus = drv->Create("key0", len, &kdesc, hkey); 00770 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error:%d:cfsStatus=%d", __func__, __LINE__, (int) cfsStatus); 00771 TEST_ASSERT_MESSAGE(cfsStatus >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00772 00773 len = strlen("some-value"); 00774 CFSTORE_DBGLOG("%s:Write()\n", __func__); 00775 cfsStatus = drv->Write(hkey, "some-value", &len); 00776 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error:%d:cfsStatus=%d", __func__, __LINE__, (int) cfsStatus); 00777 TEST_ASSERT_MESSAGE(cfsStatus >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00778 00779 CFSTORE_DBGLOG("%s:Close()\n", __func__); 00780 cfsStatus = drv->Close(hkey); 00781 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error:%d:cfsStatus=%d", __func__, __LINE__, (int) cfsStatus); 00782 TEST_ASSERT_MESSAGE(cfsStatus >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00783 00784 CFSTORE_DBGLOG("%s:Flush()\n", __func__); 00785 cfsStatus = drv->Flush(); 00786 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error:%d:cfsStatus=%d", __func__, __LINE__, (int) cfsStatus); 00787 TEST_ASSERT_MESSAGE(cfsStatus >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00788 00789 CFSTORE_DBGLOG("%s:Open()\n", __func__); 00790 cfsStatus = drv->Open("key0", flags, hkey); 00791 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error:%d:cfsStatus=%d", __func__, __LINE__, (int) cfsStatus); 00792 TEST_ASSERT_MESSAGE(cfsStatus >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00793 00794 CFSTORE_DBGLOG("%s:Delete()\n", __func__); 00795 cfsStatus = drv->Delete(hkey); 00796 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error:%d:cfsStatus=%d", __func__, __LINE__, (int) cfsStatus); 00797 TEST_ASSERT_MESSAGE(cfsStatus >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00798 00799 CFSTORE_DBGLOG("%s:Close()\n", __func__); 00800 cfsStatus = drv->Close(hkey); /////// <--- cfsStatus = ARM_CFSTORE_DRIVER_ERROR_PREEXISTING_KEY 00801 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error:%d:cfsStatus=%d", __func__, __LINE__, (int) cfsStatus); 00802 TEST_ASSERT_MESSAGE(cfsStatus >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00803 00804 CFSTORE_DBGLOG("%s:got status = %d\n", __func__, (int) cfsStatus); 00805 00806 CFSTORE_DBGLOG("%s:Uninitialize()\n", __func__); 00807 cfsStatus = drv->Uninitialize(); 00808 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error:%d:cfsStatus=%d", __func__, __LINE__, (int) cfsStatus); 00809 TEST_ASSERT_MESSAGE(cfsStatus >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00810 00811 return CaseNext; 00812 } 00813 00814 #endif /* STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS && STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS==0 */ 00815 00816 00817 static control_t cfstore_flush3_test_00(const size_t call_count) 00818 { 00819 int32_t ret = ARM_DRIVER_ERROR; 00820 ARM_CFSTORE_CAPABILITIES caps;; 00821 ARM_CFSTORE_DRIVER* drv = &cfstore_driver; 00822 00823 (void) call_count; 00824 00825 /* initialise the context */ 00826 caps = drv->GetCapabilities(); 00827 CFSTORE_LOG("%s:INITIALIZING: caps.asynchronous_ops=%lu\n", __func__, caps.asynchronous_ops); 00828 if(caps.asynchronous_ops == 1){ 00829 /* This is a sync mode only test. If this test is not built for sync mode, then skip testing return true 00830 * This means the test will conveniently pass when run in CI as part of async mode testing */ 00831 CFSTORE_LOG("*** Skipping test as binary built for flash journal async mode, and this test is sync-only%s", "\n"); 00832 return CaseNext; 00833 } 00834 ret = cfstore_test_startup(); 00835 CFSTORE_TEST_UTEST_MESSAGE(cfstore_flush3_utest_msg_g, CFSTORE_UTEST_MSG_BUF_SIZE, "%s:Error: failed to perform test startup (ret=%d).\n", __func__, (int) ret); 00836 TEST_ASSERT_MESSAGE(ret >= ARM_DRIVER_OK, cfstore_flush3_utest_msg_g); 00837 return CaseNext; 00838 } 00839 00840 /// @cond CFSTORE_DOXYGEN_DISABLE 00841 utest::v1::status_t greentea_setup(const size_t number_of_cases) 00842 { 00843 GREENTEA_SETUP(CFSTORE_FLUSH3_GREENTEA_TIMEOUT_S, "default_auto"); 00844 return greentea_test_setup_handler(number_of_cases); 00845 } 00846 00847 Case cases[] = { 00848 /* 1 2 3 4 5 6 7 */ 00849 /* 1234567890123456789012345678901234567890123456789012345678901234567890 */ 00850 Case("FLUSH3_test_00", cfstore_flush3_test_00), 00851 #if defined STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS && STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS==0 00852 Case("FLUSH3_test_01", cfstore_flush3_test_01), 00853 Case("FLUSH3_test_02", cfstore_flush3_test_02), 00854 #endif // STORAGE_DRIVER_CONFIG_HARDWARE_MTD_ASYNC_OPS 00855 }; 00856 00857 00858 /* Declare your test specification with a custom setup handler */ 00859 Specification specification(greentea_setup, cases); 00860 00861 /* mbedosV3++*/ 00862 int main() 00863 { 00864 return !Harness::run(specification); 00865 } 00866 /// @cond 00867
Generated on Tue Aug 9 2022 00:37:07 by
1.7.2