From 6b7e77b46a4936a8821dba65abc84047cbcc3b89 Mon Sep 17 00:00:00 2001 From: Zvonimir Sabljic Date: Thu, 10 Aug 2023 08:38:56 +0200 Subject: [PATCH] Set limits to executing commandss --- euclid/const/code_execution.py | 4 +++- euclid/helpers/cli.py | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/euclid/const/code_execution.py b/euclid/const/code_execution.py index 48da518..5f74281 100644 --- a/euclid/const/code_execution.py +++ b/euclid/const/code_execution.py @@ -1 +1,3 @@ -MAX_COMMAND_DEBUG_TRIES = 3 \ No newline at end of file +MAX_COMMAND_DEBUG_TRIES = 3 +MIN_COMMAND_RUN_TIME = 2000 +MAX_COMMAND_RUN_TIME = 30000 diff --git a/euclid/helpers/cli.py b/euclid/helpers/cli.py index d5fb30e..2a72fee 100644 --- a/euclid/helpers/cli.py +++ b/euclid/helpers/cli.py @@ -11,7 +11,7 @@ from database.database import get_command_run_from_hash_id, save_command_run from const.function_calls import DEBUG_STEPS_BREAKDOWN from utils.questionary import styled_text -from const.code_execution import MAX_COMMAND_DEBUG_TRIES +from const.code_execution import MAX_COMMAND_DEBUG_TRIES, MIN_COMMAND_RUN_TIME, MAX_COMMAND_RUN_TIME def enqueue_output(out, q): for line in iter(out.readline, ''): @@ -42,7 +42,8 @@ def execute_command(project, command, timeout=5000): # check if we already have the command run saved if timeout < 1000: timeout *= 1000 - timeout = max(timeout, 2000) + timeout = min(max(timeout, MIN_COMMAND_RUN_TIME), MAX_COMMAND_RUN_TIME) + print(colored(f'Can i execute the command: `{command}` with {timeout}ms timeout?', 'white', attrs=['bold'])) project.command_runs_count += 1 command_run = get_command_run_from_hash_id(project, command)