Loading tests/data/Makefile.am +1 −1 Original line number Diff line number Diff line Loading @@ -24,4 +24,4 @@ test62 test63 test64 test65 test66 test144 test145 test67 test68 test41 \ test40 test42 test69 test70 test71 test72 test73 test146 test505 \ test74 test75 test76 test77 test78 test147 test148 test506 test79 test80 \ test81 test82 test83 test84 test85 test86 test87 test507 test149 test88 \ test89 test90 test89 test90 test508 tests/data/test508 0 → 100644 +46 −0 Original line number Diff line number Diff line # # Server-side <reply> <data> HTTP/1.1 200 OK Date: Thu, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello </data> </reply> # Client-side <client> <server> http </server> # tool is what to use instead of 'curl' <tool> lib508 </tool> <name> send HTTP POST using read callback </name> <command> http://%HOSTIP:%HOSTPORT/508 </command> </client> # # Verify data after the test has been "shot" <verify> <protocol> POST /508 HTTP/1.1 Host: 127.0.0.1:8999 Pragma: no-cache Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Content-Length: 45 Content-Type: application/x-www-form-urlencoded this is what we post to the silly web server </protocol> </verify> tests/libtest/Makefile.am +6 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,8 @@ LIBDIR = ../../lib SUPPORTFILES = first.c test.h # here are all tools used for running libcurl tests noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 \ lib508 lib500_SOURCES = lib500.c $(SUPPORTFILES) lib500_LDADD = $(LIBDIR)/libcurl.la Loading Loading @@ -44,3 +45,7 @@ lib506_DEPENDENCIES = $(LIBDIR)/libcurl.la lib507_SOURCES = lib507.c $(SUPPORTFILES) lib507_LDADD = $(LIBDIR)/libcurl.la lib507_DEPENDENCIES = $(LIBDIR)/libcurl.la lib508_SOURCES = lib508.c $(SUPPORTFILES) lib508_LDADD = $(LIBDIR)/libcurl.la lib508_DEPENDENCIES = $(LIBDIR)/libcurl.la tests/libtest/lib508.c 0 → 100644 +67 −0 Original line number Diff line number Diff line #include "test.h" static char data[]="this is what we post to the silly web server\n"; struct WriteThis { char *readptr; int sizeleft; }; static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp) { struct WriteThis *pooh = (struct WriteThis *)userp; if(size*nmemb < 1) return 0; if(pooh->sizeleft) { *(char *)ptr = pooh->readptr[0]; /* copy one single byte */ pooh->readptr++; /* advance pointer */ pooh->sizeleft--; /* less data left */ return 1; /* we return 1 byte at a time! */ } return -1; /* no more data left to deliver */ } CURLcode test(char *URL) { CURL *curl; CURLcode res=CURLE_OK; struct WriteThis pooh; pooh.readptr = data; pooh.sizeleft = strlen(data); curl = curl_easy_init(); if(curl) { /* First set the URL that is about to receive our POST. */ curl_easy_setopt(curl, CURLOPT_URL, URL); /* Now specify we want to POST data */ curl_easy_setopt(curl, CURLOPT_POST, TRUE); /* Set the expected POST size */ curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, pooh.sizeleft); /* we want to use our own read function */ curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); /* pointer to pass to our read function */ curl_easy_setopt(curl, CURLOPT_INFILE, &pooh); /* get verbose debug output please */ curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); /* include headers in the output */ curl_easy_setopt(curl, CURLOPT_HEADER, TRUE); /* Perform the request, res will get the return code */ res = curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); } return res; } Loading
tests/data/Makefile.am +1 −1 Original line number Diff line number Diff line Loading @@ -24,4 +24,4 @@ test62 test63 test64 test65 test66 test144 test145 test67 test68 test41 \ test40 test42 test69 test70 test71 test72 test73 test146 test505 \ test74 test75 test76 test77 test78 test147 test148 test506 test79 test80 \ test81 test82 test83 test84 test85 test86 test87 test507 test149 test88 \ test89 test90 test89 test90 test508
tests/data/test508 0 → 100644 +46 −0 Original line number Diff line number Diff line # # Server-side <reply> <data> HTTP/1.1 200 OK Date: Thu, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello </data> </reply> # Client-side <client> <server> http </server> # tool is what to use instead of 'curl' <tool> lib508 </tool> <name> send HTTP POST using read callback </name> <command> http://%HOSTIP:%HOSTPORT/508 </command> </client> # # Verify data after the test has been "shot" <verify> <protocol> POST /508 HTTP/1.1 Host: 127.0.0.1:8999 Pragma: no-cache Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Content-Length: 45 Content-Type: application/x-www-form-urlencoded this is what we post to the silly web server </protocol> </verify>
tests/libtest/Makefile.am +6 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,8 @@ LIBDIR = ../../lib SUPPORTFILES = first.c test.h # here are all tools used for running libcurl tests noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 \ lib508 lib500_SOURCES = lib500.c $(SUPPORTFILES) lib500_LDADD = $(LIBDIR)/libcurl.la Loading Loading @@ -44,3 +45,7 @@ lib506_DEPENDENCIES = $(LIBDIR)/libcurl.la lib507_SOURCES = lib507.c $(SUPPORTFILES) lib507_LDADD = $(LIBDIR)/libcurl.la lib507_DEPENDENCIES = $(LIBDIR)/libcurl.la lib508_SOURCES = lib508.c $(SUPPORTFILES) lib508_LDADD = $(LIBDIR)/libcurl.la lib508_DEPENDENCIES = $(LIBDIR)/libcurl.la
tests/libtest/lib508.c 0 → 100644 +67 −0 Original line number Diff line number Diff line #include "test.h" static char data[]="this is what we post to the silly web server\n"; struct WriteThis { char *readptr; int sizeleft; }; static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp) { struct WriteThis *pooh = (struct WriteThis *)userp; if(size*nmemb < 1) return 0; if(pooh->sizeleft) { *(char *)ptr = pooh->readptr[0]; /* copy one single byte */ pooh->readptr++; /* advance pointer */ pooh->sizeleft--; /* less data left */ return 1; /* we return 1 byte at a time! */ } return -1; /* no more data left to deliver */ } CURLcode test(char *URL) { CURL *curl; CURLcode res=CURLE_OK; struct WriteThis pooh; pooh.readptr = data; pooh.sizeleft = strlen(data); curl = curl_easy_init(); if(curl) { /* First set the URL that is about to receive our POST. */ curl_easy_setopt(curl, CURLOPT_URL, URL); /* Now specify we want to POST data */ curl_easy_setopt(curl, CURLOPT_POST, TRUE); /* Set the expected POST size */ curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, pooh.sizeleft); /* we want to use our own read function */ curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); /* pointer to pass to our read function */ curl_easy_setopt(curl, CURLOPT_INFILE, &pooh); /* get verbose debug output please */ curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); /* include headers in the output */ curl_easy_setopt(curl, CURLOPT_HEADER, TRUE); /* Perform the request, res will get the return code */ res = curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); } return res; }