test: Fix CLI_MAX_ARG_SIZE issues

This commit is contained in:
MarcoFalke
2025-08-23 11:31:59 +02:00
parent 73220fc0f9
commit facfde2cdc
2 changed files with 20 additions and 4 deletions

View File

@@ -46,7 +46,12 @@ BITCOIND_PROC_WAIT_TIMEOUT = 60
# The size of the blocks xor key
# from InitBlocksdirXorKey::xor_key.size()
NUM_XOR_BYTES = 8
CLI_MAX_ARG_SIZE = 131071 # many systems have a 128kb limit per arg (MAX_ARG_STRLEN)
# Many systems have a 128kB limit for a command size. Depending on the
# platform, this limit may be larger or smaller. Moreover, when using the
# 'bitcoin' command, it may internally insert more args, which must be
# accounted for. There is no need to pick the largest possible value here
# anyway and it should be fine to set it to 1kB in tests.
TEST_CLI_MAX_ARG_SIZE = 1024
# The null blocks key (all 0s)
NULL_BLK_XOR_KEY = bytes([0] * NUM_XOR_BYTES)
@@ -928,10 +933,14 @@ class TestNodeCLI():
if clicommand is not None:
p_args += [clicommand]
p_args += pos_args + named_args
max_arg_size = max(len(arg) for arg in p_args)
# TEST_CLI_MAX_ARG_SIZE is set low enough that checking the string
# length is enough and encoding to bytes is not needed before
# calculating the sum.
sum_arg_size = sum(len(arg) for arg in p_args)
stdin_data = self.input
if max_arg_size > CLI_MAX_ARG_SIZE:
self.log.debug(f"Cli: Command size {max_arg_size} too large, using stdin")
if sum_arg_size >= TEST_CLI_MAX_ARG_SIZE:
self.log.debug(f"Cli: Command size {sum_arg_size} too large, using stdin")
rpc_args = "\n".join([arg for arg in p_args[base_arg_pos:]])
if stdin_data is not None:
stdin_data += "\n" + rpc_args