-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Extend optional saving of test output #12184
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Result of foundationdb-pr-clang-ide on Linux RHEL 9
|
Result of foundationdb-pr-macos-m1 on macOS Ventura 13.x
|
Result of foundationdb-pr-clang on Linux RHEL 9
|
Result of foundationdb-pr on Linux RHEL 9
|
Result of foundationdb-pr-clang-arm on Linux CentOS 7
|
Result of foundationdb-pr-macos on macOS Ventura 13.x
|
Result of foundationdb-pr-cluster-tests on Linux RHEL 9
|
Result of foundationdb-pr-clang-ide on Linux RHEL 9
|
Result of foundationdb-pr-macos-m1 on macOS Ventura 13.x
|
Result of foundationdb-pr-clang on Linux RHEL 9
|
Result of foundationdb-pr on Linux RHEL 9
|
Result of foundationdb-pr-clang-arm on Linux CentOS 7
|
Result of foundationdb-pr-macos on macOS Ventura 13.x
|
Result of foundationdb-pr-cluster-tests on Linux RHEL 9
|
Result of foundationdb-pr-clang-ide on Linux RHEL 9
|
Result of foundationdb-pr-macos-m1 on macOS Ventura 13.x
|
Result of foundationdb-pr-clang on Linux RHEL 9
|
Result of foundationdb-pr on Linux RHEL 9
|
Result of foundationdb-pr-clang-arm on Linux CentOS 7
|
Result of foundationdb-pr-macos on macOS Ventura 13.x
|
Result of foundationdb-pr-cluster-tests on Linux RHEL 9
|
contrib/Joshua/README.md
Outdated
@@ -21,3 +21,9 @@ We use Joshua to simulate failures modes at the network, machine, and datacenter | |||
For a while, there was an informal competition within the engineering team to design failures that found the toughest bugs and issues the most easily. After a period of one-upsmanship, the reigning champion is called "swizzle-clogging". To swizzle-clog, you first pick a random subset of nodes in the cluster. Then, you "clog" (stop) each of their network connections one by one over a few seconds. Finally, you unclog them in a random order, again one by one, until they are all up. This pattern seems to be particularly good at finding deep issues that only happen in the rarest real-world cases. | |||
|
|||
Joshua's success has surpassed our expectation and has been vital to our engineering team. It seems unlikely that we would have been able to build FoundationDB without this technology. | |||
|
|||
* `scripts/`: This directory contains shell scripts that serve as entry points for running tests. Joshua invokes these scripts, which then set up the environment and execute the test runner. | |||
* **`correctnessTest.sh`**: This is the primary script for running correctness tests. It is responsible for invoking the Python-based `TestHarnessV2` and passing it the necessary configuration. It also handles the creation and cleanup of temporary output directories. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* **`correctnessTest.sh`**: This is the primary script for running correctness tests. It is responsible for invoking the Python-based `TestHarnessV2` and passing it the necessary configuration. It also handles the creation and cleanup of temporary output directories. | |
* **`correctnessTest.sh`**: This is the primary script for running correctness tests. It is responsible for invoking the Python-based `TestHarness2` and passing it the necessary configuration. It also handles the creation and cleanup of temporary output directories. |
1c8a80b
to
a89fbaa
Compare
Result of foundationdb-pr-clang-ide on Linux RHEL 9
|
Result of foundationdb-pr-clang on Linux RHEL 9
|
Result of foundationdb-pr-macos-m1 on macOS Ventura 13.x
|
Result of foundationdb-pr on Linux RHEL 9
|
Result of foundationdb-pr-clang-ide on Linux RHEL 9
|
Result of foundationdb-pr-macos-m1 on macOS Ventura 13.x
|
Result of foundationdb-pr-clang on Linux RHEL 9
|
Result of foundationdb-pr on Linux RHEL 9
|
Result of foundationdb-pr-clang-arm on Linux CentOS 7
|
Result of foundationdb-pr-cluster-tests on Linux RHEL 9
|
Result of foundationdb-pr-macos on macOS Ventura 13.x
|
Result of foundationdb-pr-clang-ide on Linux RHEL 9
|
Result of foundationdb-pr-macos-m1 on macOS Ventura 13.x
|
Result of foundationdb-pr-clang on Linux RHEL 9
|
Result of foundationdb-pr-clang-arm on Linux CentOS 7
|
Result of foundationdb-pr on Linux RHEL 9
|
Result of foundationdb-pr-cluster-tests on Linux RHEL 9
|
Result of foundationdb-pr-macos on macOS Ventura 13.x
|
Unified logging output so easy to download: per run there is a th_run.ENSEMBLE_ID directory of logs. On failure if TH_ARCHIVE_LOGS_ON_FAILURE is set, logs are NOT cleaned up at the end of the test run: e.g. j start --env TH_UNSEED_CHECK_RATIO=1.0 --env TH_ARCHIVE_LOGS_ON_FAILURE=true --tarball /root/BulkDumpingS3.tar.gz --max-run 1 In particular, added capture of BOTH log sets when doing the determinacy check so can compare the runs. Amended the joshua_logtool so doesn't run by default if it finds rocksdb log entries -- the current configuration; instead you have to ask it to run. It will bundle up all log files rather than just trace files (including logs from both runs for the determinacy test). It does NOT include the joshua.xml for now because joshua_logtool.py runs before this file is generated (hard to refactor). Added diagnostic logging and tracing around the joshua test runner context. Added capture of stderr/out so can easier debug failed test/test infrastructure (handy because I kept breaking tes runner). Retain the v1 (original) test xml result reporting even after messing w/ the xml report to make a proper xml document of ALL the test output. * contrib/Joshua/README.md Some detail on scripts directory and TestHarness2 integration * contrib/Joshua/scripts/correctnessTest.sh Add error handling, logging, and cleanup around test launch. * contrib/TestHarness2/README.md Documentation on operation, output structure, and archival modes for test harness ('th') including how to use joshua_logtool.py. * contrib/TestHarness2/test_harness/app.py Add capture of stdout/err into a well-defined location. Adds XML manipulation trying to make sure the XML output is same as it was in V1 -- the current, original output -- adding filtering and insertion. If fatal error, return an 'xml' fatal error. Made more robust against the unexpected (of which there was plenty while trying to alter how this joshua test runner works). * contrib/TestHarness2/test_harness/config.py Fixup. Added --joshua-output-dir option. Made kill seconds configurable (was 30 minutes which was painful when app was deadlocking). Added configurable log-level and whether to save logs on failure. * contrib/TestHarness2/test_harness/run.py Improved test execution and result handling Capture both determinacy test log sets. * contrib/TestHarness2/test_harness/summarize.py Hack on XML handling -- filtering -- and then work to make it v1/original compatible. * contrib/joshua_logtool.py Integrate joshua_logtool. Make it pick up all logs including double logging by determinacy test. Add doc.
b0d393b
to
342675b
Compare
This patch has gotten too complicated; it changes too much. It is also hard to prove it is working properly. I can run it at scale but there is a failure rate that seems in excess of what the current framework does. These odd failures are hard to debug too. Let me make this a draft for now. I'll break out some of the change in here -- the documentation as separate PRs because these are useful w/o disturbing operations. |
Result of foundationdb-pr-clang-ide on Linux RHEL 9
|
Result of foundationdb-pr-clang-arm on Linux CentOS 7
|
Result of foundationdb-pr-cluster-tests on Linux RHEL 9
|
Result of foundationdb-pr on Linux RHEL 9
|
Result of foundationdb-pr-clang on Linux RHEL 9
|
#12261 adds saving of test output in a simpler way. Resolving this PR in favor of the former. |
Uh oh!
There was an error while loading. Please reload this page.