| /* Copyright 2019 The ChromiumOS Authors |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "common.h" |
| #include "ec_commands.h" |
| #include "host_command.h" |
| #include "test_util.h" |
| #include "timer.h" |
| #include "util.h" |
| |
| #include <stdbool.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(int argc, const char **argv) |
| { |
| test_reset(); |
| |
| RUN_TEST(test_host_uptime_info_command_success); |
| RUN_TEST(test_host_uptime_info_command_failure); |
| |
| test_print_result(); |
| } |