940 Commits

Author SHA1 Message Date
Eric
75047f52be
force kill windows test processes
In situations like timeouts, windows will hang when attempting to close the test process streams. In this case, we have to force kill the test process externally. This is the same process as force killing hardhat nodes after they are already terminated, but windows refuses hangs when closing their process streams. This commit creates a forceKillProcess utility that allows a process to be killed by its process name and matching commandline criteria, like TestId (for test process) or --port (for hardhat)
2025-06-04 16:01:27 +10:00
Eric
cbe3305dc5
Reinstate unittest > unittest2, move eventually to ./asynctest 2025-06-04 16:01:27 +10:00
Eric
67ebe0b3e3
Don't store hardhat logs in memory and do not print to term even if DebugHardhat=true
Hardhat output is logged to file in hardhat.log for each test, and printing to screen is not necessarily needed as it is already logged to file and can create clutter in the output, so stop writing logging output to memory and writing to screen.
2025-06-04 16:01:26 +10:00
Eric
f09c4357c9
re-enable debug logging in codex nodes
Since the HttpClient now supports async, re-enable debug logging in the Codex nodes
2025-06-04 16:01:26 +10:00
Eric
fc801f9db7
fix makefile: DEBUG enables DebugHardhat 2025-06-04 16:01:26 +10:00
Eric
61b45bb921
Remove new implementation of eventuallySafe by overidding the default params of eventually
With this fix in, there is no need to use the asynctest update that sets longer defaults for eventually, so downgrade asynctest
2025-06-04 16:01:26 +10:00
Eric
0fca36344f
safeEventually > eventuallySafe 2025-06-04 16:01:25 +10:00
Eric
e3d0304ef7
fix: forcefully kill windows hardhat processes after termination
On windows, termination of hardhat processes would not actually kill the process, and then closing the process' streams would then hang the calling nim process. To get around this, the process is now killed externally using a script, winkillhardhat.sh. This script first queries open processes by inspecting the command line value of all "node.exe" processes, searching for "vendor/codex-contracts-eth" and for the port parameter it was started with. After querying, the process is killed using the `Stop-Process` powershell command (passing the pid of the windows process).
2025-06-04 16:00:51 +10:00
Arnaud
7006c6c727
Reduce the number of requests for asserts in tests 2025-06-04 16:00:50 +10:00
Eric
385319c63a
formatting 2025-06-04 15:58:33 +10:00
Eric
bedd07303b
attempt to kill windows hardhat process
Windows hangs when attempting to hardhat's process streams, so try to kill the process externally.
TODO: This doesn't actually kill the process, as the pid given by chronos is an msys2 pid, and the command is used to kill a windows process. `ps -ef` in msys2 also doesn't show hardhat running as a process, so the only way to kill the process is to kill it with the windows pid. So we need to figure out a way to get a windows pid from the msys2 pid.
2025-06-04 15:58:33 +10:00
Eric
91b5084047
add new line to stdout/stderr logs when logging lines 2025-06-04 15:58:33 +10:00
Eric
1b47e16405
fix compilation error 2025-06-04 15:58:32 +10:00
Eric
ec40d73d0d
write to stdout/stderr as the stream is read, rearrange node stop logging 2025-06-04 15:58:32 +10:00
Eric
cca846f073
remove unneeded exception from start raises 2025-06-04 15:58:32 +10:00
Eric
ff1acb9391
Add "starting test" log to multinodes logging output for context 2025-06-04 15:58:32 +10:00
Eric
6567a399de
unittest2 > unittest1 2025-06-04 15:58:32 +10:00
Eric
3a486e974d
remove noCancel from node startup in multinodes 2025-06-04 15:58:32 +10:00
Eric
3eb1edceb4
Remove noCancel from captureProcessOutput call 2025-06-04 15:58:31 +10:00
Eric
7610b4e8bf
Continuously read from stdout/stderr to prevent buffers from filling 2025-06-04 15:58:31 +10:00
Eric
2ebf7b1568
reinstate logging after it also failed on windows and ci 2025-06-04 15:58:31 +10:00
Eric
4789f6a879
disable all logging to see if windows passes 2025-06-04 15:58:31 +10:00
Eric
b3162061e8
Move test assertions at end of start so that test.status can be set after timeout 2025-06-04 15:58:31 +10:00
Eric
72e687f828
fix rebase on top of async http client change 2025-06-04 15:58:31 +10:00
Eric
5371aa2c7c
Remove debug from twonodesconfig 2025-06-04 15:58:30 +10:00
Eric
1f859b24fe
Add wait to stdout/stderr stream future 2025-06-04 15:58:30 +10:00
Eric
061ccce403
fix windows issue where reading stdout/stderr hangs forever 2025-06-04 15:58:30 +10:00
Eric
06337a0512
ensure runTests doesn't raise CancelledError
TrackedFutures now only accepts Futures that do not raise any exceptions
2025-06-04 15:58:30 +10:00
Eric
d2734a686e
Remove DebugCodexNodes
- Codex nodes will log to file by default, so this parameter could be removed.
- Add NoCodexLogFilters define, that unsets chronicles' topic filters when logging codex nodes chronicles logs to file
2025-06-04 15:58:30 +10:00
Eric
05ec9e6b9c
do not re-raise CancelledError as convertError not used in async procs 2025-06-04 15:58:30 +10:00
Eric
324035ed27
re-raise CancelledError 2025-06-04 15:58:29 +10:00
Eric
e69319b5a2
readd prevention of hanging when closing process streams on windows 2025-06-04 15:58:29 +10:00
Eric
ee0d2866c8
Add debugging and assertions after test run
Mostly to debug in windows
2025-06-04 15:58:29 +10:00
Eric
bf13173e58
CI yml fix for gcc-14 2025-06-04 15:58:29 +10:00
Eric
8e6eca6bc0
Update NBS action.yml in CI 2025-06-04 15:58:28 +10:00
Eric
18e9dc3529
formatting 2025-06-04 15:56:04 +10:00
Eric
e2706a68b3
formatting 2025-06-04 15:56:04 +10:00
Eric
701421c26c
Fix process hanging after restart 2025-06-04 15:56:03 +10:00
Eric
5ff15da492
refactor: debug and logging
- Move test manager values to config object
- Increase codex port separation (between api and disc ports) in an attempt to prevent overlap across tests (ie Test1: api=8000(tcp), disc=9000(udp), and Test2: api=9000(tcp), disc=10000(udp))
- print stderr when exitcode == 1 if there's < 3 lines of stdout
- Logging:
  - Always write test manager harness chronicles logs to file, ie testmanager.chronicles.log in the root of the `integration/logs/<run name>` dir
  - Always write individual test stdout to file, ie `<test file name>.stdout.log` in the root of the `integration/logs/<run name>/<test file name>` dir
  - On error, print stderr to screen and write stderr to file. Or on failure, if stdout is sufficiently short, write stderr to screen and file in `integration/logs/<run name>/<test file name>/<test file name>.stderr.log`
  - When debugging, ie DebugCodexNodes == true
- Removes DebugTestHarness from controlling anything other than printing chronicles output from the testmanager to the terminal
- Now, if DebugCodexNodes is set to true:
  - Codex node (chronicles) output for multinodesuite tests is logged to file, eg `integration/logs/<run name>/<test file name>/<test name>/<role>_<idx>.log`
  - Codex chronicles output is logged to stdout, which also written to file (see above)
2025-06-04 15:56:03 +10:00
Eric
831ad9170b
enable more logging to file
- test harness chronicles logs to log file
- test process stdout and stderr to log file for each integration test file

Note: does not work when DEBUG=1 is not present in make command
2025-06-04 15:56:03 +10:00
Eric
8f21cacc79
Ensure started tests are torn down properly on timeout 2025-06-04 15:56:03 +10:00
Eric
aacf22a1a0
filter out log topics that are making too much noise
- set disabled topics during codex compilation due to lack of support for disabling chronicles topics at runtime in codex
- ensure that TRACE logs are set for nodes running in multinodesuite when DebugCodexNodes is set
- add TRACE loglevel to testcli
2025-06-04 15:56:03 +10:00
Slava
e0b222a10c
ci: check runner for parallel integration tests and use value from vars 2025-06-04 15:56:02 +10:00
Eric
1051e464e0
Colorise stdout from test runs
Adds terminal colour to [OK], [FAILED], and [Suite]

# Conflicts:
#	tests/integration/testmanager.nim
2025-06-04 15:55:18 +10:00
Eric
ca62539e9c
Refactor process launch
Refactor to keep a process handle so that the processes can be stopped on timeout.
2025-06-04 15:55:17 +10:00
Eric
0309cfd063
run tests async from start so that stop can cancel all tracked futures 2025-06-04 15:55:17 +10:00
Eric
bd68388d2a
Add proper async exception tracking to multinodesuite 2025-06-04 15:55:17 +10:00
Eric
faaddb879b
bump chronos to 4.0.4
potentially fixes an issue on macos where process exit codes were reported -1
2025-06-04 15:55:17 +10:00
Eric
c1f0888096
formatting 2025-06-04 15:55:17 +10:00
Eric
58153ee921
CI: enable artefact upload for parallel tests 2025-06-04 15:55:16 +10:00