From af51b9ea19c0ba4c6d57cdc4c5f3380647be3034 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Fri, 23 Aug 2019 15:06:57 -0700 Subject: 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 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1769393 Reviewed-by: Tim Wawrzynczak --- test/uptime.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 test/uptime.c (limited to 'test/uptime.c') 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 + +#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(); +} -- cgit v1.2.1