@@ -455,165 +455,6 @@ static void multi_set_test()
455
455
delete tdbs;
456
456
}
457
457
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
-
617
458
utest::v1::status_t greentea_failure_handler (const Case *const source, const failure_t reason)
618
459
{
619
460
greentea_case_failure_abort_handler (source, reason);
@@ -623,7 +464,6 @@ utest::v1::status_t greentea_failure_handler(const Case *const source, const fai
623
464
Case cases[] = {
624
465
Case (" TDBStore: White box test" , white_box_test, greentea_failure_handler),
625
466
Case (" TDBStore: Multiple set test" , multi_set_test, greentea_failure_handler),
626
- Case (" TDBStore: Error inject test" , error_inject_test, greentea_failure_handler),
627
467
};
628
468
629
469
utest::v1::status_t greentea_test_setup (const size_t number_of_cases)
0 commit comments