aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2019-04-05 16:38:36 +0200
committerDaniel Stenberg <daniel@haxx.se>2019-04-06 22:49:50 +0200
commit2f44e94efb3df8e50bb2ddbc4ec6b569a6424517 (patch)
tree14ddd0b5294633dd446fcff08218b2f53fc13cfd /tests
parentaba1c515534197cab1588ab0f3a2343be1f0a8e5 (diff)
pipelining: removed
As previously planned and documented in DEPRECATE.md, all pipelining code is removed. Closes #3651
Diffstat (limited to 'tests')
-rw-r--r--tests/FILEFORMAT4
-rw-r--r--tests/data/Makefile.inc2
-rw-r--r--tests/data/test53674
-rw-r--r--tests/libtest/Makefile.inc6
-rw-r--r--tests/libtest/lib536.c142
-rw-r--r--tests/server/sws.c64
6 files changed, 7 insertions, 285 deletions
diff --git a/tests/FILEFORMAT b/tests/FILEFORMAT
index 85e731966..8a9eb3579 100644
--- a/tests/FILEFORMAT
+++ b/tests/FILEFORMAT
@@ -156,8 +156,6 @@ auth_required if this is set and a POST/PUT is made without auth, the
idle do nothing after receiving the request, just "sit idle"
stream continuously send data to the client, never-ending
writedelay: [secs] delay this amount between reply packets
-pipe: [num] tell the server to expect this many HTTP requests before
- sending back anything, to allow pipelining tests
skip: [num] instructs the server to ignore reading this many bytes from a PUT
or POST request
@@ -188,7 +186,6 @@ ftp-ipv6
ftps
http
http-ipv6
-http-pipe
http-proxy
http-unix
https
@@ -354,7 +351,6 @@ Available substitute variables include:
%HOST6IP - IPv6 address of the host running this test
%HOSTIP - IPv4 address of the host running this test
%HTTP6PORT - IPv6 port number of the HTTP server
-%HTTPPIPEPORT - Port number of the HTTP pipelining server
%HTTPUNIXPATH - Path to the Unix socket of the HTTP server
%HTTPPORT - Port number of the HTTP server
%HTTPSPORT - Port number of the HTTPS server
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
index 2eca9c670..329695c24 100644
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@ -70,7 +70,7 @@ test500 test501 test502 test503 test504 test505 test506 test507 test508 \
test509 test510 test511 test512 test513 test514 test515 test516 test517 \
test518 test519 test520 test521 test522 test523 test524 test525 test526 \
test527 test528 test529 test530 test531 test532 test533 test534 test535 \
-test536 test537 test538 test539 test540 test541 test542 test543 test544 \
+ test537 test538 test539 test540 test541 test542 test543 test544 \
test545 test546 test547 test548 test549 test550 test551 test552 test553 \
test554 test555 test556 test557 test558 test559 test560 test561 test562 \
test563 test564 test565 test566 test567 test568 test569 test570 test571 \
diff --git a/tests/data/test536 b/tests/data/test536
deleted file mode 100644
index 51ac9716f..000000000
--- a/tests/data/test536
+++ /dev/null
@@ -1,74 +0,0 @@
-<testcase>
-<info>
-<keywords>
-HTTP
-HTTP GET
-pipelining
-multi
-</keywords>
-</info>
-
-<reply>
-<data>
-HTTP/1.1 404 Badness
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-ETag: "21025-dc7-39462498"
-Content-Length: 6
-Content-Type: text/html
-Funny-head: yesyes
-
-hejsan
-</data>
-<data1>
-HTTP/1.1 200 Fine
-Date: Thu, 09 Nov 2010 14:49:00 GMT
-Content-Length: 13
-Connection: close
-Content-Type: text/html
-
-fine content
-</data1>
-
-<datacheck>
-fine content
-Finished!
-</datacheck>
-
-<servercmd>
-pipe: 1
-</servercmd>
-</reply>
-
-# Client-side
-<client>
-<server>
-http
-</server>
-# tool is what to use instead of 'curl'
-<tool>
-lib536
-</tool>
-
- <name>
-HTTP GET multi two files with FAILONERROR and pipelining
- </name>
- <command>
-http://%HOSTIP:%HTTPPORT/536 http://%HOSTIP:%HTTPPORT/5360001
-</command>
-</client>
-
-#
-# Verify data after the test has been "shot"
-<verify>
-<protocol>
-GET /536 HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-Accept: */*
-
-GET /5360001 HTTP/1.1
-Host: %HOSTIP:%HTTPPORT
-Accept: */*
-
-</protocol>
-</verify>
-</testcase>
diff --git a/tests/libtest/Makefile.inc b/tests/libtest/Makefile.inc
index e38f48102..4ba279452 100644
--- a/tests/libtest/Makefile.inc
+++ b/tests/libtest/Makefile.inc
@@ -16,7 +16,7 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \
lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 lib508 lib509 \
lib510 lib511 lib512 lib513 lib514 lib515 lib516 lib517 lib518 lib519 \
lib520 lib521 lib523 lib524 lib525 lib526 lib527 lib529 lib530 lib532 \
- lib533 lib536 lib537 lib539 lib540 lib541 lib542 lib543 lib544 lib545 \
+ lib533 lib537 lib539 lib540 lib541 lib542 lib543 lib544 lib545 \
lib547 lib548 lib549 lib552 lib553 lib554 lib555 lib556 lib557 lib558 \
lib559 lib560 lib562 lib564 lib565 lib566 lib567 lib568 lib569 lib570 \
lib571 lib572 lib573 lib574 lib575 lib576 lib578 lib579 lib582 \
@@ -160,10 +160,6 @@ lib533_SOURCES = lib533.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib533_LDADD = $(TESTUTIL_LIBS)
lib533_CPPFLAGS = $(AM_CPPFLAGS)
-lib536_SOURCES = lib536.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
-lib536_LDADD = $(TESTUTIL_LIBS)
-lib536_CPPFLAGS = $(AM_CPPFLAGS)
-
lib537_SOURCES = lib537.c $(SUPPORTFILES) $(WARNLESS)
lib537_CPPFLAGS = $(AM_CPPFLAGS)
diff --git a/tests/libtest/lib536.c b/tests/libtest/lib536.c
deleted file mode 100644
index e6943626d..000000000
--- a/tests/libtest/lib536.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
- * / __| | | | |_) | |
- * | (__| |_| | _ <| |___
- * \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2011, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at https://curl.haxx.se/docs/copyright.html.
- *
- * You may opt to use, copy, modify, merge, publish, distribute and/or sell
- * copies of the Software, and permit persons to whom the Software is
- * furnished to do so, under the terms of the COPYING file.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ***************************************************************************/
-#include "test.h"
-
-#include <fcntl.h>
-
-#include "testutil.h"
-#include "warnless.h"
-#include "memdebug.h"
-
-#define TEST_HANG_TIMEOUT 60 * 1000
-
-static int perform(CURLM *multi)
-{
- int handles;
- fd_set fdread, fdwrite, fdexcep;
- int res = 0;
-
- for(;;) {
- struct timeval interval;
- int maxfd = -99;
-
- interval.tv_sec = 0;
- interval.tv_usec = 100000L; /* 100 ms */
-
- res_multi_perform(multi, &handles);
- if(res)
- return res;
-
- res_test_timedout();
- if(res)
- return res;
-
- if(!handles)
- break; /* done */
-
- FD_ZERO(&fdread);
- FD_ZERO(&fdwrite);
- FD_ZERO(&fdexcep);
-
- res_multi_fdset(multi, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(res)
- return res;
-
- /* At this point, maxfd is guaranteed to be greater or equal than -1. */
-
- res_select_test(maxfd + 1, &fdread, &fdwrite, &fdexcep, &interval);
- if(res)
- return res;
-
- res_test_timedout();
- if(res)
- return res;
- }
-
- return 0; /* success */
-}
-
-int test(char *URL)
-{
- CURLM *multi = NULL;
- CURL *easy = NULL;
- int res = 0;
-
- start_test_timing();
-
- global_init(CURL_GLOBAL_ALL);
-
- multi_init(multi);
-
- easy_init(easy);
-
- multi_setopt(multi, CURLMOPT_PIPELINING, 1L);
-
- easy_setopt(easy, CURLOPT_WRITEFUNCTION, fwrite);
- easy_setopt(easy, CURLOPT_FAILONERROR, 1L);
- easy_setopt(easy, CURLOPT_URL, URL);
-
- res_multi_add_handle(multi, easy);
- if(res) {
- printf("curl_multi_add_handle() 1 failed\n");
- goto test_cleanup;
- }
-
- res = perform(multi);
- if(res) {
- printf("retrieve 1 failed\n");
- goto test_cleanup;
- }
-
- curl_multi_remove_handle(multi, easy);
-
- curl_easy_reset(easy);
-
- easy_setopt(easy, CURLOPT_FAILONERROR, 1L);
- easy_setopt(easy, CURLOPT_URL, libtest_arg2);
-
- res_multi_add_handle(multi, easy);
- if(res) {
- printf("curl_multi_add_handle() 2 failed\n");
- goto test_cleanup;
- }
-
- res = perform(multi);
- if(res) {
- printf("retrieve 2 failed\n");
- goto test_cleanup;
- }
-
- curl_multi_remove_handle(multi, easy);
-
-test_cleanup:
-
- /* undocumented cleanup sequence - type UB */
-
- curl_easy_cleanup(easy);
- curl_multi_cleanup(multi);
- curl_global_cleanup();
-
- printf("Finished!\n");
-
- return res;
-}
diff --git a/tests/server/sws.c b/tests/server/sws.c
index 87c0204c9..e5806875c 100644
--- a/tests/server/sws.c
+++ b/tests/server/sws.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -111,15 +111,12 @@ struct httprequest {
bool ntlm; /* Authorization ntlm header found */
int writedelay; /* if non-zero, delay this number of seconds between
writes in the response */
- int pipe; /* if non-zero, expect this many requests to do a "piped"
- request/response */
int skip; /* if non-zero, the server is instructed to not read this
many bytes from a PUT/POST request. Ie the client sends N
bytes said in Content-Length, but the server only reads N
- skip bytes. */
int rcmd; /* doing a special command, see defines above */
int prot_version; /* HTTP version * 10 */
- bool pipelining; /* true if request is pipelined */
int callcount; /* times ProcessRequest() gets called */
bool connmon; /* monitor the state of the connection, log disconnects */
bool upgrade; /* test case allows upgrade to http2 */
@@ -426,14 +423,6 @@ static int parse_servercmd(struct httprequest *req)
logmsg("swsclose: close this connection after response");
req->close = TRUE;
}
- else if(1 == sscanf(cmd, "pipe: %d", &num)) {
- logmsg("instructed to allow a pipe size of %d", num);
- if(num < 0)
- logmsg("negative pipe size ignored");
- else if(num > 0)
- req->pipe = num-1; /* decrease by one since we don't count the
- first request in this number */
- }
else if(1 == sscanf(cmd, "skip: %d", &num)) {
logmsg("instructed to skip this number of bytes %d", num);
req->skip = num;
@@ -706,11 +695,6 @@ static int ProcessRequest(struct httprequest *req)
}
}
- if(req->pipe)
- /* we do have a full set, advance the checkindex to after the end of the
- headers, for the pipelining case mostly */
- req->checkindex += (end - line) + strlen(end_of_headers);
-
/* **** Persistence ****
*
* If the request is a HTTP/1.0 one, we close the connection unconditionally
@@ -844,8 +828,7 @@ static int ProcessRequest(struct httprequest *req)
if(strstr(req->reqbuf, "Connection: close"))
req->open = FALSE; /* close connection after this request */
- if(!req->pipe &&
- req->open &&
+ if(req->open &&
req->prot_version >= 11 &&
end &&
req->reqbuf + req->offset > end + strlen(end_of_headers) &&
@@ -855,19 +838,6 @@ static int ProcessRequest(struct httprequest *req)
/* If we have a persistent connection, HTTP version >= 1.1
and GET/HEAD request, enable pipelining. */
req->checkindex = (end - req->reqbuf) + strlen(end_of_headers);
- req->pipelining = TRUE;
- }
-
- while(req->pipe) {
- if(got_exit_signal)
- return 1; /* done */
- /* scan for more header ends within this chunk */
- line = &req->reqbuf[req->checkindex];
- end = strstr(line, end_of_headers);
- if(!end)
- break;
- req->checkindex += (end - line) + strlen(end_of_headers);
- req->pipe--;
}
/* If authentication is required and no auth was provided, end now. This
@@ -951,13 +921,8 @@ storerequest_cleanup:
static void init_httprequest(struct httprequest *req)
{
- /* Pipelining is already set, so do not initialize it here. Only initialize
- checkindex and offset if pipelining is not set, since in a pipeline they
- need to be inherited from the previous request. */
- if(!req->pipelining) {
- req->checkindex = 0;
- req->offset = 0;
- }
+ req->checkindex = 0;
+ req->offset = 0;
req->testno = DOCNUMBER_NOTHING;
req->partno = 0;
req->connect_request = FALSE;
@@ -967,7 +932,6 @@ static void init_httprequest(struct httprequest *req)
req->cl = 0;
req->digest = FALSE;
req->ntlm = FALSE;
- req->pipe = 0;
req->skip = 0;
req->writedelay = 0;
req->rcmd = RCMD_NORMALREQ;
@@ -991,17 +955,6 @@ static int get_request(curl_socket_t sock, struct httprequest *req)
char *pipereq = NULL;
size_t pipereq_length = 0;
- if(req->pipelining) {
- pipereq = reqbuf + req->checkindex;
- pipereq_length = req->offset - req->checkindex;
-
- /* Now that we've got the pipelining info we can reset the
- pipelining-related vars which were skipped in init_httprequest */
- req->pipelining = FALSE;
- req->checkindex = 0;
- req->offset = 0;
- }
-
if(req->offset >= REQBUFSIZ-1) {
/* buffer is already full; do nothing */
overflow = 1;
@@ -1051,11 +1004,6 @@ static int get_request(curl_socket_t sock, struct httprequest *req)
req->done_processing = ProcessRequest(req);
if(got_exit_signal)
return -1;
- if(req->done_processing && req->pipe) {
- logmsg("Waiting for another piped request");
- req->done_processing = 0;
- req->pipe--;
- }
}
if(overflow || (req->offset == REQBUFSIZ-1 && got > 0)) {
@@ -1075,7 +1023,7 @@ static int get_request(curl_socket_t sock, struct httprequest *req)
/* at the end of a request dump it to an external file */
if(fail || req->done_processing)
- storerequest(reqbuf, req->pipelining ? req->checkindex : req->offset);
+ storerequest(reqbuf, req->offset);
if(got_exit_signal)
return -1;
@@ -1598,7 +1546,6 @@ static void http_connect(curl_socket_t *infdp,
logmsg("====> TCP_NODELAY for client DATA connection failed");
}
#endif
- req2.pipelining = FALSE;
init_httprequest(&req2);
while(!req2.done_processing) {
err = get_request(datafd, &req2);
@@ -2281,7 +2228,6 @@ int main(int argc, char *argv[])
the pipelining struct field must be initialized previously to FALSE
every time a new connection arrives. */
- req.pipelining = FALSE;
init_httprequest(&req);
for(;;) {