56 Commits

Author SHA1 Message Date
Eric
e732efa61a
verbose unittest2 output to stdout 2025-11-04 21:05:16 +11:00
Eric
603110b990
fix compilation errors in windows 2025-11-04 21:04:56 +11:00
Eric
9e0d151c6b
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-11-04 20:59:57 +11:00
Eric
50bbf8ac31
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-11-04 20:59:57 +11:00
Eric
98f3ff76e0
add new line to stdout/stderr logs when logging lines 2025-11-04 20:16:05 +11:00
Eric
c93694ac36
write to stdout/stderr as the stream is read, rearrange node stop logging 2025-11-04 20:16:04 +11:00
Eric
58b70a5ee3
remove unneeded exception from start raises 2025-11-04 20:16:04 +11:00
Eric
389ce830d9
Remove noCancel from captureProcessOutput call 2025-11-04 20:16:03 +11:00
Eric
c1b36e7f21
Continuously read from stdout/stderr to prevent buffers from filling 2025-11-04 20:16:03 +11:00
Eric
e86f596133
reinstate logging after it also failed on windows and ci 2025-11-04 20:16:03 +11:00
Eric
2d8783f49e
disable all logging to see if windows passes 2025-11-04 20:16:03 +11:00
Eric
c22cc10d48
Move test assertions at end of start so that test.status can be set after timeout 2025-11-04 20:16:03 +11:00
Eric
828fcf6edb
Add wait to stdout/stderr stream future 2025-11-04 20:16:02 +11:00
Eric
8eb5013b5a
fix windows issue where reading stdout/stderr hangs forever 2025-11-04 20:16:02 +11:00
Eric
6d1b924c41
ensure runTests doesn't raise CancelledError
TrackedFutures now only accepts Futures that do not raise any exceptions
2025-11-04 20:16:02 +11:00
Eric
338ee181d3
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-11-04 20:16:02 +11:00
Eric
1dc20de0c2
Add debugging and assertions after test run
Mostly to debug in windows
2025-11-04 20:16:01 +11:00
Eric
dff1ca961f
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-11-04 20:16:01 +11:00
Eric
a1ea23007f
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-11-04 20:16:00 +11:00
Eric
e83a692b03
Ensure started tests are torn down properly on timeout 2025-11-04 20:15:16 +11:00
Eric
ff62751cce
Colorise stdout from test runs
Adds terminal colour to [OK], [FAILED], and [Suite]

# Conflicts:
#	tests/integration/testmanager.nim
2025-11-04 20:12:44 +11:00
Eric
53a3a2ae18
Refactor process launch
Refactor to keep a process handle so that the processes can be stopped on timeout.
2025-11-04 20:12:44 +11:00
Eric
8a8030c298
run tests async from start so that stop can cancel all tracked futures 2025-11-04 20:12:44 +11:00
Eric
afe31d7319
clean up 2025-11-04 20:12:42 +11:00
Eric
7c2254a249
increase port gap by 1000 to avoid clashes in windows 2025-11-04 20:12:11 +11:00
Eric
1188360197
update Make flag to simply debug
DEBUG -> enables DebugCodexNodes, DebugTestHarness, and ShowContinuousStatusUpdates
DEBUG_HARDHAT -> enables DebugHardhat
PARALLEL -> enables EnableParallelTests

Additionally, when DEBUG is enabled, all integration tests debug configs are enabled for Codex nodes, the Codex node output is printed with the test output (not interleaved), and the Codex node output is logged to file in `tests/integrations/logs/<starttime>__IntegrationTests/<integration_test_name>/<suite_name>/<testname>/<role>_<idx>.log`.
When DEBUG_HARDHAT is enabled, all hardhat output is printed with the test output (not interleaved), and the output is also written to a log file in `tests/integrations/logs/<starttime>__IntegrationTests/<integration_test_name>/hardhat.log
2025-11-04 20:12:11 +11:00
Eric
33c33d5210
cancel processes soon
Windows really does not like to terminate processes, so if we try to cancel the process, we will hang in Windows.
2025-11-04 20:12:11 +11:00
Eric
84589ebd64
fix: hardhot not being stopped when test times out 2025-11-04 20:12:10 +11:00
Eric
0b25406241
handle cancellations for race and allFutures 2025-11-04 20:10:34 +11:00
Eric
d3b5d3b1e6
nil check hardhat process before stopping 2025-11-04 20:08:18 +11:00
Eric
b73c91b129
fix exit status 2025-11-04 20:08:18 +11:00
Eric
91f3f85ccd
indicate with exit code 1 if the tests failed 2025-11-04 20:07:48 +11:00
Eric
477c1409d1
fix: pass show continuous updates into test manager instance 2025-11-04 20:07:48 +11:00
Eric
d60c6f7ff1
undo changes done for CI debugging 2025-11-04 20:06:47 +11:00
Eric
84d3d5ad9a
Back off port inc in the hopes that this is causing issues with CI 2025-11-04 20:06:27 +11:00
Eric
ace3644f2d
use tracked futures for showContinuousStatusUpdates 2025-11-04 20:02:28 +11:00
Eric
0e9b42fa39
formatting 2025-11-04 20:02:28 +11:00
Eric
cb0b3023c8
remove unneeded sleep 2025-11-04 20:02:26 +11:00
Eric
63e4236ee0
increase port distance per test run 2025-11-04 20:02:26 +11:00
Eric
37d5443be6
add constructor param for continuous status update in terminal
# Conflicts:
#	tests/testIntegration.nim
2025-11-04 20:02:26 +11:00
Eric
431cd524c2
ensure timeouts work
Work around the AsyncProcess timeout not working correctly
2025-11-04 20:02:25 +11:00
Eric
69ad29a9b8
continually show test status updates
allows user to know which tests are still running
2025-11-04 20:02:25 +11:00
Eric
aeb651fcb7
cleanup
# Conflicts:
#	tests/testIntegration.nim
2025-11-04 20:02:25 +11:00
Eric
4b3dc2bf83
lock hardhat start to avoid intermittent start failures 2025-11-04 20:02:25 +11:00
Eric
92ee0cb81c
clean up 2025-11-04 20:02:25 +11:00
Eric
110764f7f4
print hardhat testmanager errors and hardhat stdout when there is an error starting hardhat 2025-11-04 20:02:25 +11:00
Eric
3ede65f661
hang manager off IntegrationTest, cleanup
- add a TestManager property to IntegrationTest, so manager does not need to be passed into all functions
- cleanup:
  - remove unneeded stopHardhat function
  - add hardhat instance to manager outside of startHardhat
2025-11-04 20:02:24 +11:00
Eric
8904044fc2
reinstate removed types 2025-11-04 20:02:24 +11:00
Eric
f493b4c197
Add additional logging info print outs
# Conflicts:
#	tests/integration/testcli.nim
2025-11-04 20:02:24 +11:00
Eric
6c577f3461
stop hardhat and show logs
# Conflicts:
#	tests/integration/hardhatprocess.nim
2025-11-04 20:02:24 +11:00