From 4694ba08b86b2d44f8a0eee3254fdaf0964cea75 Mon Sep 17 00:00:00 2001 From: jialuxiao Date: Tue, 24 Dec 2024 12:20:22 +0800 Subject: [PATCH] testing/monkey: add running-minutes parameter Signed-off-by: jialuxiao --- testing/monkey/monkey_main.c | 37 +++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/testing/monkey/monkey_main.c b/testing/monkey/monkey_main.c index d9b61a21732..1ee6945deff 100644 --- a/testing/monkey/monkey_main.c +++ b/testing/monkey/monkey_main.c @@ -91,6 +91,8 @@ # define MONKEY_SCREEN_GETVIDEOINFO LCDDEVIO_GETVIDEOINFO #endif +#define MONKEY_RUNNING_MINUTES_MAX (UINT32_MAX / 60 / 1000) + #define MONKEY_SCREEN_HOR_RES_DEFAULT 480 #define MONKEY_SCREEN_VER_RES_DEFAULT 480 @@ -137,6 +139,7 @@ struct monkey_param_s int btn_bit; int log_level; struct monkey_event_config_s event[MONKEY_EVENT_LAST]; + uint32_t running_minutes; }; enum monkey_wait_res_e @@ -170,7 +173,8 @@ static void show_usage(FAR const char *progname, int exitcode) " --duration-click " " --duration-longpress " " --duration-drag \n" - " --screen-offset \n", + " --screen-offset \n" + " --running-minutes \n", progname); printf("\nWhere:\n"); @@ -200,6 +204,7 @@ static void show_usage(FAR const char *progname, int exitcode) "-.\n"); printf(" --screen-offset Screen offset: " ",\n"); + printf(" --running-minutes Running minutes.\n"); exit(exitcode); } @@ -304,6 +309,8 @@ static FAR struct monkey_s *monkey_init( config.event[i].duration_max); } + MONKEY_LOG_NOTICE("Running minutes: %" PRIu32, param->running_minutes); + if (MONKEY_IS_UINPUT_TYPE(param->dev_type_mask)) { if (param->file_path) @@ -377,6 +384,17 @@ static void parse_long_commandline(int argc, FAR char **argv, ","); break; + case 7: + OPTARG_TO_VALUE(param->running_minutes, uint32_t, 10); + + if (param->running_minutes > MONKEY_RUNNING_MINUTES_MAX) + { + MONKEY_LOG_WARN("Running minutes must be less than %d", + MONKEY_RUNNING_MINUTES_MAX); + param->running_minutes = MONKEY_RUNNING_MINUTES_MAX; + } + break; + default: MONKEY_LOG_WARN("Unknown longindex: %d", longindex); show_usage(argv[0], EXIT_FAILURE); @@ -403,6 +421,7 @@ static void parse_commandline(int argc, FAR char **argv, {"duration-longpress", required_argument, NULL, 0 }, {"duration-drag", required_argument, NULL, 0 }, {"screen-offset", required_argument, NULL, 0 }, + {"running-minutes", required_argument, NULL, 0 }, {0, 0, NULL, 0 } }; @@ -545,6 +564,7 @@ int main(int argc, FAR char *argv[]) { struct monkey_param_s param; FAR struct monkey_s *monkey; + uint32_t start_tick; parse_commandline(argc, argv, ¶m); monkey = monkey_init(¶m); @@ -554,11 +574,26 @@ int main(int argc, FAR char *argv[]) return ERROR; } + start_tick = monkey_tick_get(); + while (1) { enum monkey_wait_res_e res; int sleep_ms; + if (param.running_minutes > 0) + { + uint32_t elaps = monkey_tick_elaps(monkey_tick_get(), start_tick); + + if (elaps > param.running_minutes * 60 * 1000) + { + MONKEY_LOG_WARN("Running time is over: %" PRIu32 + " minutes, exit...", + param.running_minutes); + break; + } + } + sleep_ms = monkey_update(monkey); if (sleep_ms < 0)