Merge pull request #11825 from rajkan01/feature-baremetal-greentea-storage

Bare metal green tea test for storage component
pull/11870/head
Martin Kojtal 2019-11-12 11:01:29 +01:00 committed by GitHub
commit dd753abcb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 40 additions and 11 deletions

View File

@ -13,6 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if !defined(MBED_CONF_RTOS_PRESENT)
#error [NOT_SUPPORTED] filesystem test cases require a RTOS to run
#else
#include "mbed.h"
#include "greentea-client/test_env.h"
@ -207,3 +210,4 @@ int main()
{
return !Harness::run(specification);
}
#endif // !defined(MBED_CONF_RTOS_PRESENT)

View File

@ -308,6 +308,7 @@ end:
delete[] write_block;
}
#if defined(MBED_CONF_RTOS_PRESENT)
static void test_thread_job()
{
static int thread_num = 0;
@ -392,8 +393,8 @@ void test_multi_threads()
delete[] bd_thread;
}
}
#endif
void test_erase_functionality()
{
@ -727,7 +728,9 @@ typedef struct {
template_case_t template_cases[] = {
{"Testing Init block device", test_init_bd, greentea_failure_handler},
{"Testing read write random blocks", test_random_program_read_erase, greentea_failure_handler},
#if defined(MBED_CONF_RTOS_PRESENT)
{"Testing multi threads erase program read", test_multi_threads, greentea_failure_handler},
#endif
{"Testing contiguous erase, write and read", test_contiguous_erase_write_read, greentea_failure_handler},
{"Testing BlockDevice erase functionality", test_erase_functionality, greentea_failure_handler},
{"Testing program read small data sizes", test_program_read_small_data_sizes, greentea_failure_handler},

View File

@ -15,6 +15,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if !defined(MBED_CONF_RTOS_PRESENT)
#error [NOT_SUPPORTED] Kvstore API test cases require a RTOS to run
#else
#include "rtos/Thread.h"
#include "mbed_trace.h"
@ -522,3 +525,4 @@ int main()
}
#endif // !defined(TARGET_K64F) && !defined(TARGET_ARM_FM)
#endif // !defined(MBED_CONF_RTOS_PRESENT)

View File

@ -14,6 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if !defined(MBED_CONF_RTOS_PRESENT)
#error [NOT_SUPPORTED] Kvstore API test cases require a RTOS to run
#else
#include "SecureStore.h"
#include "TDBStore.h"
@ -857,3 +860,4 @@ int main()
}
#endif // !defined(TARGET_K64F) && !defined(TARGET_ARM_FM)
#endif // !defined(MBED_CONF_RTOS_PRESENT)

View File

@ -14,6 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if !defined(MBED_CONF_RTOS_PRESENT)
#error [NOT_SUPPORTED] Kvstore API test cases require a RTOS to run
#else
#include "SecureStore.h"
#include "TDBStore.h"
@ -860,3 +863,4 @@ int main()
}
#endif // !defined(TARGET_K64F) && !defined(TARGET_ARM_FM)
#endif // !defined(MBED_CONF_RTOS_PRESENT)

View File

@ -15,7 +15,9 @@
* limitations under the License.
*/
#if defined(MBED_CONF_RTOS_PRESENT)
#include "Thread.h"
#endif
#include "mbed_error.h"
#include "greentea-client/test_env.h"
#include "unity/unity.h"
@ -33,10 +35,13 @@ static size_t actual_size = 0;
static const size_t buffer_size = 20;
static const int num_of_threads = 3;
static const char num_of_keys = 3;
#if defined(MBED_CONF_RTOS_PRESENT)
/* Forked 3 threads plus misc, so minimum (4 * OS_STACK_SIZE) heap are required. */
static const int heap_alloc_threshold_size = 4 * OS_STACK_SIZE;
#else
/* Bare metal does not require memory for threads, so use just minimum for test */
static const int heap_alloc_threshold_size = MBED_CONF_TARGET_BOOT_STACK_SIZE;
#endif
static const char *keys[] = {"key1", "key2", "key3"};
static int init_res = MBED_ERROR_NOT_READY;
@ -144,6 +149,7 @@ static void test_thread_set(char *th_key)
//get several keys multithreaded
static void set_several_keys_multithreaded()
{
#if defined(MBED_CONF_RTOS_PRESENT)
TEST_SKIP_UNLESS(!init_res);
rtos::Thread kvstore_thread[num_of_threads];
osStatus threadStatus;
@ -169,6 +175,7 @@ static void set_several_keys_multithreaded()
res = kv_remove(keys[i]);
TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res);
}
#endif
}
//set key "write once" and try to set it again
@ -464,6 +471,7 @@ static void test_thread_get(const void *th_key)
//get several keys multithreaded
static void get_several_keys_multithreaded()
{
#if defined(MBED_CONF_RTOS_PRESENT)
TEST_SKIP_UNLESS(!init_res);
int i = 0, res = 0;
rtos::Thread kvstore_thread[num_of_threads];
@ -489,6 +497,7 @@ static void get_several_keys_multithreaded()
res = kv_remove(keys[i]);
TEST_ASSERT_EQUAL_ERROR_CODE(MBED_SUCCESS, res);
}
#endif
}
/*----------------remove()------------------*/
@ -924,7 +933,9 @@ Case cases[] = {
Case("set_buffer_null_size_not_zero", set_buffer_null_size_not_zero, greentea_failure_handler),
Case("set_buffer_size_is_zero", set_buffer_size_is_zero, greentea_failure_handler),
Case("set_same_key_several_time", set_same_key_several_time, greentea_failure_handler),
#if defined(MBED_CONF_RTOS_PRESENT)
Case("set_several_keys_multithreaded", set_several_keys_multithreaded, greentea_failure_handler),
#endif
Case("set_write_once_flag_try_set_twice", set_write_once_flag_try_set_twice, greentea_failure_handler),
Case("set_write_once_flag_try_remove", set_write_once_flag_try_remove, greentea_failure_handler),
Case("set_key_value_one_byte_size", set_key_value_one_byte_size, greentea_failure_handler),
@ -944,8 +955,9 @@ Case cases[] = {
Case("get_non_existing_key", get_non_existing_key, greentea_failure_handler),
Case("get_removed_key", get_removed_key, greentea_failure_handler),
Case("get_key_that_was_set_twice", get_key_that_was_set_twice, greentea_failure_handler),
#if defined(MBED_CONF_RTOS_PRESENT)
Case("get_several_keys_multithreaded", get_several_keys_multithreaded, greentea_failure_handler),
#endif
Case("remove_key_null", remove_key_null, greentea_failure_handler),
Case("remove_key_length_exceeds_max", remove_key_length_exceeds_max, greentea_failure_handler),
Case("remove_non_existing_key", remove_non_existing_key, greentea_failure_handler),

View File

@ -14,6 +14,7 @@
* limitations under the License.
*/
#include "nvstore.h"
#ifdef MBED_CONF_RTOS_PRESENT
#include "Thread.h"
@ -396,6 +397,7 @@ clean:
delete[] nvstore_testing_buf_get;
}
#ifdef MBED_CONF_RTOS_PRESENT
static void thread_test_check_key(uint16_t key)
{
uint8_t get_buff[thr_test_max_data_size];
@ -422,7 +424,6 @@ static void thread_test_check_key(uint16_t key)
}
#ifdef MBED_CONF_RTOS_PRESENT
static void thread_test_worker()
{
int ret;
@ -444,11 +445,9 @@ static void thread_test_worker()
wait_ms(1);
}
}
#endif
static void nvstore_multi_thread_test()
{
#ifdef MBED_CONF_RTOS_PRESENT
int i, result;
uint16_t size;
uint16_t key;
@ -562,8 +561,6 @@ clean:
}
nvstore.reset();
#endif
}
@ -578,7 +575,6 @@ static void race_test_worker(void *buf)
static void nvstore_race_test()
{
#ifdef MBED_CONF_RTOS_PRESENT
int i;
uint16_t initial_buf_size;
int ret;
@ -668,8 +664,8 @@ clean:
delete[] buffs[i];
}
delete[] get_buff;
#endif
}
#endif
@ -681,8 +677,10 @@ utest::v1::status_t greentea_failure_handler(const Case *const source, const fai
Case cases[] = {
Case("NVStore: Basic functionality", nvstore_basic_functionality_test, greentea_failure_handler),
#if defined(MBED_CONF_RTOS_PRESENT)
Case("NVStore: Race test", nvstore_race_test, greentea_failure_handler),
Case("NVStore: Multiple thread test", nvstore_multi_thread_test, greentea_failure_handler),
#endif
};
utest::v1::status_t greentea_test_setup(const size_t number_of_cases)