diff options
Diffstat (limited to 'zephyr/test/jump_tags/src/jump_tags.c')
-rw-r--r-- | zephyr/test/jump_tags/src/jump_tags.c | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/zephyr/test/jump_tags/src/jump_tags.c b/zephyr/test/jump_tags/src/jump_tags.c deleted file mode 100644 index a2a377bb35..0000000000 --- a/zephyr/test/jump_tags/src/jump_tags.c +++ /dev/null @@ -1,176 +0,0 @@ -/* Copyright 2022 The ChromiumOS Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "ec_commands.h" -#include "hooks.h" -#include "host_command.h" -#include "sysjump.h" -#include "system.h" -#include "system_fake.h" - -#include <setjmp.h> - -#include <zephyr/kernel.h> -#include <zephyr/ztest.h> - -#define TEST_BASIC_JUMP_TAG 0x9901 -#define TEST_MISSING_JUMP_TAG 0x9902 -#define TEST_MAX_JUMP_TAG 0x9903 -#define TEST_TOO_BIG_JUMP_TAG 0x9904 - -#define TEST_JUMP_TAG_VERSION 1 - -#define SOME_STR_VAL "JumpTagTest" - -void (*add_tag_func)(void); - -struct test_basic_jump_data_struct { - char some_str[32]; -}; - -struct test_max_jump_data_struct { - char some_str[JUMP_TAG_MAX_SIZE]; -}; - -struct test_too_big_jump_data_struct { - char some_str[JUMP_TAG_MAX_SIZE + 1]; -}; - -static void system_before(void *data) -{ - add_tag_func = NULL; - system_common_pre_init(); - system_set_shrspi_image_copy(EC_IMAGE_RO); -} - -static void do_fake_sysjump(void) -{ - jmp_buf env; - enum ec_image target_image = system_get_image_copy() == EC_IMAGE_RO ? - EC_IMAGE_RW : - EC_IMAGE_RO; - - if (!setjmp(env)) { - system_fake_setenv(&env); - system_run_image_copy(target_image); - zassert_unreachable(); - } - - system_set_shrspi_image_copy(target_image); - zassert_equal(system_get_image_copy(), target_image); -} - -static void add_max_jump_tag(void) -{ - struct test_max_jump_data_struct max_tag = { - .some_str = SOME_STR_VAL, - }; - zassert_ok(system_add_jump_tag(TEST_MAX_JUMP_TAG, TEST_JUMP_TAG_VERSION, - sizeof(max_tag), &max_tag)); -} - -static void add_too_big_jump_tag(void) -{ - struct test_too_big_jump_data_struct too_big_tag = { - .some_str = SOME_STR_VAL, - }; - zassert_equal(system_add_jump_tag(TEST_TOO_BIG_JUMP_TAG, - TEST_JUMP_TAG_VERSION, - sizeof(too_big_tag), &too_big_tag), - EC_ERROR_INVAL); -} - -static void add_too_many_jump_tags(void) -{ - int rv; - struct test_max_jump_data_struct max_tag = { - .some_str = SOME_STR_VAL, - }; - /* Ensure at least one tag can be added, but not 10 */ - for (int i = 0; i < 10; i++) { - rv = system_add_jump_tag(TEST_MAX_JUMP_TAG, - TEST_JUMP_TAG_VERSION, sizeof(max_tag), - &max_tag); - if (rv != 0) { - zassert_equal(rv, EC_ERROR_INVAL); - zassert_true(i > 0); - return; - } - } - zassert_unreachable( - "Adding too many jump tags failed to result in an error"); -} - -static void add_basic_jump_tag(void) -{ - struct test_basic_jump_data_struct basic_tag = { - .some_str = SOME_STR_VAL, - }; - zassert_ok(system_add_jump_tag(TEST_BASIC_JUMP_TAG, - TEST_JUMP_TAG_VERSION, sizeof(basic_tag), - &basic_tag)); -} - -static void test_sysjump_hook(void) -{ - if (add_tag_func) - add_tag_func(); -} -DECLARE_HOOK(HOOK_SYSJUMP, test_sysjump_hook, HOOK_PRIO_DEFAULT); - -static void check_for_jump_tag(int jump_tag, int expected_size) -{ - int version; - int size; - const unsigned char *data; - - data = system_get_jump_tag(jump_tag, &version, &size); - zassert_equal(size, expected_size); - zassert_equal(version, TEST_JUMP_TAG_VERSION); - zassert_equal(strcmp(data, SOME_STR_VAL), 0); -} - -ZTEST(jump_tags, test_get_missing_jump_tag) -{ - int version; - int size; - struct test_jump_data_struct *data; - - data = (struct test_jump_data_struct *)system_get_jump_tag( - TEST_MISSING_JUMP_TAG, &version, &size); - zassert_equal(data, NULL); -} - -ZTEST(jump_tags, test_add_max_jump_tag) -{ - add_tag_func = add_max_jump_tag; - do_fake_sysjump(); - check_for_jump_tag(TEST_MAX_JUMP_TAG, - sizeof(struct test_max_jump_data_struct)); -} - -ZTEST(jump_tags, test_too_big_jump_tag) -{ - add_tag_func = add_too_big_jump_tag; - do_fake_sysjump(); -} - -ZTEST(jump_tags, test_too_many_jump_tags) -{ - add_tag_func = add_too_many_jump_tags; - do_fake_sysjump(); - check_for_jump_tag(TEST_MAX_JUMP_TAG, - sizeof(struct test_max_jump_data_struct)); -} - -ZTEST(jump_tags, test_add_basic_jump_tag) -{ - add_tag_func = add_basic_jump_tag; - do_fake_sysjump(); - check_for_jump_tag(TEST_BASIC_JUMP_TAG, - sizeof(struct test_basic_jump_data_struct)); -} - -ZTEST_SUITE(jump_tags, NULL, NULL, system_before, NULL, NULL); |