#
cbafcec5 |
| 07-Nov-2024 |
Daniel Stenberg |
curl: --test-duphandle in debug builds runs "duphandled" Using this option (only available in debug builds) makes curl always call curl_easy_duphandle() on the handle before using it.
curl: --test-duphandle in debug builds runs "duphandled" Using this option (only available in debug builds) makes curl always call curl_easy_duphandle() on the handle before using it. To help us catch curl_easy_duphandle() mistakes better. Add a CI job using this. Bonus: the previous runtests option -e is now also supported as --test-event Closes #15504
show more ...
|
#
68c35861 |
| 30-Sep-2024 |
Viktor Szakats |
tests: replace hard-coded `/dev/null` with variable - add variable for the null device filename and use that in Perl code. - initialize this variable with `NUL` on native Windows. -
tests: replace hard-coded `/dev/null` with variable - add variable for the null device filename and use that in Perl code. - initialize this variable with `NUL` on native Windows. - add `%DEV_NULL` variable and use it in tests. Fixes `The system cannot find the path specified.` messages seen when running `runtests.pl` with native Windows Perl. Also adjust code to not break mcedit syntax highlighting. Cherry-picked from #14949 Closes #15098
show more ...
|
#
31a29fc6 |
| 30-Sep-2024 |
Viktor Szakats |
tests: add and use `%PERL` variable to refer to the Perl binary To ensure Perl invocations within tests call the same Perl binary used for running the tests, as specified or auto-detecte
tests: add and use `%PERL` variable to refer to the Perl binary To ensure Perl invocations within tests call the same Perl binary used for running the tests, as specified or auto-detected via `PERL` env (autotools) or `PERL_EXECUTABLE` setting (cmake). Instead of the first `perl` executable found in `PATH`.) Cherry-picked from #14949 Closes #15097
show more ...
|
#
71cf0d1f |
| 02-Sep-2024 |
Viktor Szakats |
tests: speed up builds with single-binary test bundles Add support for single-block binaries that contain all libtests and unit tests respectively. Enable with: - autotools:
tests: speed up builds with single-binary test bundles Add support for single-block binaries that contain all libtests and unit tests respectively. Enable with: - autotools: `--enable-test-bundles` - cmake: `-DCURL_TEST_BUNDLES=ON` (They are compatible with `--enable-unity` and `-DCMAKE_UNITY_BUILD=ON` options, for further speed-up.) Makes libtests and unit tests build _fast_, needing little disk space even in static mode. Similar to CMake unity mode, but with a custom script, also supporting autotools builds. The price is having to deal with symbols/macros colliding between `lib*.c` and `unit*.c` sources. Maybe with naming conventions or other solutions this can be improved gradually and reduce the need for manual intervention by `mk-bundle.mk`. I've included a script that does the bulk of detecting name collisions. Also: - CI: enable test bundles. - CI: build tests in more jobs. - lib2305: fix FILE handle leak. - unit1661: fix memleak found by torture test by releasing the `bufref` structure in `unit_stop()` that was allocated in `unit_setup()`. ``` test 1661...[bufref unit tests] Leak detected: memory still allocated: 13 bytes allocated by /home/runner/work/curl/curl/tests/unit/unit1661.c:70 1661: torture FAILED: function number 1 in test. ``` Ref: https://github.com/curl/curl/actions/runs/10967279334/job/30456745290?pr=14772#step:8:41 Similar test suite builds with autotools default and cmake+bundle+unity: - GHA/Linux: 33s vs 7s https://github.com/curl/curl/actions/runs/10705668823/job/29681617374 - GHA/macOS 34s vs 2s https://github.com/curl/curl/actions/runs/10705668813/job/29681632885 - GHA/FreeBSD: 15m25 vs 6m21 (full workflow time, ~qemu) https://github.com/curl/curl/actions/runs/10705668811/job/29681607915 - GHA/Cygwin: 9m52 vs 32s https://github.com/curl/curl/actions/runs/10705668809/job/29681609965 - GHA/MSYS2: 3m52 vs 14s https://github.com/curl/curl/actions/runs/10705668808/job/29681624295 - GHA/mingw-w64: 5m45 vs 30s https://github.com/curl/curl/actions/runs/10705668808/job/29681628787 Autotools test suite builds compared between master -> `--enable-test-bundles`: - GHA/Linux: 33s -> 9s (run tests: 22m23 -> 20m44) https://github.com/curl/curl/actions/runs/10710030193/job/29695932185 https://github.com/curl/curl/actions/runs/10967831456/job/30458220344 - GHA/macOS: 25s -> 4s (run tests: 2m58 -> 2m24) https://github.com/curl/curl/actions/runs/10710030195/job/29695938444 https://github.com/curl/curl/actions/runs/10967831452/job/30458225762 - GHA/non-native (FreeBSD): 4m8 -> 3m12 (full workflow time, ~qemu) https://github.com/curl/curl/actions/runs/10710030198/job/29695928401 https://github.com/curl/curl/actions/runs/10967831458/job/30458212692 - GHA/Cygwin: 9m25 -> 1m9 (run tests: 9m19 -> 3m28) https://github.com/curl/curl/actions/runs/10710030212/job/29695928213 https://github.com/curl/curl/actions/runs/10967831453/job/30458213268 - GHA/MSYS2: 3m54 -> 32s (run tests: 6m3 -> 3m59) https://github.com/curl/curl/actions/runs/10710030190/job/29704850591 https://github.com/curl/curl/actions/runs/10967831449/job/30459280005 - GHA/mingw-w64: 5m42 -> 1m5 (run tests: 7m41 -> 5m36) https://github.com/curl/curl/actions/runs/10710030190/job/29704852058 https://github.com/curl/curl/actions/runs/10967831449/job/30459280862 - Azure MSYS2 mingw64 openssl: 38m55 -> 11m58 https://dev.azure.com/daniel0244/curl/_build/results?buildId=25546&view=logs&j=b58b8c59-0f61-52e9-0f9e-fad562a1e77f&t=0f9230a7-3b10-53ca-9938-700ece377c5e https://dev.azure.com/daniel0244/curl/_build/results?buildId=25547&view=logs&jobId=39473db1-3945-55d5-deb5-c218fad88dce&j=b58b8c59-0f61-52e9-0f9e-fad562a1e77f&t=0f9230a7-3b10-53ca-9938-700ece377c5e - Azure Ubuntu default: 2m15 -> 55s (all build) https://dev.azure.com/daniel0244/curl/_build/results?buildId=25546&view=logs&j=9d58b9ac-e1e6-53b6-f83a-1f9f1d912522&t=a6b38d83-e7cf-5a9b-c762-a178412717b7 https://dev.azure.com/daniel0244/curl/_build/results?buildId=25547&view=logs&jobId=39473db1-3945-55d5-deb5-c218fad88dce&j=9d58b9ac-e1e6-53b6-f83a-1f9f1d912522&t=a6b38d83-e7cf-5a9b-c762-a178412717b7 Cmake test suite builds compared between master -> `-DCURL_TEST_BUNDLES=ON` + unity: - GHA/Linux: 29s -> 7s (run tests: 4m50 -> 4m57, 20m43 -> 20m45) https://github.com/curl/curl/actions/runs/10710030193/job/29695941814 https://github.com/curl/curl/actions/runs/10705668823/job/29681622201 - GHA/Linux old: 44s -> 13s (bundle+no unity) (run tests: 5m5 -> 5m6) https://github.com/curl/curl/actions/runs/10718264094/job/29719794727 https://github.com/curl/curl/actions/runs/10718653175/job/29721009613 - GHA/macOS: 32s -> 2s (run tests: 2m43 -> 2m40) https://github.com/curl/curl/actions/runs/10710030195/job/29695931956 https://github.com/curl/curl/actions/runs/10705668813/job/29681638937 - GHA/non-native (*BSD): inconclusive (full workflow time, ~qemu) https://github.com/curl/curl/actions/runs/10710030198 https://github.com/curl/curl/actions/runs/10705668811 - GHA/Cygwin: 3m9 -> 32s https://github.com/curl/curl/actions/runs/10710030212/job/29695929075 https://github.com/curl/curl/actions/runs/10705668809/job/29681609965 - GHA/MSYS2: 2m24 -> 14s https://github.com/curl/curl/actions/runs/10710030190/job/29704850996 https://github.com/curl/curl/actions/runs/10705668808/job/29681624295 - GHA/mingw-w64: 3m56 -> 30s (run tests: 4m2 -> 3m52) https://github.com/curl/curl/actions/runs/10710030190/job/29704852219 https://github.com/curl/curl/actions/runs/10705668808/job/29681631393 - GHA/mingw-w64-old: 7m19 -> 1m44 (run tests: 3m30 -> 2m53) https://github.com/curl/curl/actions/runs/10710030190/job/29704849763 https://github.com/curl/curl/actions/runs/10705668808/job/29681622329 - GHA/MSVC: 3m22 -> 13s (run tests: 9m43 -> 4m22) https://github.com/curl/curl/actions/runs/10710030190/job/29704850411 https://github.com/curl/curl/actions/runs/10705668808/job/29681623313 - AppVeyor CI MSVC 2008: 4m3 -> 45s (full build) - AppVeyor CI MSVC 2010: 2m56 -> 1m8 (full build) - AppVeyor CI MSVC 2022: 10m19 -> 2m23 (full build) https://ci.appveyor.com/project/curlorg/curl/builds/50538455 https://ci.appveyor.com/project/curlorg/curl/builds/50536558 - AppVeyor CI total build time: 10m30 (master) -> 6m48 (unity) -> 4m5 (bundle) -> 3m24 (bundle+unity) -> 5m7 (bundle+unity+all jobs building tests) Closes #14772
show more ...
|
#
efc2c518 |
| 07-Jul-2024 |
Viktor Szakats |
tests: include current directory when running test Perl commands Necessary to find generated files in the out-of-tree build directory. E.g. `tests/configurehelp.pm`, for tests 1119 and 1
tests: include current directory when running test Perl commands Necessary to find generated files in the out-of-tree build directory. E.g. `tests/configurehelp.pm`, for tests 1119 and 1167. Before this patch macOS autotools builds were failing these two tests due to falling back to the default preprocessor (`cpp`) instead of the actual one configured. Then `cpp` failing to compile Apple SDK headers referenced by curl headers. Cherry-picked from #14097 Closes #14124
show more ...
|
#
0e73b69b |
| 26-Jun-2024 |
Daniel Stenberg |
runtests: support %DATE for YYYY-MM-DD of right now
|
#
348882ee |
| 26-Jun-2024 |
Daniel Stenberg |
runtests: support %VERNUM For the plain version number of the built curl without -DEV etc. Only digits and dots.
|
#
1177c741 |
| 14-Jun-2023 |
Dan Fandrich |
runtests: rename server command file The name ftpserver.cmd was historical and has been used for more than ftp for many years now. Rename it to plain server.cmd to reduce confusion.
|
#
7d62f0d9 |
| 05-Jun-2023 |
Dan Fandrich |
runtests; give each server a unique log lock file Logs are written by several servers and all of them must be finished writing before the test results can be determined. This means each
runtests; give each server a unique log lock file Logs are written by several servers and all of them must be finished writing before the test results can be determined. This means each server must have its own lock file rather than sharing a single one, which is how it was done up to now. Previously, the first server to complete a test would clear the lock before the other server was done, which caused flaky tests. Lock files are now all found in their own directory, so counting locks equals counting the files in that directory. The result is that the proxy logs are now reliably written which actually changes the expected output for two tests. Fixes #11231 Closes #11259
show more ...
|
#
78d8bc4c |
| 19-May-2023 |
Dan Fandrich |
runtests: use a per-runner random seed Each runner needs a unique random seed to reduce the chance of port number collisions. The new scheme uses a consistent per-runner source of ra
runtests: use a per-runner random seed Each runner needs a unique random seed to reduce the chance of port number collisions. The new scheme uses a consistent per-runner source of randomness which results in deterministic behaviour, as it did before. Ref: #10818
show more ...
|
#
38465f9a |
| 30-Apr-2023 |
Dan Fandrich |
runtests: spawn a new process for the test runner When the -j option is given, a new process is spawned in which the test programs are run and from which test servers are started. Only o
runtests: spawn a new process for the test runner When the -j option is given, a new process is spawned in which the test programs are run and from which test servers are started. Only one process can be started at once, but this is sufficient to test that the infrastructure can isolate those functions in a new task. There should be no visible difference between the two modes at the moment. Ref: #10818 Closes #11064
show more ...
|
#
82fa5ca8 |
| 27-Apr-2023 |
Dan Fandrich |
runtests: remove directory from server filename variables There will soon be multiple log directories so the paths will no longer be static in runtests.pl. Also, get rid of $SERVER2IN wh
runtests: remove directory from server filename variables There will soon be multiple log directories so the paths will no longer be static in runtests.pl. Also, get rid of $SERVER2IN which was not used. Ref: #10818
show more ...
|
#
020cf1c1 |
| 19-Apr-2023 |
Dan Fandrich |
runtests: track only the current test timings in runner.pm This avoids passing these data through through global variables, which soon won't be possible. Ref: #10818
|
#
707f74c0 |
| 15-Apr-2023 |
Dan Fandrich |
runtests: refactor into more packages testutil.pm now contains a few miscellaneous functions that are used in several places but have no better place to live. subvariables moves to
runtests: refactor into more packages testutil.pm now contains a few miscellaneous functions that are used in several places but have no better place to live. subvariables moves to servers.pm since most variables that it substitutes relate to servers, so this is the most appropriate place. Rename a few functions for better naming consistency. Ref: #10818 Closes #10995
show more ...
|
#
390af1ed |
| 13-Apr-2023 |
Dan Fandrich |
runtests: refactor test runner code into runner.pm This is code that is directly responsible for running a single test. This will eventually run in a separate process as part of the para
runtests: refactor test runner code into runner.pm This is code that is directly responsible for running a single test. This will eventually run in a separate process as part of the parallel testing project. Ref: #10818
show more ...
|
#
d39db811 |
| 06-Apr-2023 |
Dan Fandrich |
tests: factor out the test server management code This now lives in servers.pm with some configuration variables moved to globalconfig.pm Ref: #10818
|