59 Commits

Author SHA1 Message Date
Eric
4616c48931
revert posix-only verbose unittest output
It didn't fix the error with invalid proofs in windows in ci
2025-06-05 15:58:13 +10:00
Eric
2bfd5241e3
fix previous commit compilation 2025-06-05 15:58:12 +10:00
Eric
7c00329d90
try removing verbose output to see if windows ci passes 2025-06-05 15:58:12 +10:00
Eric
eebeb8abbf
verbose unittest2 output to stdout 2025-06-05 15:58:12 +10:00
Eric
98a828e620
fix compilation errors in windows 2025-06-05 15:58:11 +10:00
Eric
cff38a7eee
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-05 15:58:11 +10:00
Eric
660a0e27b5
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-05 15:58:10 +10:00
Eric
3b51d24b09
add new line to stdout/stderr logs when logging lines 2025-06-05 15:58:09 +10:00
Eric
ac588b99ce
write to stdout/stderr as the stream is read, rearrange node stop logging 2025-06-05 15:58:09 +10:00
Eric
817c2bc82d
remove unneeded exception from start raises 2025-06-05 15:58:09 +10:00
Eric
41eca535e4
Remove noCancel from captureProcessOutput call 2025-06-05 15:58:08 +10:00
Eric
114a46afa2
Continuously read from stdout/stderr to prevent buffers from filling 2025-06-05 15:58:08 +10:00
Eric
a9b094ae86
reinstate logging after it also failed on windows and ci 2025-06-05 15:58:08 +10:00
Eric
a52a53ba52
disable all logging to see if windows passes 2025-06-05 15:58:07 +10:00
Eric
9084dd7b14
Move test assertions at end of start so that test.status can be set after timeout 2025-06-05 15:58:07 +10:00
Eric
6bef231297
Add wait to stdout/stderr stream future 2025-06-05 15:58:07 +10:00
Eric
daa23f4ffb
fix windows issue where reading stdout/stderr hangs forever 2025-06-05 15:58:07 +10:00
Eric
9d8dbee9aa
ensure runTests doesn't raise CancelledError
TrackedFutures now only accepts Futures that do not raise any exceptions
2025-06-05 15:58:06 +10:00
Eric
f93112dc28
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-05 15:58:06 +10:00
Eric
e7a9adab21
Add debugging and assertions after test run
Mostly to debug in windows
2025-06-05 15:58:06 +10:00
Eric
eb77643405
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-05 15:58:05 +10:00
Eric
0a4369d0cd
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-05 15:58:04 +10:00
Eric
595e1d3fdb
Ensure started tests are torn down properly on timeout 2025-06-05 15:58:04 +10:00
Eric
40c243a080
Colorise stdout from test runs
Adds terminal colour to [OK], [FAILED], and [Suite]

# Conflicts:
#	tests/integration/testmanager.nim
2025-06-05 15:58:04 +10:00
Eric
72d2931183
Refactor process launch
Refactor to keep a process handle so that the processes can be stopped on timeout.
2025-06-05 15:58:04 +10:00
Eric
bc5fdd49be
run tests async from start so that stop can cancel all tracked futures 2025-06-05 15:58:03 +10:00
Eric
cddb407ddc
clean up 2025-06-05 15:58:02 +10:00
Eric
c59fa9f1e5
increase port gap by 1000 to avoid clashes in windows 2025-06-05 15:58:02 +10:00
Eric
25ce97e81e
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-06-05 15:58:02 +10:00
Eric
29df100e93
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-06-05 15:58:01 +10:00
Eric
92ca6de95b
fix: hardhot not being stopped when test times out 2025-06-05 15:58:01 +10:00
Eric
3554c772cc
handle cancellations for race and allFutures 2025-06-05 15:58:00 +10:00
Eric
52479ef0e8
nil check hardhat process before stopping 2025-06-05 15:58:00 +10:00
Eric
d260e6350c
fix exit status 2025-06-05 15:57:59 +10:00
Eric
0dcf8ded69
indicate with exit code 1 if the tests failed 2025-06-05 15:57:59 +10:00
Eric
7d3013f3b3
fix: pass show continuous updates into test manager instance 2025-06-05 15:57:59 +10:00
Eric
e902df5365
undo changes done for CI debugging 2025-06-05 15:57:58 +10:00
Eric
d3245c3aa8
Back off port inc in the hopes that this is causing issues with CI 2025-06-05 15:57:57 +10:00
Eric
e4ebfaafac
use tracked futures for showContinuousStatusUpdates 2025-06-05 15:57:56 +10:00
Eric
1218c493be
formatting 2025-06-05 15:57:56 +10:00
Eric
756af9b2ab
remove unneeded sleep 2025-06-05 15:57:54 +10:00
Eric
982af54648
increase port distance per test run 2025-06-05 15:57:54 +10:00
Eric
35964f6e73
add constructor param for continuous status update in terminal
# Conflicts:
#	tests/testIntegration.nim
2025-06-05 15:57:54 +10:00
Eric
ff1eb8b05e
ensure timeouts work
Work around the AsyncProcess timeout not working correctly
2025-06-05 15:57:54 +10:00
Eric
78260feda3
continually show test status updates
allows user to know which tests are still running
2025-06-05 15:57:54 +10:00
Eric
855ba637e3
cleanup
# Conflicts:
#	tests/testIntegration.nim
2025-06-05 15:57:53 +10:00
Eric
c8d69b646c
lock hardhat start to avoid intermittent start failures 2025-06-05 15:57:53 +10:00
Eric
44faac5a97
clean up 2025-06-05 15:57:53 +10:00
Eric
5db892adf3
print hardhat testmanager errors and hardhat stdout when there is an error starting hardhat 2025-06-05 15:57:53 +10:00
Eric
0d186c69a1
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-06-05 15:57:53 +10:00