Skip to content

Commit f266e57

Browse files
author
Seppo Takalo
committed
Remove flaky error_inject_test
1 parent 5324a3c commit f266e57

File tree

1 file changed

+0
-160
lines changed
  • features/storage/TESTS/kvstore/tdbstore_whitebox

1 file changed

+0
-160
lines changed

features/storage/TESTS/kvstore/tdbstore_whitebox/main.cpp

Lines changed: 0 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -455,165 +455,6 @@ static void multi_set_test()
455455
delete tdbs;
456456
}
457457

458-
static void error_inject_test()
459-
{
460-
461-
#if !defined(TARGET_K64F) && !defined(TARGET_MCU_PSOC6)
462-
TEST_SKIP_MESSAGE("Kvstore API tests run only on K64F devices and PSoC 6");
463-
#endif
464-
465-
char *key;
466-
uint8_t *get_buf, *set_buf, *exists;
467-
size_t key_size = 8;
468-
size_t data_size = 16;
469-
size_t num_keys = 'Z' - 'A' + 1;
470-
size_t num_blocks = 4;
471-
size_t block_size = 1024;
472-
size_t actual_data_size;
473-
int result;
474-
uint8_t set_iters = 20;
475-
uint8_t i, key_ind;
476-
477-
key = new char[key_size + 1];
478-
get_buf = new uint8_t[data_size];
479-
set_buf = new uint8_t[data_size];
480-
exists = new uint8_t[num_keys];
481-
482-
uint8_t *dummy = new (std::nothrow) uint8_t[heap_alloc_threshold_size];
483-
TEST_SKIP_UNLESS_MESSAGE(dummy, "Not enough heap to run test");
484-
485-
// Don't use a non volatile BD here (won't work in this test)
486-
HeapBlockDevice bd(num_blocks * block_size, 1, 1, block_size);
487-
FlashSimBlockDevice flash_bd(&bd);
488-
489-
// Erase flash first, as we search the erase value later
490-
result = flash_bd.init();
491-
TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result);
492-
// We need to skip the test if we don't have enough memory for the heap block device.
493-
// However, this device allocates the erase units on the fly, so "erase" it via the flash
494-
// simulator. A failure here means we haven't got enough memory.
495-
result = flash_bd.erase(0, flash_bd.size());
496-
TEST_SKIP_UNLESS_MESSAGE(!result, "Not enough heap to run test");
497-
result = flash_bd.deinit();
498-
TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result);
499-
500-
delete[] dummy;
501-
502-
TDBStore *tdbs = new TDBStore(&flash_bd);
503-
504-
result = tdbs->init();
505-
TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result);
506-
507-
memset(exists, 0, num_keys);
508-
509-
for (i = 0; i < set_iters; i++) {
510-
for (key_ind = 0; key_ind < num_keys; key_ind++) {
511-
memset(key, 'A' + key_ind, key_size);
512-
key[key_size] = '\0';
513-
memset(set_buf, key_ind * i, data_size);
514-
if ((key_ind != (num_keys - 1)) && exists[key_ind] && !(rand() % 3)) {
515-
result = tdbs->remove(key);
516-
exists[key_ind] = 0;
517-
} else {
518-
result = tdbs->set(key, set_buf, data_size, 0);
519-
exists[key_ind] = 1;
520-
}
521-
TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result);
522-
}
523-
}
524-
525-
for (uint8_t get_iter = 0; get_iter < 2; get_iter++) {
526-
for (key_ind = 0; key_ind < num_keys; key_ind++) {
527-
memset(key, 'A' + key_ind, key_size);
528-
key[key_size] = '\0';
529-
if (key_ind == (num_keys - 1)) {
530-
// last key will hold the previous version at the second iteration (after being crippled)
531-
memset(set_buf, key_ind * (set_iters - get_iter - 1), data_size);
532-
} else {
533-
memset(set_buf, key_ind * (set_iters - 1), data_size);
534-
}
535-
result = tdbs->get(key, get_buf, data_size, &actual_data_size);
536-
if (exists[key_ind]) {
537-
TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result);
538-
TEST_ASSERT_EQUAL(data_size, actual_data_size);
539-
TEST_ASSERT_EQUAL_STRING_LEN(set_buf, get_buf, data_size);
540-
} else {
541-
TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_ITEM_NOT_FOUND, result);
542-
}
543-
}
544-
545-
if (get_iter) {
546-
break;
547-
}
548-
549-
// Cripple the last key in both areas
550-
uint8_t erase_val = (uint8_t) flash_bd.get_erase_value();
551-
uint8_t x;
552-
bd_addr_t addr = bd.size();
553-
554-
for (int area = 1; area >= 0; area--) {
555-
int j;
556-
bool found = false;
557-
558-
// look for last non blank
559-
while (addr && !found) {
560-
addr -= data_size;
561-
bd.read(get_buf, addr, data_size);
562-
for (j = data_size - 1; j >= 0; j--) {
563-
if (get_buf[j] != erase_val) {
564-
addr += j;
565-
x = get_buf[j] + 1;
566-
found = true;
567-
break;
568-
}
569-
}
570-
}
571-
572-
if (!found) {
573-
break;
574-
}
575-
576-
// Cripple last non blank in area
577-
bd.program(&x, addr, 1);
578-
addr -= j;
579-
580-
if ((area == 0) || !addr) {
581-
break;
582-
}
583-
584-
// Skip at least one blank erase unit
585-
uint32_t num_blanks = 0;
586-
memset(set_buf, erase_val, data_size);
587-
while (addr && (num_blanks < block_size)) {
588-
bd.read(get_buf, addr, data_size);
589-
if (memcmp(get_buf, set_buf, data_size)) {
590-
num_blanks = 0;
591-
} else {
592-
num_blanks += data_size;
593-
}
594-
addr -= data_size;
595-
}
596-
}
597-
598-
result = tdbs->get(key, get_buf, data_size, &actual_data_size);
599-
TEST_ASSERT_EQUAL_ERROR_CODE(MBED_ERROR_INVALID_DATA_DETECTED, result);
600-
601-
result = tdbs->deinit();
602-
TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result);
603-
604-
result = tdbs->init();
605-
TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, result);
606-
}
607-
608-
delete[] key;
609-
delete[] get_buf;
610-
delete[] set_buf;
611-
delete[] exists;
612-
613-
delete tdbs;
614-
}
615-
616-
617458
utest::v1::status_t greentea_failure_handler(const Case *const source, const failure_t reason)
618459
{
619460
greentea_case_failure_abort_handler(source, reason);
@@ -623,7 +464,6 @@ utest::v1::status_t greentea_failure_handler(const Case *const source, const fai
623464
Case cases[] = {
624465
Case("TDBStore: White box test", white_box_test, greentea_failure_handler),
625466
Case("TDBStore: Multiple set test", multi_set_test, greentea_failure_handler),
626-
Case("TDBStore: Error inject test", error_inject_test, greentea_failure_handler),
627467
};
628468

629469
utest::v1::status_t greentea_test_setup(const size_t number_of_cases)

0 commit comments

Comments
 (0)