tests: testrunner reliability improvements

- perform torture tests with '-j2' for shorter runtime
- when waiting on test results overly long, log the tests
  waited for and eventually log the test log directories
  for easier analysis what is wrong in CI jobs.
- sockfilt.c: treat the windows errno 109 (ERROR_BROKEN_PIPE)
  as a socket closed by the client and do not exit.
- when verifying https server, do not in addition check
  the http server behind it also
- when tearing down the stunnel of a non-responsive https
  server, tear down the http server with it

Closes #14960
This commit is contained in:
Stefan Eissing 2024-09-18 16:32:07 +02:00 committed by Daniel Stenberg
parent 5a263710f6
commit 8ad3597d2d
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
4 changed files with 46 additions and 6 deletions

View file

@ -218,6 +218,10 @@ static ssize_t write_wincon(int fd, const void *buf, size_t count)
#define write(a,b,c) write_wincon(a,b,c)
#endif
/* On Windows, we sometimes get this for a broken pipe, seemingly
* when the client just closed stdin? */
#define CURL_WIN32_EPIPE 109
/*
* fullread is a wrapper around the read() function. This will repeat the call
* to read() until it actually has read the complete number of bytes indicated
@ -243,6 +247,11 @@ static ssize_t fullread(int filedes, void *buffer, size_t nbytes)
error = errno;
if((error == EINTR) || (error == EAGAIN))
continue;
if(error == CURL_WIN32_EPIPE) {
logmsg("got Windows ERROR_BROKEN_PIPE on fd=%d, treating as close",
filedes);
return 0;
}
logmsg("reading from file descriptor: %d,", filedes);
logmsg("unrecoverable read() failure: (%d) %s",
error, strerror(error));