Commit Graph

1865 Commits

Author SHA1 Message Date
Brad King 5d2e93f9e8 cmCTestMultiProcessHandler: Simplify logic on unavailable resources
Deallocation is not necessary after allocation fails.
2023-11-17 18:43:01 -05:00
Brad King a4b061a035 cmCTestMultiProcessHandler: Clarify resource availability error member names
The members are about the availability of sufficient resources,
not allocation of them.
2023-11-17 18:43:01 -05:00
Brad King 1487e540aa cmCTestMultiProcessHandler: Reduce repeat test property map lookups 2023-11-17 18:43:01 -05:00
Brad King b02b628ad9 cmCTestMultiProcessHandler: Simplify loop termination on serial test 2023-11-17 18:43:01 -05:00
Brad King 8f1e8af0cc cmCTestMultiProcessHandler: Stop searching for tests when limit is reached
Avoid an extra loop iteration if we have no room for more tests.
2023-11-17 18:42:17 -05:00
Brad King bd0b4ca867 cmCTestMultiProcessHandler: Invert spare load condition
Switch then/else blocks to reduce indentation.
2023-11-17 18:41:42 -05:00
Brad King 9b548139fd cmCTestMultiProcessHandler: Clarify search for tests <= concurrency limit 2023-11-17 18:41:42 -05:00
Brad King ee321dc85f cmCTestMultiProcessHandler: Clarify search for tests <= spare load
Move code into conditions where it is needed and comment its purpose.
2023-11-17 18:41:42 -05:00
Brad King afd185881f cmCTestMultiProcessHandler: Make loops over all pending tests more consistent
Some loops were using the ordered list unnecessarily while others used
the main map of pending test.  Update all to use the latter.
2023-11-17 18:41:41 -05:00
Brad King 3bc3f6cbb5 cmCTestMultiProcessHandler: Clarify representation of pending test order
Also avoid copying the entire list each time we start a batch of tests.
2023-11-17 18:41:41 -05:00
Brad King b27969c89d cmCTestMultiProcessHandler: Clarify representation of pending tests 2023-11-17 18:41:41 -05:00
Brad King 7bca3f8c80 cmCTestMultiProcessHandler: Avoid extra copy of test maps 2023-11-17 18:41:41 -05:00
Brad King d6d114f3e8 cmCTestMultiProcessHandler: Remove unused members
The `TestRunningMap` and `TestFinishMap` members have not been used
since commit 44017a4767 (CTest: handle dependent and non dependent test
requirements equally, 2013-10-17, v3.0.0-rc1~451^2~7).
2023-11-17 18:41:41 -05:00
Brad King 451429e19c cmCTestMultiProcessHandler: Use cm::uv_loop_ptr abstraction
This ensures all loop resources are released.
2023-11-17 18:41:41 -05:00
John Parent 419443f68f cmCTestMultiProcessHandler: Factor out helper to check for completion 2023-11-17 18:41:41 -05:00
Chris Mahoney 8c307ab567 cmCTestMultiProcessHandler: Replace false condition with opposite assert 2023-11-17 18:41:41 -05:00
Brad King 1f8f270f62 cmCTestRunTest: Consolidate initialization in constructor 2023-11-17 18:41:40 -05:00
Brad King cdd741ebf9 Merge branch 'backport-ci-fedora-39' into ci-fedora-39 2023-11-17 11:35:41 -05:00
Brad King 7517923418 codespell: Match valgrind output without repeating a spelling error 2023-11-17 09:58:21 -05:00
Brad King 6ef03ca03e cmUVSignalHackRAII: Drop outdated and unused libuv SA_RESTART workaround
It is only needed for libuv < 1.19, but since commit c050d6a01e
(string(TIMESTAMP): add %f specifier for microseconds, 2022-01-27,
v3.23.0-rc1~59^2) we require libuv >= 1.28.
2023-11-17 08:49:21 -05:00
Brad King 07edab8ef2 ctest_empty_binary_directory: Report more detail in failure message 2023-11-09 09:11:55 -05:00
Brad King 85a9fe056f Merge topic 'cxx23'
a0fabc4769 cmGlobalGeneratorFactory: Provide complete cmGlobalGenerator to deleter
85627a93c9 cmCTestBuildCommand: Avoid requiring complete cmGlobalGenerator type publicly
641c02a3ce cmList: Avoid using operator-> on input iterator
e4483b8871 Tests: Avoid compiling call to dap::optional<dap::string>(nullptr)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Acked-by: scivision <michael@scivision.dev>
Merge-request: !8950
2023-11-08 10:32:04 -05:00
Brad King 85627a93c9 cmCTestBuildCommand: Avoid requiring complete cmGlobalGenerator type publicly 2023-11-07 09:13:25 -05:00
Rose 9ca6dfc280 Source: Reduce vector entry allocations and copies
Prefer `emplace_back` over `push_back`.
2023-10-23 11:18:32 -04:00
Brad King 37c80628ba Merge topic 'ctest-timeout-flag'
d267c128a2 ctest: Restore support for --timeout values higher than default test timeout
dd779a4bc2 Tests: Clarify RunCMake.CTestTimeout case name

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8851
2023-10-02 08:57:36 -04:00
Brad King d267c128a2 ctest: Restore support for --timeout values higher than default test timeout
Since refactoring in commit 0a5aeaf302 (cmCTestRunTest: Consolidate test
timeout selection logic, 2023-05-04, v3.27.0-rc1~120^2) we accidentally
truncate `--timeout` values to ctest's default `TimeOut`.  Fix the
logic to prefer the flag whenever the `TIMEOUT` property is not set.

In combination with the prior refactoring, this also fixes a bug that
caused `--timeout` values of 10000000 seconds or more to be ignored.

Fixes: #23979
2023-09-29 09:25:01 -04:00
scivision d49ea4a4d9 Source: Remove redundant FileIsDirectory checks 2023-09-18 23:11:28 -04:00
Brad King 825e8c3d09 Merge topic 'ctest_submit_follow_redirects'
26ce8dc290 ctest: Restore support for http redirects during Submit step

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8782
2023-09-08 08:58:56 -04:00
Zack Galbreath 26ce8dc290 ctest: Restore support for http redirects during Submit step
After CDash PR 1519 introduced HTTP status codes greater than 200 for
various error cases, CMake commit b7c871f745 (ctest: Update ctest_submit
for CDash behavior change, 2023-07-24, v3.27.1~3^2) modified CTest's
submit handler to check the status returned by CDash and throw an error
when this status is not equal to 200.

That change had the unintended side effect of causing CTest submissions
to fail when uploading results to a URL that returns a redirect status
code (3xx).  Fix this by configuring cURL to follow the redirect.  The
status cURL reports to CTest is now 200 instead of 3xx when CDash is
located behind a redirect.

Fixes: #25159
2023-09-07 15:37:27 -04:00
Kyle Edwards 0712e3cfea cmCTestCoverageHandler: Replace cmsysProcess with cmUVProcessChain 2023-08-29 10:51:30 -04:00
Kyle Edwards 96b3dd329e cmCTestLaunchReporter: Replace cmsysProcess with cmUVProcessChain
And convert cmCTestLaunch and cmCTestBuildHandler too.
2023-08-29 10:51:30 -04:00
Kyle Edwards b15ad7ebb6 cmCTest: Replace cmsysProcess with cmUVProcessChain 2023-08-29 10:51:30 -04:00
Kyle Edwards 49a37d5a97 cmCTestScriptHandler: Replace cmsysProcess with cmUVProcessChain
And update cmSystemTools::WaitForLine() to use cmUVProcessChain.
2023-08-29 10:51:30 -04:00
Kyle Edwards ec124582ac cmProcessTools::RunProcess(): Replace cmsysProcess with cmUVProcessChain
And convert the VCS code to std::vector<std::string>.
2023-08-29 10:51:30 -04:00
Kyle Edwards 0d95b68bd8 Merge topic 'ctest-generate-resource-spec-file'
c8c1dd0d95 CTest: Add ability to dynamically generate resource spec file
3f5a5a5856 cmCTestRunTest::StartFailure(): Add total argument

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8699
2023-08-14 11:18:03 -04:00
Kyle Edwards c8c1dd0d95 CTest: Add ability to dynamically generate resource spec file
Issue: #25106
2023-08-10 16:47:51 -04:00
Kyle Edwards 3f5a5a5856 cmCTestRunTest::StartFailure(): Add total argument
This function was being called when TotalNumberOfTests hadn't been
initialized, resulting in undefined output. It's not clear why this
was never apparent until now. Accept a total argument to ensure it's
initialized.
2023-08-10 16:46:25 -04:00
Ben Boeckel 0abde043d2 cmCryptoHash: prefer to cmSystemTools::ComputeFileHash 2023-08-08 13:23:55 -04:00
Brad King 241ee252ce IWYU: Update for Debian 12 CI job
`include-what-you-use` diagnostics, in practice, are specific to
the environment's compiler and standard library.  Update includes
to satisfy IWYU for our CI job under Debian 12.
2023-07-28 09:14:08 -04:00
Brad King e49ff2b2f2 Merge topic 'ExportTestLabelToJUnit'
2b99e64413 set_test_properties: link to the test properties in the documentation
b11e8afbfa ctest: export test labels to junit xml

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8635
2023-07-28 09:12:23 -04:00
Alex Neundorf b11e8afbfa ctest: export test labels to junit xml
With this patch, the junit files written by ctest also contain the
test labels as testcase properties, see
https://github.com/testmoapp/junitxml#properties

The name for the property is "cmake_labels", where "cmake_"
is used namespace-like. This could be done the same way
if we export more properties to junit.
Also this makes it clear to consumers that this is coming
from cmake, and the list is a cmake-formatted string.
2023-07-26 22:58:35 +02:00
Brad King f6b8bd41bc Merge topic 'cdash_checksum_400'
b7c871f745 ctest: Update ctest_submit for CDash behavior change

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8648
2023-07-25 11:03:06 -04:00
Brad King d89bcc8891 Merge topic 'cdash_checksum_400' into release-3.27
b7c871f745 ctest: Update ctest_submit for CDash behavior change

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8648
2023-07-25 11:03:05 -04:00
Zack Galbreath b7c871f745 ctest: Update ctest_submit for CDash behavior change
open.cdash.org was recently upgraded in preparation for the release of
CDash v3.2.0. This upgrade brought a change in behavior where CDash now
responds with HTTP 400 (bad request) rather than HTTP 200 (OK) for MD5
checksum mismatches during submission time.

This commit removes our usage of CURLOPT_FAILONERROR in
cmCTestSubmitHandler.cxx This was necessary to pass along the contents
of the request body ("md5 mismatch") in cases where the web server
(CDash) responds with an error status (400).

Fixes: #25121
2023-07-25 09:09:56 -04:00
Kyle Edwards 0e8584c89c CTest: Fix regression in calculating test timeout
Fixes: #25120
2023-07-24 19:29:54 -04:00
Brad King 54c5654f7d ctest: Optionally terminate tests with a custom signal on timeout
CTest normally terminates test processes on timeout using `SIGKILL`.
Offer tests a chance to exit gracefully, on platforms supporting POSIX
signals, by setting `TIMEOUT_SIGNAL_{NAME,GRACE_PERIOD}` properties.

Fixes: #17288
2023-06-02 06:51:13 -04:00
Brad King e38c05688e CTest/cmProcess: Adopt field tracking reason for the process timeout
A test process may timeout either because the test timeout was reached,
or the overall stop time was reached.  Shorten the lifetime for which
we track this state in `cmCTestRunTest`.
2023-05-31 09:43:03 -04:00
Brad King 25c1468314 cmCTestTestHandler: Remove outdated comment
Remove a comment that has not been relevant since commit 177edc5ed1
(Fixed ctest -N segfault issue.  Further refactored ctest.  Enabled
failover for ctest, 2009-08-27, v2.8.0~250).
2023-05-31 09:43:03 -04:00
Ben Boeckel 8451a3f0b5 cmGlobalGenerator: use a stream for output in Build
This allows output to show up in output immediately instead of being
batched.
2023-05-27 07:04:17 -04:00
Brad King 0a5aeaf302 cmCTestRunTest: Consolidate test timeout selection logic
Test timeout selection was previously spread out over several locations.
Consolidate it in a single place to make it easier to follow.
2023-05-04 17:11:19 -04:00