diff options
author | Tom Hughes <tomhughes@chromium.org> | 2019-08-23 15:06:57 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-09-03 20:48:41 +0000 |
commit | af51b9ea19c0ba4c6d57cdc4c5f3380647be3034 (patch) | |
tree | 92e5b04103e0342380c510bd632cbc7db43579a5 /test/uptime.c | |
parent | dfbc632cd5b5a856086249253a98bc83d8942a29 (diff) | |
download | chrome-ec-af51b9ea19c0ba4c6d57cdc4c5f3380647be3034.tar.gz |
common: Add uptime host command
This moves the EC_CMD_GET_UPTIME_INFO command from behind the
CONFIG_CMD_AP_RESET_LOG config in chipset.c into the generic
common/uptime.c file, so that all boards in the codebase can use it. If
CONFIG_CMD_AP_RESET_LOG is enabled, the "AP reset stats" will be filled.
Otherwise, ap_reset_stats is a no-op and recent_ap_reset is filled with
zero.
BRANCH=none
BUG=chromium:997314
TEST=cat /sys/kernel/debug/cros_fp/uptime
Change-Id: I3b6f91b2dd22d3d55b707309ec1fdfd26d42fd70
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1769393
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Diffstat (limited to 'test/uptime.c')
-rw-r--r-- | test/uptime.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/test/uptime.c b/test/uptime.c new file mode 100644 index 0000000000..7ff39f98db --- /dev/null +++ b/test/uptime.c @@ -0,0 +1,73 @@ +/* Copyright 2019 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include <stdbool.h> + +#include "common.h" +#include "ec_commands.h" +#include "host_command.h" +#include "test_util.h" +#include "timer.h" +#include "util.h" + +static bool get_ap_reset_stats_should_succeed = true; + +/* Mocks */ + +enum ec_error_list +get_ap_reset_stats(struct ap_reset_log_entry *reset_log_entries, + size_t num_reset_log_entries, uint32_t *resets_since_ec_boot) +{ + return get_ap_reset_stats_should_succeed ? EC_SUCCESS : EC_ERROR_INVAL; +} + +timestamp_t get_time(void) +{ + timestamp_t fake_time = { .val = 42 * MSEC }; + return fake_time; +} + +/* Tests */ + +test_static int test_host_uptime_info_command_success(void) +{ + int rv; + struct ec_response_uptime_info resp = { 0 }; + + get_ap_reset_stats_should_succeed = true; + + rv = test_send_host_command(EC_CMD_GET_UPTIME_INFO, 0, NULL, 0, &resp, + sizeof(resp)); + + TEST_ASSERT(rv == EC_RES_SUCCESS); + TEST_ASSERT(resp.time_since_ec_boot_ms == 42); + + return EC_RES_SUCCESS; +} + +test_static int test_host_uptime_info_command_failure(void) +{ + int rv; + struct ec_response_uptime_info resp = { 0 }; + + get_ap_reset_stats_should_succeed = false; + + rv = test_send_host_command(EC_CMD_GET_UPTIME_INFO, 0, NULL, 0, &resp, + sizeof(resp)); + + TEST_ASSERT(rv == EC_RES_ERROR); + + return EC_RES_SUCCESS; +} + +void run_test(void) +{ + test_reset(); + + RUN_TEST(test_host_uptime_info_command_success); + RUN_TEST(test_host_uptime_info_command_failure); + + test_print_result(); +} |