ci: Add run_tests step to ci-windows.py
This is mostly a refactor, except for using the runner workspace (cwd) for: * fuzz qa-assets * functional temp prefix This makes it easier to run the ci-windows.py locally.
This commit is contained in:
2 files changed
+65
-28
No files matched your search
+62
-1
@@ -73,7 +73,7 @@ def prepare_tests(ci_type):
|
|||||||
if ci_type == "standard":
|
if ci_type == "standard":
|
||||||
run([sys.executable, "-m", "pip", "install", "pyzmq"])
|
run([sys.executable, "-m", "pip", "install", "pyzmq"])
|
||||||
elif ci_type == "fuzz":
|
elif ci_type == "fuzz":
|
||||||
repo_dir = os.path.join(os.environ["RUNNER_TEMP"], "qa-assets")
|
repo_dir = os.path.join(os.getcwd(), "qa-assets")
|
||||||
clone_cmd = [
|
clone_cmd = [
|
||||||
"git",
|
"git",
|
||||||
"clone",
|
"clone",
|
||||||
@@ -86,6 +86,64 @@ def prepare_tests(ci_type):
|
|||||||
run(["git", "-C", repo_dir, "log", "-1"])
|
run(["git", "-C", repo_dir, "log", "-1"])
|
||||||
|
|
||||||
|
|
||||||
|
def run_tests(ci_type):
|
||||||
|
build_dir = "build"
|
||||||
|
num_procs = str(os.process_cpu_count())
|
||||||
|
release_bin = os.path.join(os.getcwd(), build_dir, "bin", "Release")
|
||||||
|
|
||||||
|
if ci_type == "standard":
|
||||||
|
test_envs = {
|
||||||
|
"BITCOIN_BIN": "bitcoin.exe",
|
||||||
|
"BITCOIND": "bitcoind.exe",
|
||||||
|
"BITCOINCLI": "bitcoin-cli.exe",
|
||||||
|
"BITCOIN_BENCH": "bench_bitcoin.exe",
|
||||||
|
"BITCOINTX": "bitcoin-tx.exe",
|
||||||
|
"BITCOINUTIL": "bitcoin-util.exe",
|
||||||
|
"BITCOINWALLET": "bitcoin-wallet.exe",
|
||||||
|
"BITCOINCHAINSTATE": "bitcoin-chainstate.exe",
|
||||||
|
}
|
||||||
|
for var, exe in test_envs.items():
|
||||||
|
os.environ[var] = os.path.join(release_bin, exe)
|
||||||
|
|
||||||
|
ctest_cmd = [
|
||||||
|
"ctest",
|
||||||
|
"--test-dir",
|
||||||
|
build_dir,
|
||||||
|
"--output-on-failure",
|
||||||
|
"--stop-on-failure",
|
||||||
|
"-j",
|
||||||
|
num_procs,
|
||||||
|
"--build-config",
|
||||||
|
"Release",
|
||||||
|
]
|
||||||
|
run(ctest_cmd)
|
||||||
|
|
||||||
|
test_cmd = [
|
||||||
|
sys.executable,
|
||||||
|
os.path.join(build_dir, "test", "functional", "test_runner.py"),
|
||||||
|
"--jobs",
|
||||||
|
num_procs,
|
||||||
|
"--quiet",
|
||||||
|
f"--tmpdirprefix={os.getcwd()}",
|
||||||
|
"--combinedlogslen=99999999",
|
||||||
|
*shlex.split(os.environ.get("TEST_RUNNER_EXTRA", "").strip()),
|
||||||
|
]
|
||||||
|
run(test_cmd)
|
||||||
|
|
||||||
|
elif ci_type == "fuzz":
|
||||||
|
os.environ["BITCOINFUZZ"] = os.path.join(release_bin, "fuzz.exe")
|
||||||
|
fuzz_cmd = [
|
||||||
|
sys.executable,
|
||||||
|
os.path.join(build_dir, "test", "fuzz", "test_runner.py"),
|
||||||
|
"--par",
|
||||||
|
num_procs,
|
||||||
|
"--loglevel",
|
||||||
|
"DEBUG",
|
||||||
|
os.path.join(os.getcwd(), "qa-assets", "fuzz_corpora"),
|
||||||
|
]
|
||||||
|
run(fuzz_cmd)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(description="Utility to run Windows CI steps.")
|
parser = argparse.ArgumentParser(description="Utility to run Windows CI steps.")
|
||||||
parser.add_argument("ci_type", choices=GENERATE_OPTIONS, help="CI type to run.")
|
parser.add_argument("ci_type", choices=GENERATE_OPTIONS, help="CI type to run.")
|
||||||
@@ -93,6 +151,7 @@ def main():
|
|||||||
"generate",
|
"generate",
|
||||||
"build",
|
"build",
|
||||||
"prepare_tests",
|
"prepare_tests",
|
||||||
|
"run_tests",
|
||||||
]
|
]
|
||||||
parser.add_argument("step", choices=steps, help="CI step to perform.")
|
parser.add_argument("step", choices=steps, help="CI step to perform.")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
@@ -103,6 +162,8 @@ def main():
|
|||||||
build()
|
build()
|
||||||
elif args.step == "prepare_tests":
|
elif args.step == "prepare_tests":
|
||||||
prepare_tests(args.ci_type)
|
prepare_tests(args.ci_type)
|
||||||
|
elif args.step == "run_tests":
|
||||||
|
run_tests(args.ci_type)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -304,39 +304,15 @@ jobs:
|
|||||||
& mt.exe -nologo -inputresource:$_.FullName -validate_manifest
|
& mt.exe -nologo -inputresource:$_.FullName -validate_manifest
|
||||||
}
|
}
|
||||||
|
|
||||||
- name: Run test suite
|
|
||||||
if: matrix.job-type == 'standard'
|
|
||||||
working-directory: build
|
|
||||||
run: |
|
|
||||||
ctest --output-on-failure --stop-on-failure -j $NUMBER_OF_PROCESSORS -C Release
|
|
||||||
|
|
||||||
- name: Prepare tests
|
- name: Prepare tests
|
||||||
run: |
|
run: |
|
||||||
py -3 .github/ci-windows.py ${{ matrix.job-type }} prepare_tests
|
py -3 .github/ci-windows.py ${{ matrix.job-type }} prepare_tests
|
||||||
|
|
||||||
- name: Run functional tests
|
- name: Run tests
|
||||||
if: matrix.job-type == 'standard'
|
|
||||||
working-directory: build
|
|
||||||
env:
|
env:
|
||||||
BITCOIN_BIN: '${{ github.workspace }}\build\bin\Release\bitcoin.exe'
|
TEST_RUNNER_EXTRA: "--timeout-factor=${{ env.TEST_RUNNER_TIMEOUT_FACTOR }} ${{ case(github.event_name == 'pull_request', '', '--extended') }}"
|
||||||
BITCOIND: '${{ github.workspace }}\build\bin\Release\bitcoind.exe'
|
|
||||||
BITCOINCLI: '${{ github.workspace }}\build\bin\Release\bitcoin-cli.exe'
|
|
||||||
BITCOIN_BENCH: '${{ github.workspace }}\build\bin\Release\bench_bitcoin.exe'
|
|
||||||
BITCOINTX: '${{ github.workspace }}\build\bin\Release\bitcoin-tx.exe'
|
|
||||||
BITCOINUTIL: '${{ github.workspace }}\build\bin\Release\bitcoin-util.exe'
|
|
||||||
BITCOINWALLET: '${{ github.workspace }}\build\bin\Release\bitcoin-wallet.exe'
|
|
||||||
BITCOINCHAINSTATE: '${{ github.workspace }}\build\bin\Release\bitcoin-chainstate.exe'
|
|
||||||
TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }}
|
|
||||||
run: |
|
run: |
|
||||||
py -3 test/functional/test_runner.py --jobs $NUMBER_OF_PROCESSORS --quiet --tmpdirprefix="${RUNNER_TEMP}" --combinedlogslen=99999999 --timeout-factor=${TEST_RUNNER_TIMEOUT_FACTOR} ${TEST_RUNNER_EXTRA}
|
py -3 .github/ci-windows.py ${{ matrix.job-type }} run_tests
|
||||||
|
|
||||||
- name: Run fuzz tests
|
|
||||||
if: matrix.job-type == 'fuzz'
|
|
||||||
working-directory: build
|
|
||||||
env:
|
|
||||||
BITCOINFUZZ: '${{ github.workspace }}\build\bin\Release\fuzz.exe'
|
|
||||||
run: |
|
|
||||||
py -3 test/fuzz/test_runner.py --par $NUMBER_OF_PROCESSORS --loglevel DEBUG "${RUNNER_TEMP}/qa-assets/fuzz_corpora"
|
|
||||||
|
|
||||||
record-frozen-commit:
|
record-frozen-commit:
|
||||||
# Record frozen commit, so that the native tests on cross-builds can run on
|
# Record frozen commit, so that the native tests on cross-builds can run on
|
||||||
|
|||||||
Reference in new issue
Block a user