diff options
Diffstat (limited to 'Build/source/libs/curl/tests')
102 files changed, 7159 insertions, 0 deletions
diff --git a/Build/source/libs/curl/tests/FILEFORMAT b/Build/source/libs/curl/tests/FILEFORMAT new file mode 100644 index 00000000000..6eb143485e0 --- /dev/null +++ b/Build/source/libs/curl/tests/FILEFORMAT @@ -0,0 +1,79 @@ + The file format of the test suite is a very simple and extendable format. All +data for a single test case resides in a single ASCII file. Labels mark the +beginning and the end of all sections. Each label must be written in its own +line and is resembling XML/HTML. + + Each file is split up in three main sections: reply, client and verify. The +reply section is used for the server to know what to send as a reply for the +requests curl sends, the client section defines how the client should behave +while the verify section defines how to verify that the data stored after a +command has been run ended up correctly. + + Each main section has a number of available subsections that can be +specified, that will be checked/used if specified. This document includes all +the subsections currently supported. + +<reply> +<data [nocheck=1]> +data to sent to the client on its request and later verified that it arrived +safely. Set the nocheck=1 to prevent the test script to verify the arrival +of this data. +</data> +<datacheck> +if the data is sent but this is what should be checked afterwards +</datacheck> +<size> +number to return on a ftp SIZE command +</size> +<cmd> +special purpose server-command to control its behavior *before* the +reply is sent +</cmd> +<postcmd> +special purpose server-command to control its behavior *after* the +reply is sent +</postcmd> +</reply> + +<client> +<name> +test case description +</name> +<command [option=no-output]> +command line to run, there's a bunch of %variables that get replaced +accordingly. more about them elsewhere + +Set 'option=no-output' to prevent the test script to slap on the --output +argument that directs the output to a file. The --output is also not added if +the client/stdout section is used. +</command> +<file name="log/filename"> +this creates the named file with this content before the test case is run +which is useful if the test case needs a file to act on. +</file> +</client> + +<verify> +<errorcode> +numerical error code curl is supposed to return +</errorcode> +<strip> +One regex per line that is removed from the protocol dumps before the +comparison is made. This is very useful to remove dependencies on dynamicly +changing protocol data such as port numbers or user-agent strings. +</strip> +<protocol [nonewline=yes]> +the protocol dump curl should transmit, if 'nonewline' is set, we will cut +off the trailing newline of this given data before comparing with the one +actually sent by the client +</protocol> +<stdout> +This verfies that this data was passed to stdout. +</stdout> +<file name="log/filename"> +the file's contents must be identical to this +</file> +<upload> +the contents of the upload data curl should have sent +</upload> +</verify> diff --git a/Build/source/libs/curl/tests/Makefile.am b/Build/source/libs/curl/tests/Makefile.am new file mode 100644 index 00000000000..e0326c968c3 --- /dev/null +++ b/Build/source/libs/curl/tests/Makefile.am @@ -0,0 +1,28 @@ +EXTRA_DIST = ftpserver.pl httpserver.pl httpsserver.pl runtests.pl \ + ftpsserver.pl stunnel.pm getpart.pm FILEFORMAT README \ + stunnel.pem memanalyze.pl + +SUBDIRS = data server + +PERLFLAGS = -I$(srcdir) + +all: +install: + +curl: + @(cd ..; make) + +test: server/sws + @cd data && exec $(MAKE) test + srcdir=$(srcdir) $(PERL) $(PERLFLAGS) $(srcdir)/runtests.pl + +quiet-test: server/sws + @cd data && exec $(MAKE) test + srcdir=$(srcdir) $(PERL) $(PERLFLAGS) $(srcdir)/runtests.pl -s -a + +clean: + rm -rf log + find . -name "*~" | xargs rm -f + +server/sws: + cd server; make sws diff --git a/Build/source/libs/curl/tests/Makefile.in b/Build/source/libs/curl/tests/Makefile.in new file mode 100644 index 00000000000..93327c0ccbe --- /dev/null +++ b/Build/source/libs/curl/tests/Makefile.in @@ -0,0 +1,365 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IPV6_ENABLED = @IPV6_ENABLED@ +KRB4_ENABLED = @KRB4_ENABLED@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +NROFF = @NROFF@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENSSL_ENABLED = @OPENSSL_ENABLED@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKGADD_NAME = @PKGADD_NAME@ +PKGADD_PKG = @PKGADD_PKG@ +PKGADD_VENDOR = @PKGADD_VENDOR@ +RANDOM_FILE = @RANDOM_FILE@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VERSIONNUM = @VERSIONNUM@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +EXTRA_DIST = ftpserver.pl httpserver.pl httpsserver.pl runtests.pl \ + ftpsserver.pl stunnel.pm getpart.pm FILEFORMAT README \ + stunnel.pem memanalyze.pl + + +SUBDIRS = data server + +PERLFLAGS = -I$(srcdir) +subdir = tests +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/lib/config.h \ + $(top_builddir)/src/config.h \ + $(top_builddir)/tests/server/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +DIST_COMMON = README Makefile.am Makefile.in +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + +GTAGS: + here=`CDPATH=: && cd $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive distclean \ + distclean-generic distclean-libtool distclean-recursive \ + distclean-tags distdir dvi dvi-am dvi-recursive info info-am \ + info-recursive install install-am install-data install-data-am \ + install-data-recursive install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + tags tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + + +all: +install: + +curl: + @(cd ..; make) + +test: server/sws + @cd data && exec $(MAKE) test + srcdir=$(srcdir) $(PERL) $(PERLFLAGS) $(srcdir)/runtests.pl + +quiet-test: server/sws + @cd data && exec $(MAKE) test + srcdir=$(srcdir) $(PERL) $(PERLFLAGS) $(srcdir)/runtests.pl -s -a + +clean: + rm -rf log + find . -name "*~" | xargs rm -f + +server/sws: + cd server; make sws +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Build/source/libs/curl/tests/README b/Build/source/libs/curl/tests/README new file mode 100644 index 00000000000..41b0f7e0212 --- /dev/null +++ b/Build/source/libs/curl/tests/README @@ -0,0 +1,80 @@ + _ _ ____ _ + ___| | | | _ \| | + / __| | | | |_) | | + | (__| |_| | _ <| |___ + \___|\___/|_| \_\_____| + +The cURL Test Suite + +Requires: + perl (and a unix-style shell) + diff (when a test fail, a diff is shown) + stunnel (for HTTPS and FTPS tests) + +Run: + 'make test'. This invokes the 'runtests.pl' perl script. Edit the top + variables of that script in case you have some specific needs. + + The script breaks on the first test that doesn't do OK. Use -a to prevent + the script to abort on the first error. Run the script with -v for more + verbose output. Use -d to run the test servers with debug output enabled as + well. + + Use -s for shorter output, or pass test numbers to run specific tests only + (like "./runtests.pl 3 4" to test 3 and 4 only). It also supports test case + ranges with 'to'. As in "./runtests 3 to 9" which runs the seven tests from + 3 to 9. + +Memory: + The test script will check that all allocated memory is freed properly IF + curl has been built with the MALLOCDEBUG define set. The script will + automatically detect if that is the case, and it will use the ../memanalyze + script to analyze the memory debugging output. + +Debug: + If a test case fails, you can conveniently get the script to invoke the + debugger (gdb) for you with the server running and the exact same command + line parameters that failed. Just invoke 'runtests.pl <test number> -g' and + then just type 'run' in the debugger to perform the command through the + debugger. + + If a test case causes a core dump, analyze it by running gdb like: + + # gdb ../curl/src core + + ... and get a stack trace with the gdb command: + + (gdb) where + +Logs: + All logs are generated in the logs/ subdirctory (it is emtpied first + in the runtests.pl script) + +Data: + All test-data are put in the data/ subdirctory. Each test is stored in the + file named according to the test number. + + The test case file format is simply a way to store different sections within + the same physical file. The different sections are to be described here + within shortly. + + +TEST CASE NUMBERS + + So far, I've used this system: + + 1 - 99 HTTP + 100 - 199 FTP + 200 - 299 FILE + 300 - 399 HTTPS + 400 - 499 FTPS + + ... if we run out of test numbers for a particular protocol, then we need + to fix it. + +TODO: + + * Port old test cases to the new file format + + * Make httpserver.pl work when we PUT without Content-Length: + * Add persistant connection support and test cases diff --git a/Build/source/libs/curl/tests/data/Makefile.am b/Build/source/libs/curl/tests/data/Makefile.am new file mode 100644 index 00000000000..2517626fb86 --- /dev/null +++ b/Build/source/libs/curl/tests/data/Makefile.am @@ -0,0 +1,19 @@ +all: +install: + +test: + [ -f test1 ] || ln -s $(srcdir)/test* . + +EXTRA_DIST = \ +test1 test108 test117 test127 test20 test27 test34 test46 \ +test10 test109 test118 test13 test200 test28 test36 test47 \ +test100 test11 test119 test14 test201 test29 test37 test5 \ +test101 test110 test12 test15 test202 test3 test4 test6 \ +test102 test111 test120 test16 test21 test30 test400 test7 \ +test103 test112 test121 test17 test22 test300 test401 test8 \ +test104 test113 test122 test18 test23 test301 test402 test9 \ +test105 test114 test123 test19 test24 test302 test43 test31 \ +test106 test115 test124 test190 test25 test303 test44 test38 \ +test107 test116 test125 test2 test26 test33 test45 test126 \ +test304 + diff --git a/Build/source/libs/curl/tests/data/Makefile.in b/Build/source/libs/curl/tests/data/Makefile.in new file mode 100644 index 00000000000..47bd4a00daf --- /dev/null +++ b/Build/source/libs/curl/tests/data/Makefile.in @@ -0,0 +1,238 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IPV6_ENABLED = @IPV6_ENABLED@ +KRB4_ENABLED = @KRB4_ENABLED@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +NROFF = @NROFF@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENSSL_ENABLED = @OPENSSL_ENABLED@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKGADD_NAME = @PKGADD_NAME@ +PKGADD_PKG = @PKGADD_PKG@ +PKGADD_VENDOR = @PKGADD_VENDOR@ +RANDOM_FILE = @RANDOM_FILE@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VERSIONNUM = @VERSIONNUM@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +EXTRA_DIST = \ +test1 test108 test117 test127 test20 test27 test34 test46 \ +test10 test109 test118 test13 test200 test28 test36 test47 \ +test100 test11 test119 test14 test201 test29 test37 test5 \ +test101 test110 test12 test15 test202 test3 test4 test6 \ +test102 test111 test120 test16 test21 test30 test400 test7 \ +test103 test112 test121 test17 test22 test300 test401 test8 \ +test104 test113 test122 test18 test23 test301 test402 test9 \ +test105 test114 test123 test19 test24 test302 test43 test31 \ +test106 test115 test124 test190 test25 test303 test44 test38 \ +test107 test116 test125 test2 test26 test33 test45 test126 \ +test304 + +subdir = tests/data +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/lib/config.h \ + $(top_builddir)/src/config.h \ + $(top_builddir)/tests/server/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/data/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +uninstall-info-am: +tags: TAGS +TAGS: + + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile + +installdirs: +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool uninstall uninstall-am uninstall-info-am + + +all: +install: + +test: + [ -f test1 ] || ln -s $(srcdir)/test* . +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Build/source/libs/curl/tests/data/test1 b/Build/source/libs/curl/tests/data/test1 new file mode 100644 index 00000000000..5dd5f11ccc7 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test1 @@ -0,0 +1,44 @@ +# +# Server-side +<reply name="1"> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 6 +Connection: close +Content-Type: text/html +Funny-head: yesyes + +<foo> +</data> +</reply> + +# +# Client-side +<client> + <name> +simple HTTP GET + </name> + <command> +http://%HOSTIP:%HOSTPORT/1 +</command> +</client> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /1 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test10 b/Build/source/libs/curl/tests/data/test10 new file mode 100644 index 00000000000..6672da85e61 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test10 @@ -0,0 +1,56 @@ +# Server-side +<reply> +<data> +HTTP/1.0 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +blablabla + +</data> +</reply> + +# Client-side +<client> + <name> +simple HTTP PUT from file + </name> + <command> +http://%HOSTIP:%HOSTPORT/we/want/10 -T log/test10.txt +</command> +<file name="log/test10.txt"> +Weird + file + to + upload +for + testing +the + PUT + feature +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +PUT /we/want/10 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* +Content-Length: 78 + +Weird + file + to + upload +for + testing +the + PUT + feature +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test100 b/Build/source/libs/curl/tests/data/test100 new file mode 100644 index 00000000000..436d94015b7 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test100 @@ -0,0 +1,44 @@ +# +# Server-side +<reply name="1"> +<data> +total 20 +drwxr-xr-x 8 98 98 512 Oct 22 13:06 . +drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. +drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT +-r--r--r-- 1 0 1 35 Jul 16 1996 README +lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin +dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev +drwxrwxrwx 2 98 98 512 May 29 16:04 download.html +dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc +drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub +dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr +</data> +</reply> + +# +# Client-side +<client> + <name> +FTP dir list PASV + </name> + <command> +ftp://%HOSTIP:%FTPPORT/ +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +filter off really nothing +</strip> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +TYPE A +LIST +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test101 b/Build/source/libs/curl/tests/data/test101 new file mode 100644 index 00000000000..877d7babcdd --- /dev/null +++ b/Build/source/libs/curl/tests/data/test101 @@ -0,0 +1,44 @@ +# Server-side +<reply> +<data> +total 20 +drwxr-xr-x 8 98 98 512 Oct 22 13:06 . +drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. +drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT +-r--r--r-- 1 0 1 35 Jul 16 1996 README +lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin +dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev +drwxrwxrwx 2 98 98 512 May 29 16:04 download.html +dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc +drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub +dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr +</data> +</reply> + +# Client-side +<client> + <name> +FTP dir list, PORT with specified IP + </name> + <command> +ftp://%HOSTIP:%FTPPORT/ -P %HOSTIP +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +# strip all kinds of PORT, EPRT and LPRT curl can do +<strip> +^PORT 127,0,0,1,.* +^EPRT.* +^LPRT.* +</strip> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +PORT 127,0,0,1,243,212 +TYPE A +LIST +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test102 b/Build/source/libs/curl/tests/data/test102 new file mode 100644 index 00000000000..536d4f0c8d3 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test102 @@ -0,0 +1,39 @@ +# Server-side +<reply> +<data> +data + to + see +that FTP +works + so does it? +</data> +</reply> + +# Client-side +<client> + <name> +FTP RETR PASV + </name> + <command> +ftp://%HOSTIP:%FTPPORT/102 +</command> +</test> +<file name="log/ftpserver.cmd"> +REPLY EPSV 500 no such command +</file> + + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +PASV +TYPE I +SIZE 102 +RETR 102 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test103 b/Build/source/libs/curl/tests/data/test103 new file mode 100644 index 00000000000..3c7188b05fc --- /dev/null +++ b/Build/source/libs/curl/tests/data/test103 @@ -0,0 +1,40 @@ +# Server-side +<reply> +<data> +data + to + see +that FTP +works + so does it? +</data> +</reply> + +# Client-side +<client> + <name> +FTP RETR PORT with CWD + </name> + <command> +ftp://%HOSTIP:%FTPPORT/a/path/103 -P - +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^PORT .* +^EPRT.* +^LPRT.* +</strip> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +CWD a/path +PORT 127,0,0,1,246,33 +TYPE I +SIZE 103 +RETR 103 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test104 b/Build/source/libs/curl/tests/data/test104 new file mode 100644 index 00000000000..d44dcad2947 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test104 @@ -0,0 +1,29 @@ +# Server-side +<reply> +<size> +51 +</size> +</reply> + +# Client-side +<client> + <name> +FTP --head to get file size only + </name> + <command> +ftp://%HOSTIP:%FTPPORT/a/path/103 --head +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +CWD a/path +MDTM 103 +TYPE I +SIZE 103 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test105 b/Build/source/libs/curl/tests/data/test105 new file mode 100644 index 00000000000..259d7a98186 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test105 @@ -0,0 +1,39 @@ +# Server-side +<reply> +<data> +data + to + see +that FTP +works + so does it? +</data> +</reply> + +# Client-side +<client> + <name> +FTP user+password in URL and ASCII transfer + </name> + <command> +ftp://userdude:passfellow@%HOSTIP:%FTPPORT/103 --use-ascii +</command> +<file name="log/ftpserver.cmd"> +REPLY EPSV 500 no such command +REPLY SIZE 500 no such command +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER userdude +PASS passfellow +PWD +EPSV +PASV +TYPE A +SIZE 103 +RETR 103 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test106 b/Build/source/libs/curl/tests/data/test106 new file mode 100644 index 00000000000..8c7f294be3c --- /dev/null +++ b/Build/source/libs/curl/tests/data/test106 @@ -0,0 +1,35 @@ +# Server-side +<reply> +<data> +data + to + see +that FTP +works + so does it? +</data> +</reply> + +# Client-side +<client> + <name> +FTP GET with type=A style ASCII URL using %20 codes + </name> + <command> +"ftp://%HOSTIP:%FTPPORT//path%20with%20%20spaces/and%20things2/106;type=A" +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +CWD /path with spaces/and things2 +EPSV +TYPE A +SIZE 106 +RETR 106 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test107 b/Build/source/libs/curl/tests/data/test107 new file mode 100644 index 00000000000..c975ed2e804 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test107 @@ -0,0 +1,38 @@ + +# Client-side +<client> + <name> +FTP PASV upload file + </name> +<file name="log/test107.txt"> +data + to + see +that FTP +works + so does it? +</file> + <command> +ftp://%HOSTIP:%FTPPORT/107 -T log/test107.txt +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<upload> +data + to + see +that FTP +works + so does it? +</upload> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +TYPE I +STOR 107 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test108 b/Build/source/libs/curl/tests/data/test108 new file mode 100644 index 00000000000..69ddf912f97 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test108 @@ -0,0 +1,41 @@ +# Server-side +<reply> +<data> +</data> +</reply> + +# Client-side +<client> + <name> +FTP PORT upload with CWD + </name> + <command> +ftp://%HOSTIP:%FTPPORT/CWD/STOR/RETR/108 -T log/upload108 -P - +</command> +<file name="log/upload108"> +Moooooooooooo + upload this +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^PORT .* +^EPRT .* +^LPRT .* +</strip> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +CWD CWD/STOR/RETR +PORT 127,0,0,1,5,109 +TYPE I +STOR 108 +</protocol> +<upload> +Moooooooooooo + upload this +</upload> +</verify> diff --git a/Build/source/libs/curl/tests/data/test109 b/Build/source/libs/curl/tests/data/test109 new file mode 100644 index 00000000000..2f19737b06a --- /dev/null +++ b/Build/source/libs/curl/tests/data/test109 @@ -0,0 +1,37 @@ +# Server-side +<reply> +<data> +</data> +</reply> + +# Client-side +<client> + <name> +FTP PASV upload append + </name> + <command> +ftp://%HOSTIP:%FTPPORT/109 -T log/upload109 --append +</command> +<file name="log/upload109"> +Moooooooooooo + upload this +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +</strip> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +TYPE I +APPE 109 +</protocol> +<upload> +Moooooooooooo + upload this +</upload> +</verify> diff --git a/Build/source/libs/curl/tests/data/test11 b/Build/source/libs/curl/tests/data/test11 new file mode 100644 index 00000000000..4d80c9d09ab --- /dev/null +++ b/Build/source/libs/curl/tests/data/test11 @@ -0,0 +1,64 @@ +# Server-side +<reply> +<data> +HTTP/1.1 301 This is a weirdo text message +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Location: data/110002.txt?coolsite=yes +Connection: close + +This server reply is for testing a simple Location: following + +</data> +<data2> +HTTP/1.1 200 Followed here fine +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +If this is received, the location following worked + +</data2> +<datacheck> +HTTP/1.1 301 This is a weirdo text message +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Location: data/110002.txt?coolsite=yes +Connection: close + +HTTP/1.1 200 Followed here fine +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +If this is received, the location following worked + +</datacheck> +</reply> + +# Client-side +<client> + <name> +simple HTTP Location: following + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/11 -L +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /want/11 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET /want/data/110002.txt?coolsite=yes HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test110 b/Build/source/libs/curl/tests/data/test110 new file mode 100644 index 00000000000..e93c2cc4d99 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test110 @@ -0,0 +1,40 @@ +# Server-side +<reply> +<data> +expected to be a file without the first part +but we emulate that +</data> +<size> +85 +</size> +</reply> + +# Client-side +<client> + <name> +FTP download resume with set limit + </name> + <command> +ftp://%HOSTIP:%FTPPORT/110 -C 20 +</command> +<file name="log/ftpserver.cmd"> +REPLY EPSV 500 no such command +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +</strip> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +PASV +TYPE I +SIZE 110 +REST 20 +RETR 110 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test111 b/Build/source/libs/curl/tests/data/test111 new file mode 100644 index 00000000000..a8052254b55 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test111 @@ -0,0 +1,33 @@ +# Server-side +<reply> +<size> +85 +</size> +</reply> + +# Client-side +<client> + <name> +FTP download resume beyond file size + </name> + <command> +ftp://%HOSTIP:%FTPPORT/111 -C 2000 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +36 +</errorcode> +<strip> +</strip> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +TYPE I +SIZE 111 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test112 b/Build/source/libs/curl/tests/data/test112 new file mode 100644 index 00000000000..001faa198c9 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test112 @@ -0,0 +1,37 @@ +# Server-side +<reply> +</reply> + +# Client-side +<client> + <name> +FTP PASV upload resume + </name> + <command> +ftp://%HOSTIP:%FTPPORT/112 -T log/upload112 -C 40 +</command> +<file name="log/upload112"> +this is the *****crap******** that we're gonna upload + +worx? +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +</strip> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +TYPE I +APPE 112 +</protocol> +<upload> + gonna upload + +worx? +</upload> +</verify> diff --git a/Build/source/libs/curl/tests/data/test113 b/Build/source/libs/curl/tests/data/test113 new file mode 100644 index 00000000000..93cb1c782bb --- /dev/null +++ b/Build/source/libs/curl/tests/data/test113 @@ -0,0 +1,26 @@ +# Server-side +<reply> +</reply> + +# Client-side +<client> + <name> +FTP download, failed login: USER not valid + </name> + <command> +ftp://%HOSTIP:%FTPPORT/113 +</command> +<file name="log/ftpserver.cmd"> +REPLY USER 314 bluah you fewl! +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +12 +</errorcode> +<protocol> +USER anonymous +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test114 b/Build/source/libs/curl/tests/data/test114 new file mode 100644 index 00000000000..7b35277d741 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test114 @@ -0,0 +1,27 @@ +# Server-side +<reply> +</reply> + +# Client-side +<client> + <name> +FTP download, failed login: PASS not valid + </name> + <command> +ftp://%HOSTIP:%FTPPORT/114 +</command> +<file name="log/ftpserver.cmd"> +REPLY PASS 314 bluah you f00l! +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +11 +</errorcode> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test115 b/Build/source/libs/curl/tests/data/test115 new file mode 100644 index 00000000000..e4bb77ec617 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test115 @@ -0,0 +1,31 @@ +# Server-side +<reply> +</reply> + +# Client-side +<client> + <name> +FTP download, failed PASV + </name> + <command> +ftp://%HOSTIP:%FTPPORT/115 +</command> +<file name="log/ftpserver.cmd"> +REPLY PASV 314 bluah you f00l! +REPLY EPSV 314 bluah you f00l! +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +13 +</errorcode> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +PASV +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test116 b/Build/source/libs/curl/tests/data/test116 new file mode 100644 index 00000000000..d84ffe9fcfa --- /dev/null +++ b/Build/source/libs/curl/tests/data/test116 @@ -0,0 +1,33 @@ +# Server-side +<reply> +</reply> + +# Client-side +<client> + <name> +FTP download, failed PORT + </name> + <command> +ftp://%HOSTIP:%FTPPORT/116 -P 127.0.0.1 +</command> +<file name="log/ftpserver.cmd"> +REPLY PORT 314 bluah you f00l! +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +30 +</errorcode> +<strip> +^PORT 127,0,0,1,.* +^EPRT .* +^LPRT .* +</strip> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test117 b/Build/source/libs/curl/tests/data/test117 new file mode 100644 index 00000000000..549f21c307c --- /dev/null +++ b/Build/source/libs/curl/tests/data/test117 @@ -0,0 +1,32 @@ +# Server-side +<reply> +</reply> + +# Client-side +<client> + <name> +FTP download, failed TYPE + </name> + <command> +ftp://%HOSTIP:%FTPPORT/117 +</command> +<file name="log/ftpserver.cmd"> +REPLY EPSV 314 bluah you f00l! +REPLY TYPE 314 bluah you f00l! +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +17 +</errorcode> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +PASV +TYPE I +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test118 b/Build/source/libs/curl/tests/data/test118 new file mode 100644 index 00000000000..db317c7b34e --- /dev/null +++ b/Build/source/libs/curl/tests/data/test118 @@ -0,0 +1,34 @@ +# Server-side +<reply> +</reply> + +# Client-side +<client> + <name> +FTP download, failed RETR + </name> + <command> +ftp://%HOSTIP:%FTPPORT/118 +</command> +<file name="log/ftpserver.cmd"> +REPLY RETR 314 bluah you f00l! +REPLY EPSV 314 bluah you f00l! +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +19 +</errorcode> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +PASV +TYPE I +SIZE 118 +RETR 118 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test119 b/Build/source/libs/curl/tests/data/test119 new file mode 100644 index 00000000000..dfcc50928b3 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test119 @@ -0,0 +1,36 @@ +# Server-side +<reply> +</reply> + +# Client-side +<client> + <name> +FTP download, failed RETR with PORT + </name> + <command> +ftp://%HOSTIP:%FTPPORT/119 -P - +</command> +<file name="log/ftpserver.cmd"> +REPLY RETR 314 bluah you f00l! +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +19 +</errorcode> +<strip> +^PORT.* +^EPRT .* +^LPRT .* +</strip> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +TYPE I +SIZE 119 +RETR 119 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test12 b/Build/source/libs/curl/tests/data/test12 new file mode 100644 index 00000000000..6af9037db09 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test12 @@ -0,0 +1,44 @@ +# Server-side +<reply> +<data> +HTTP/1.1 206 Partial Content +Date: Mon, 13 Nov 2000 13:41:09 GMT +Server: Apache/1.3.11 (Unix) PHP/3.0.14 +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 101 +Content-Range: bytes 100-200/3527 +Connection: close +Content-Type: text/html + +ink="#ffffff" vlink="#cccccc"> +<table width=100% cellspacing=0 cellpadding=0 border=0> + <tr> 0123456 +</data> +</reply> + +# Client-side +<client> + <name> +HTTP range support + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/12 -r 100-200 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /want/12 HTTP/1.1 +Range: bytes=100-200 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test120 b/Build/source/libs/curl/tests/data/test120 new file mode 100644 index 00000000000..30e03f9287f --- /dev/null +++ b/Build/source/libs/curl/tests/data/test120 @@ -0,0 +1,39 @@ +# Server-side +<reply> +<data> +data + to + see +that FTP +works + so does it? +</data> +</reply> + +# Client-side +<client> + <name> +ftp download with post-quote delete operation + </name> + <command> +ftp://%HOSTIP:%FTPPORT/120 -Q "-DELE file" +</command> +<file name="log/ftpserver.cmd"> +REPLY EPSV 314 bluah you f00l! +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +PASV +TYPE I +SIZE 120 +RETR 120 +DELE file +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test121 b/Build/source/libs/curl/tests/data/test121 new file mode 100644 index 00000000000..34c22db6852 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test121 @@ -0,0 +1,36 @@ +# Server-side +<reply> +<data> +data + to + see +that FTP +works + so does it? +</data> +</reply> + +# Client-side +<client> + <name> +ftp download with post- and pre-transfer delete operations + </name> + <command> +ftp://%HOSTIP:%FTPPORT/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +DELE before_transfer +EPSV +TYPE I +SIZE 121 +RETR 121 +DELE after_transfer +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test122 b/Build/source/libs/curl/tests/data/test122 new file mode 100644 index 00000000000..ba867c60207 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test122 @@ -0,0 +1,32 @@ +# Server-side +<reply> +<size> +5 +</size> +</reply> + +# Client-side +<client> + <name> +FTP download resume with whole file already downloaded + </name> + <command> +ftp://%HOSTIP:%FTPPORT/122 -C 5 +</command> +<file name="log/ftpserver.cmd"> +REPLY EPSV 500 no such command +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +PASV +TYPE I +SIZE 122 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test123 b/Build/source/libs/curl/tests/data/test123 new file mode 100644 index 00000000000..d824fb61518 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test123 @@ -0,0 +1,27 @@ +# Server-side +<reply> +</reply> + +# Client-side +<client> + <name> +FTP upload resume with whole file already downloaded + </name> + <command> +ftp://%HOSTIP:%FTPPORT/123 -T log/upload123 -C 51 +</command> +<file name="log/upload123"> +-------------------------------------------------- +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +TYPE I +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test124 b/Build/source/libs/curl/tests/data/test124 new file mode 100644 index 00000000000..6eebcee35bf --- /dev/null +++ b/Build/source/libs/curl/tests/data/test124 @@ -0,0 +1,34 @@ +# Server-side +<reply> +<data> +we can still send data even if pwd fails! +</data> +</reply> + +# Client-side +<client> + <name> +FTP download, failed PWD + </name> + <command> +ftp://%HOSTIP:%FTPPORT/124 +</command> +<file name="log/ftpserver.cmd"> +REPLY PWD 314 bluah you f00l! +REPLY EPSV 314 bluah you f00l! +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +PASV +TYPE I +SIZE 124 +RETR 124 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test125 b/Build/source/libs/curl/tests/data/test125 new file mode 100644 index 00000000000..1f7be3d6711 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test125 @@ -0,0 +1,29 @@ +# Server-side +<reply> +</reply> + +# Client-side +<client> + <name> +FTP download, failed CWD + </name> + <command> +ftp://%HOSTIP:%FTPPORT/path/to/file/125 +</command> +<file name="log/ftpserver.cmd"> +REPLY CWD 314 bluah you f00l! +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +9 +</errorcode> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +CWD path/to/file +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test126 b/Build/source/libs/curl/tests/data/test126 new file mode 100644 index 00000000000..9b227224cc1 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test126 @@ -0,0 +1,33 @@ +# Server-side +<reply> +<data> +this is file contents +</data> +</reply> + +# Client-side +<client> + <name> +FTP download with multiple replies at once in RETR + </name> + <command> +ftp://%HOSTIP:%FTPPORT/blalbla/lululul/126 +</command> +<file name="log/ftpserver.cmd"> +RETRWEIRDO +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +CWD blalbla/lululul +EPSV +TYPE I +SIZE 126 +RETR 126 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test127 b/Build/source/libs/curl/tests/data/test127 new file mode 100644 index 00000000000..97aa45849ce --- /dev/null +++ b/Build/source/libs/curl/tests/data/test127 @@ -0,0 +1,30 @@ +# Server-side +<reply> +<data> +moooooooo +</data> +</reply> + +# Client-side +<client> + <name> +FTP --disable-epsv + </name> + <command> +ftp://%HOSTIP:%FTPPORT/path/to/file/127 --disable-epsv +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +CWD path/to/file +PASV +TYPE I +SIZE 127 +RETR 127 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test13 b/Build/source/libs/curl/tests/data/test13 new file mode 100644 index 00000000000..1a7d3605615 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test13 @@ -0,0 +1,34 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 Read you +Deleted: suppose we got a header like this! ;-) + +blabla custom request result + +</data> +</reply> + +# Client-side +<client> + <name> +HTTP custom request 'DELETE' + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/13 -X DELETE +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +DELETE /want/13 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test14 b/Build/source/libs/curl/tests/data/test14 new file mode 100644 index 00000000000..7f02b438aba --- /dev/null +++ b/Build/source/libs/curl/tests/data/test14 @@ -0,0 +1,34 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Server: thebest/1.0 +Connection: close + +</data> +</reply> + +# Client-side +<client> + <name> +HTTP HEAD with Connection: close + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/14 -i --head +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +HEAD /want/14 HTTP/1.1 +User-Agent: curl/7.4.2-pre4 (sparc-sun-solaris2.7) libcurl 7.4.2-pre4 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test15 b/Build/source/libs/curl/tests/data/test15 new file mode 100644 index 00000000000..b2a8befa5f3 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test15 @@ -0,0 +1,44 @@ +# Server-side +<reply> +<data nocheck=true> +HTTP/1.4 200 OK +Fake: yes +Fake: yes +Fake: yes + +Repeated nonsense-headers +</data> +</reply> + +# Client-side +<client> + <name> +--write-out test + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/15 --write-out '%{url_effective} %{http_code} %{size_download}\n' +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<stdout> +HTTP/1.4 200 OK +Fake: yes +Fake: yes +Fake: yes + +Repeated nonsense-headers +http://127.0.0.1:8999/want/15 200 26 +</stdout> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /want/15 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test16 b/Build/source/libs/curl/tests/data/test16 new file mode 100644 index 00000000000..18ce653679c --- /dev/null +++ b/Build/source/libs/curl/tests/data/test16 @@ -0,0 +1,37 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Type: text/html +Funny-head: yesyes + +the content goes here +</data> +</reply> + +# Client-side +<client> + <name> +HTTP with proxy athorization + </name> + <command> + -U fake@user:§§§looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x %HOSTIP:%HOSTPORT http://we.want.that.site.com/16 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET http://we.want.that.site.com/16 HTTP/1.1 +Proxy-authorization: Basic ZmFrZUB1c2VyOqenp2xvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb28= +Host: we.want.that.site.com +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test17 b/Build/source/libs/curl/tests/data/test17 new file mode 100644 index 00000000000..572252e5eca --- /dev/null +++ b/Build/source/libs/curl/tests/data/test17 @@ -0,0 +1,42 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Funny-head: yesyes + +This is the proof it works +</data> +</reply> + +# Client-side +<client> + <name> +HTTP with config file on stdin + </name> + <stdin> +# +# Use a silly request without '--': +request MOOO +# +# Set the user-agent using a short-option: +-A "agent007 license to drill\t" +# +# long option *with* '--': +--max-time 180 + </stdin> + <command> +-K - %HOSTIP:%HOSTPORT/that.site.com/17 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<protocol> +MOOO /that.site.com/17 HTTP/1.1 +User-Agent: agent007 license to drill +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test18 b/Build/source/libs/curl/tests/data/test18 new file mode 100644 index 00000000000..3f33ae6cdcd --- /dev/null +++ b/Build/source/libs/curl/tests/data/test18 @@ -0,0 +1,75 @@ +# Server-side +<reply> +<data nocheck=1> +HTTP/1.1 200 OK +Funny-head: yesyes + +moo +</data> +<data2> +HTTP/1.1 200 OK +Funny-head: yesyes + +foo +</data2> +<data3> +HTTP/1.1 200 OK +Funny-head: yesyes + +hoo +</data3> +</reply> + +# Client-side +<client> + <name> +multiple requests using {} in URL + </name> + <command> +'%HOSTIP:%HOSTPORT/{18,180002,180003}' +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /18 HTTP/1.1 +User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET /180002 HTTP/1.1 +User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET /180003 HTTP/1.1 +User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +<stdout> +--_curl_--127.0.0.1:8999/18 +HTTP/1.1 200 OK +Funny-head: yesyes + +moo +--_curl_--127.0.0.1:8999/180002 +HTTP/1.1 200 OK +Funny-head: yesyes + +foo +--_curl_--127.0.0.1:8999/180003 +HTTP/1.1 200 OK +Funny-head: yesyes + +hoo +</stdout> +</verify> diff --git a/Build/source/libs/curl/tests/data/test19 b/Build/source/libs/curl/tests/data/test19 new file mode 100644 index 00000000000..5e2b352c384 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test19 @@ -0,0 +1,22 @@ +# Server-side +<reply> +<data> +</data> +</reply> + +# Client-side +<client> + <name> +attempt connect to non-listening socket + </name> + <command> +%HOSTIP:60000 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +7 +</errorcode> +</verify> diff --git a/Build/source/libs/curl/tests/data/test190 b/Build/source/libs/curl/tests/data/test190 new file mode 100644 index 00000000000..fc131f78b17 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test190 @@ -0,0 +1,30 @@ +# Server-side +<reply> +moooooooo +</reply> + +# Client-side +<client> + <name> +FTP download with strict timeout and slow CWD + </name> + <command> +ftp://%HOSTIP:%FTPPORT/path/to/file/126 -m 3 +</command> +<file name="log/ftpserver.cmd"> +DELAY CWD 15 +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +28 +</errorcode> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +CWD path/to/file +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test2 b/Build/source/libs/curl/tests/data/test2 new file mode 100644 index 00000000000..fc0ebe845e2 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test2 @@ -0,0 +1,42 @@ +# +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Type: text/html +Funny-head: yesyes + +</data> +</reply> + +# +# Client-side +<client> + <name> +HTTP GET with user and password + </name> + <command> + -u fake:user http://%HOSTIP:%HOSTPORT/2 +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /2 HTTP/1.1 +Authorization: Basic ZmFrZTp1c2Vy +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +<data> +[insert full protocol verifiction dump here] +</data> +</verify> diff --git a/Build/source/libs/curl/tests/data/test20 b/Build/source/libs/curl/tests/data/test20 new file mode 100644 index 00000000000..943596430bf --- /dev/null +++ b/Build/source/libs/curl/tests/data/test20 @@ -0,0 +1,22 @@ +# Server-side +<reply> +<data> +</data> +</reply> + +# Client-side +<client> + <name> +attempt connect to non-existing host name + </name> + <command> +non-existing-and-weeeeeeirdname +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +6 +</errorcode> +</verify> diff --git a/Build/source/libs/curl/tests/data/test200 b/Build/source/libs/curl/tests/data/test200 new file mode 100644 index 00000000000..709de52fe61 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test200 @@ -0,0 +1,31 @@ +# Server-side +<reply> +<data> +foo + bar +bar + foo +moo +</data> +</reply> + +# Client-side +<client> + <name> +basic file:// file + </name> + <command> +file://localhost/%PWD/log/test200.txt +</command> +<file name="log/test200.txt"> +foo + bar +bar + foo +moo +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +</verify> diff --git a/Build/source/libs/curl/tests/data/test201 b/Build/source/libs/curl/tests/data/test201 new file mode 100644 index 00000000000..f441be801a2 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test201 @@ -0,0 +1,22 @@ +# Server-side +<reply> +<data> +</data> +</reply> + +# Client-side +<client> + <name> +missing file:// file + </name> + <command> +file://localhost/%PWD/log/non-existant-file.txt +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +37 +</errorcode> +</verify> diff --git a/Build/source/libs/curl/tests/data/test202 b/Build/source/libs/curl/tests/data/test202 new file mode 100644 index 00000000000..4a7fd313e81 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test202 @@ -0,0 +1,26 @@ +# Server-side +<reply> +<data> +</data> +</reply> + +# Client-side +<client> + <name> +two file:// URLs to stdout + </name> + <command> +file://localhost/%PWD/log/test202.txt file://localhost/%PWD/log/test202.txt +</command> +<file name="log/test202.txt"> +contents in a single file +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<stdout> +contents in a single file +contents in a single file +</stdout> +</verify> diff --git a/Build/source/libs/curl/tests/data/test21 b/Build/source/libs/curl/tests/data/test21 new file mode 100644 index 00000000000..b8aa3e1b744 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test21 @@ -0,0 +1,22 @@ +# Server-side +<reply> +<data> +</data> +</reply> + +# Client-side +<client> + <name> +use curl with multiple request methods + </name> + <command> +-I -d FOOO localhost +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +2 +</errorcode> +</verify> diff --git a/Build/source/libs/curl/tests/data/test22 b/Build/source/libs/curl/tests/data/test22 new file mode 100644 index 00000000000..1179cd29014 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test22 @@ -0,0 +1,34 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Funny-head: yesyes + +This is the proof it works +</data> +</reply> + +# Client-side +<client> + <name> +get HTTP with URL > 10000 bytes + </name> + <command> +%HOSTIP:%HOSTPORT/`perl -e 'print "a" x 10000;'`/22 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent: curl/.* +</strip> +<protocol> +GET /aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 HTTP/1.1 +User-Agent: curl/7.4.2 (sparc-sun-solaris2.7) libcurl 7.4.2 (SSL 0.9.6) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol +</verify> diff --git a/Build/source/libs/curl/tests/data/test23 b/Build/source/libs/curl/tests/data/test23 new file mode 100644 index 00000000000..1a30b303d4d --- /dev/null +++ b/Build/source/libs/curl/tests/data/test23 @@ -0,0 +1,22 @@ +# Server-side +<reply> +<data> +</data> +</reply> + +# Client-side +<client> + <name> +unsupported protocol:// URL + </name> + <command> +htfp://%HOSTIP:%HOSTPORT/none.htfml +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +1 +</errorcode> +</verify> diff --git a/Build/source/libs/curl/tests/data/test24 b/Build/source/libs/curl/tests/data/test24 new file mode 100644 index 00000000000..1b8d528a97b --- /dev/null +++ b/Build/source/libs/curl/tests/data/test24 @@ -0,0 +1,37 @@ +# Server-side +<reply> +<data nocheck=1> +HTTP/1.0 404 BAD BOY +Content-Type: text/html + +This silly page doesn't reaaaaaly exist so you should not get it. +</data> +</reply> + +# Client-side +<client> + <name> +HTTP GET fail silently on HTTP error return + </name> + <command> +http://%HOSTIP:%HOSTPORT/24 --fail +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent: curl/.* +</strip> +<protocol> +GET /24 HTTP/1.1 +User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +<errorcode> +22 +</errorcode> +</verify> diff --git a/Build/source/libs/curl/tests/data/test25 b/Build/source/libs/curl/tests/data/test25 new file mode 100644 index 00000000000..a5592a00948 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test25 @@ -0,0 +1,109 @@ +# Server-side +<reply> +<data> +HTTP/1.1 301 This is a weirdo text message +Server: test-server/fake +Location: data/reply/25 +Content-Length: 32 +Connection: close + +Redirect to the same URL again! +</data> +<datacheck> +HTTP/1.1 301 This is a weirdo text message +Server: test-server/fake +Location: data/reply/25 +Content-Length: 32 +Connection: close + +HTTP/1.1 301 This is a weirdo text message +Server: test-server/fake +Location: data/reply/25 +Content-Length: 32 +Connection: close + +HTTP/1.1 301 This is a weirdo text message +Server: test-server/fake +Location: data/reply/25 +Content-Length: 32 +Connection: close + +HTTP/1.1 301 This is a weirdo text message +Server: test-server/fake +Location: data/reply/25 +Content-Length: 32 +Connection: close + +HTTP/1.1 301 This is a weirdo text message +Server: test-server/fake +Location: data/reply/25 +Content-Length: 32 +Connection: close + +HTTP/1.1 301 This is a weirdo text message +Server: test-server/fake +Location: data/reply/25 +Content-Length: 32 +Connection: close + +</datacheck> +</reply> + +# Client-side +<client> + <name> +looping HTTP Location: following with --max-redirs, no persistance + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/25 -L --max-redirs 5 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent: curl/.* +</strip> +<protocol> +GET /want/25 HTTP/1.1 +User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET /want/data/reply/25 HTTP/1.1 +User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET /want/data/reply/data/reply/25 HTTP/1.1 +User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET /want/data/reply/data/reply/data/reply/25 HTTP/1.1 +User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET /want/data/reply/data/reply/data/reply/data/reply/25 HTTP/1.1 +User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET /want/data/reply/data/reply/data/reply/data/reply/data/reply/25 HTTP/1.1 +User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> + +<errorcode> +47 +</errorcode> +</verify> diff --git a/Build/source/libs/curl/tests/data/test26 b/Build/source/libs/curl/tests/data/test26 new file mode 100644 index 00000000000..75530b1a304 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test26 @@ -0,0 +1,35 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 Mooo +Server: test-server/fake +Connection: close + +*flopp* +</data> +</reply> + +# Client-side +<client> + <name> +specify more -o than URLs + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/26 -o - -o - +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent: curl.* +</strip> +<protocol> +GET /want/26 HTTP/1.1 +User-Agent: curl/7.8.1-pre3 (sparc-sun-solaris2.7) libcurl 7.8.1-pre3 (OpenSSL 0.9.6a) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test27 b/Build/source/libs/curl/tests/data/test27 new file mode 100644 index 00000000000..830bb3dabeb --- /dev/null +++ b/Build/source/libs/curl/tests/data/test27 @@ -0,0 +1,46 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 Mooo +Connection: close +Set-Cookie: path=/; thewinneris=nowayyouwin; + +*flopp* +</data> +</reply> + +# Client-side +<client> + <name> +Get same cookie page several times + </name> + <command> +'http://%HOSTIP:%HOSTPORT/want/{27,27,27}' -b none +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent: curl.* +</strip> +<protocol> +GET /want/27 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET /want/27 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* +Cookie: thewinneris=nowayyouwin + +GET /want/27 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* +Cookie: thewinneris=nowayyouwin + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test28 b/Build/source/libs/curl/tests/data/test28 new file mode 100644 index 00000000000..bea7edd4787 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test28 @@ -0,0 +1,64 @@ +# Server-side +<reply> +<data> +HTTP/1.1 301 This is a weirdo text message +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Location: /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE +Connection: close + +This server reply is for testing a simple Location: following + +</data> +<data2> +HTTP/1.1 200 Followed here fine +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +If this is received, the location following worked + +</data2> +<datacheck> +HTTP/1.1 301 This is a weirdo text message +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Location: /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE +Connection: close + +HTTP/1.1 200 Followed here fine +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +If this is received, the location following worked + +</datacheck> +</reply> + +# Client-side +<client> + <name> +HTTP Location: following with extra spaces in header + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/28 -L +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /want/28 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET /online/1,1795,Welcome,00.html/280002.txt?logout=TRUE HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test29 b/Build/source/libs/curl/tests/data/test29 new file mode 100644 index 00000000000..e447c53d86c --- /dev/null +++ b/Build/source/libs/curl/tests/data/test29 @@ -0,0 +1,40 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Connection: close + +<html>result</html> +</data> +<postcmd> +wait 10 +</postcmd> +</reply> + +# Client-side +<client> + <name> +HTTP with 2 secs timeout + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/29 -m 2 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /want/29 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +<errorcode> +28 +</errorcode> +</verify> diff --git a/Build/source/libs/curl/tests/data/test3 b/Build/source/libs/curl/tests/data/test3 new file mode 100644 index 00000000000..0e2d9d95f9d --- /dev/null +++ b/Build/source/libs/curl/tests/data/test3 @@ -0,0 +1,42 @@ +# +# Server-side +<reply name="1"> +<data> +HTTP/1.0 200 OK +Server: test-server/fake +Content-Type: text/html +Content-Length: 0 + +this is data even though Content-Length is set to zero +</data> +</reply> + +# +# Client-side +<client> + <name> +HTTP POST with user and password + </name> + <command> + -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://%HOSTIP:%HOSTPORT/3 +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol nonewline=yes> +POST /3 HTTP/1.1 +Authorization: Basic ZmFrZTotdXNlcg== +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* +Content-Length: 37 +Content-Type: application/x-www-form-urlencoded + +fooo=mooo&pooo=clue&doo=%20%20%20++++ +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test30 b/Build/source/libs/curl/tests/data/test30 new file mode 100644 index 00000000000..f8a1087dc0a --- /dev/null +++ b/Build/source/libs/curl/tests/data/test30 @@ -0,0 +1,32 @@ +# Server-side +<reply> +<data> +</data> +</reply> + +# Client-side +<client> + <name> +HTTP with no data in server reply + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/30 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /want/30 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +<errorcode> +52 +</errorcode> +</verify> diff --git a/Build/source/libs/curl/tests/data/test300 b/Build/source/libs/curl/tests/data/test300 new file mode 100644 index 00000000000..faad4d0599f --- /dev/null +++ b/Build/source/libs/curl/tests/data/test300 @@ -0,0 +1,38 @@ +# +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 7 + +MooMoo +</data> +</reply> + +# +# Client-side +<client> + <name> +simple HTTPS GET + </name> + <command> +https://%HOSTIP:%HTTPSPORT/300 +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /300 HTTP/1.1 +Host: 127.0.0.1:8433 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test301 b/Build/source/libs/curl/tests/data/test301 new file mode 100644 index 00000000000..c84c57407c8 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test301 @@ -0,0 +1,42 @@ +# +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Type: text/html +Funny-head: yesyes + +</data> +</reply> + +# +# Client-side +<client> + <name> +HTTPS GET with user and password + </name> + <command> + -u fake:user https://%HOSTIP:%HTTPSPORT/2 +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /2 HTTP/1.1 +Authorization: Basic ZmFrZTp1c2Vy +Host: 127.0.0.1:8433 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +<data> +[insert full protocol verifiction dump here] +</data> +</verify> diff --git a/Build/source/libs/curl/tests/data/test302 b/Build/source/libs/curl/tests/data/test302 new file mode 100644 index 00000000000..e31ce2ec93a --- /dev/null +++ b/Build/source/libs/curl/tests/data/test302 @@ -0,0 +1,31 @@ +# +# Server-side +<reply> +</reply> + +# +# Client-side +<client> + <name> +HTTPS GET over HTTP proxy fails + </name> + <command> + -U fake:user -x %HOSTIP:%HOSTPORT https://ssl.fakeurl-to.test/slash/302 +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<errorcode> +26 +</errorcode> +<strip> +^User-Agent:.* +</strip> +<protocol> +</protocol> +<data> +[insert full protocol verifiction dump here] +</data> +</verify> diff --git a/Build/source/libs/curl/tests/data/test303 b/Build/source/libs/curl/tests/data/test303 new file mode 100644 index 00000000000..d925b143660 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test303 @@ -0,0 +1,40 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Connection: close + +<html>result</html> +</data> +<postcmd> +wait 10 +</postcmd> +</reply> + +# Client-side +<client> + <name> +HTTPS with 2 secs timeout + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/303 -m 2 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /want/303 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +<errorcode> +28 +</errorcode> +</verify> diff --git a/Build/source/libs/curl/tests/data/test304 b/Build/source/libs/curl/tests/data/test304 new file mode 100644 index 00000000000..8d151abef63 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test304 @@ -0,0 +1,58 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +blablabla + +</data> +</reply> + +# Client-side +<client> + <name> +HTTPS multipart formpost + </name> + <command> +https://%HOSTIP:%HTTPSPORT/we/want/304 -F name=daniel -F tool=curl -F file=@log/test304.txt +</command> +# We create this file before the command is invoked! +<file name="log/test304.txt"> +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^(User-Agent:|Content-Type: multipart/form-data;|--curl).* +</strip> +<protocol> +POST /we/want/304 HTTP/1.1 +User-Agent: curl/7.9.5-pre4 (sparc-sun-solaris2.7) libcurl 7.9.5-pre4 (OpenSSL 0.9.6c) (krb4 enabled) +Host: 127.0.0.1:8433 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* +Content-Length: 1354 +Expect: 100-continue +Content-Type: multipart/form-data; boundary=curlfPpkLyYwSYaH6Fkg0WkEldoJyAQ + +--curlfPpkLyYwSYaH6Fkg0WkEldoJyAQ +Content-Disposition: form-data; name="name" + +daniel +--curlfPpkLyYwSYaH6Fkg0WkEldoJyAQ +Content-Disposition: form-data; name="tool" + +curl +--curlfPpkLyYwSYaH6Fkg0WkEldoJyAQ +Content-Disposition: form-data; name="file"; filename="log/test304.txt" +Content-Type: text/plain + +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + +--curlfPpkLyYwSYaH6Fkg0WkEldoJyAQ-- +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test31 b/Build/source/libs/curl/tests/data/test31 new file mode 100644 index 00000000000..037a872ef03 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test31 @@ -0,0 +1,56 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Type: text/html +Funny-head: yesyes +Set-Cookie: foobar=name; domain=127.0.0.1; path=/ ; secure +Set-Cookie:mismatch=this ; domain=127.0.0.1; path=/silly/ +Set-Cookie: partmatch=present; domain=127.0.0.1 ; path=/; +Set-Cookie: eat=this; domain=moo.foo.moo; +Set-Cookie: eat=this-too; domain=.foo.moo; +Set-Cookie: nodomainnovalue +Set-Cookie: nodomain=value; expires=Tue Feb 1 11:56:27 MET 2014 +Set-Cookie: nodomainnovalue; domain=reallysilly + +boo +</data> +</reply> + +# Client-side +<client> + <name> +HTTP with weirdly formatted cookies and cookiejar storage + </name> + <command> +http://%HOSTIP:%HOSTPORT/we/want/31 -b none -c log/jar31.txt +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /we/want/31 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +<file name="log/jar31.txt"> +# Netscape HTTP Cookie File +# http://www.netscape.com/newsref/std/cookie_spec.html +# This file was generated by libcurl! Edit at your own risk. + +127.0.0.1 FALSE / TRUE 0 foobar name +127.0.0.1 FALSE /silly/ FALSE 0 ismatch this +127.0.0.1 FALSE / FALSE 0 partmatch present +moo.foo.moo FALSE / FALSE 0 eat this +.foo.moo TRUE / FALSE 0 eat this-too +127.0.0.1 FALSE / FALSE 1391252187 nodomain value +</file> +</verify> diff --git a/Build/source/libs/curl/tests/data/test33 b/Build/source/libs/curl/tests/data/test33 new file mode 100644 index 00000000000..d8706adda7b --- /dev/null +++ b/Build/source/libs/curl/tests/data/test33 @@ -0,0 +1,50 @@ +# Server-side +<reply> +<data> + +</data> +</reply> + +# Client-side +<client> + <name> +HTTP PUT with resume + </name> +<file name="log/test33.txt"> +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +</file> + <command> +http://%HOSTIP:%HOSTPORT/33 -Tlog/test33.txt -C 50 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +PUT /33 HTTP/1.1 +Content-Range: bytes 50-99/100 +User-Agent: curl/7.6 (sparc-sun-solaris2.7) libcurl 7.6-pre4 (SSL 0.9.6) (krb4 enabled) +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* +Content-Length: 50 + +012345678 +012345678 +012345678 +012345678 +012345678 +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test34 b/Build/source/libs/curl/tests/data/test34 new file mode 100644 index 00000000000..1786cb60c76 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test34 @@ -0,0 +1,55 @@ +# +# Server-side +<reply> +<data> +HTTP/1.1 200 funky chunky! +Server: fakeit/0.9 fakeitbad/1.0 +Transfer-Encoding: chunked +Connection: mooo + +40 +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +30 +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb +21;heresatest=moooo +cccccccccccccccccccccccccccccccc + +0 +muuu +</data> +<datacheck> +HTTP/1.1 200 funky chunky! +Server: fakeit/0.9 fakeitbad/1.0 +Transfer-Encoding: chunked +Connection: mooo + +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc +</datacheck> +</reply> + +# +# Client-side +<client> + <name> +HTTP GET with chunked Transfer-Encoding + </name> + <command> +http://%HOSTIP:%HOSTPORT/34 +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /34 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> + diff --git a/Build/source/libs/curl/tests/data/test36 b/Build/source/libs/curl/tests/data/test36 new file mode 100644 index 00000000000..0983beefde3 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test36 @@ -0,0 +1,54 @@ +# +# Server-side +<reply> +<data> +HTTP/1.1 200 funky chunky! +Server: fakeit/0.9 fakeitbad/1.0 +Transfer-Encoding: chunked +Connection: mooo + +2 +a + +ILLEGAL +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb +</data> +<datacheck> +HTTP/1.1 200 funky chunky! +Server: fakeit/0.9 fakeitbad/1.0 +Transfer-Encoding: chunked +Connection: mooo + +a +</datacheck> +</reply> + +# +# Client-side +<client> + <name> +HTTP GET with bad chunked Transfer-Encoding + </name> + <command> +http://%HOSTIP:%HOSTPORT/36 +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<errorcode> +26 +</errocode> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /36 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> + diff --git a/Build/source/libs/curl/tests/data/test37 b/Build/source/libs/curl/tests/data/test37 new file mode 100644 index 00000000000..5ebd6776cc6 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test37 @@ -0,0 +1,36 @@ +# +# Server-side +<reply> +<data> +</data> +</reply> + +# +# Client-side +<client> + <name> +HTTP GET with nothing returned from server + </name> + <command> +http://%HOSTIP:%HOSTPORT/37 +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<errorcode> +52 +</errocode> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /37 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> + diff --git a/Build/source/libs/curl/tests/data/test38 b/Build/source/libs/curl/tests/data/test38 new file mode 100644 index 00000000000..5b7b4fef7d6 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test38 @@ -0,0 +1,49 @@ +# Server-side +<reply> +<data nocheck=1> +HTTP/1.0 200 Mooo +Date: Mon, 13 Nov 2000 13:41:09 GMT +Server: myown/1.0 +Connection: close + +todelooooo lalalala yada yada, we know nothing about ranges ;-) +</data> +</reply> + +# Client-side +<client> + <name> +HTTP resume request without server supporting it + </name> + <command option="no-output"> +http://%HOSTIP:%HOSTPORT/want/38 -C - -i -o log/fewl.txt +</command> +<file name="log/fewl.txt"> +This text is here to simulate a partly downloaded file to resume +download on. +</file> +</client> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +33 +</errorcode> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /want/38 HTTP/1.1 +Range: bytes=78- +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> + +# the download target file must remain untouched +<file name="log/fewl.txt"> +This text is here to simulate a partly downloaded file to resume +download on. +</file> +</verify> diff --git a/Build/source/libs/curl/tests/data/test4 b/Build/source/libs/curl/tests/data/test4 new file mode 100644 index 00000000000..47fc4d3ce38 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test4 @@ -0,0 +1,39 @@ +# +# Server-side +<reply name="1"> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Type: text/html +Funny-head: yesyes + +</data> +</reply> + +# +# Client-side +<client> + <name> +Replaced internal and added custom HTTP headers + </name> + <command> + -H "extra-header: here" -H "Accept: replaced" http://%HOSTIP:%HOSTPORT/4 +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /4 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +extra-header: here +Accept: replaced + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test400 b/Build/source/libs/curl/tests/data/test400 new file mode 100644 index 00000000000..b389cff7300 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test400 @@ -0,0 +1,48 @@ +# +# Server-side +<reply name="1"> +<data> +total 20 +drwxr-xr-x 8 98 98 512 Oct 22 13:06 . +drwxr-xr-x 8 98 98 512 Oct 22 13:06 .. +drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT +-r--r--r-- 1 0 1 35 Jul 16 1996 README +lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin +dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev +drwxrwxrwx 2 98 98 512 May 29 16:04 download.html +dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc +drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub +dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr +</data> +</reply> + +# +# Client-side +<client> + <name> +FTPS dir list PASV + </name> + <command> +ftps://%HOSTIP:%FTPSPORT/ +</command> +<file name="log/ftpserver.cmd"> +REPLY EPSV 500 no such command +</file> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +filter off really nothing +</strip> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +EPSV +PASV +TYPE A +LIST +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test401 b/Build/source/libs/curl/tests/data/test401 new file mode 100644 index 00000000000..461b9ba8bb3 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test401 @@ -0,0 +1,30 @@ +# Server-side +<reply> +moooooooo +</reply> + +# Client-side +<client> + <name> +FTPS download with strict timeout and slow CWD + </name> + <command> +ftps://%HOSTIP:%FTPSPORT/path/to/file/401 -m 4 +</command> +<file name="log/ftpserver.cmd"> +DELAY CWD 15 +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +28 +</errorcode> +<protocol> +USER anonymous +PASS curl_by_daniel@haxx.se +PWD +CWD path/to/file +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test402 b/Build/source/libs/curl/tests/data/test402 new file mode 100644 index 00000000000..27b265c34cd --- /dev/null +++ b/Build/source/libs/curl/tests/data/test402 @@ -0,0 +1,21 @@ +# Server-side +<reply> +moooooooo +</reply> + +# Client-side +<client> + <name> +FTPS operation to FTP port + </name> + <command> +ftps://%HOSTIP:%FTPPORT/path/to/file/402 +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<errorcode> +35 +</errorcode> +</verify> diff --git a/Build/source/libs/curl/tests/data/test43 b/Build/source/libs/curl/tests/data/test43 new file mode 100644 index 00000000000..0a34a97890f --- /dev/null +++ b/Build/source/libs/curl/tests/data/test43 @@ -0,0 +1,64 @@ +# Server-side +<reply> +<data> +HTTP/1.1 301 This is a weirdo text message +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Location: data/110002.txt?coolsite=yes +Connection: close + +This server reply is for testing a simple Location: following + +</data> +<data2> +HTTP/1.1 200 Followed here fine +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +If this is received, the location following worked + +</data2> +<datacheck> +HTTP/1.1 301 This is a weirdo text message +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Location: data/110002.txt?coolsite=yes +Connection: close + +HTTP/1.1 200 Followed here fine +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +If this is received, the location following worked + +</datacheck> +</reply> + +# Client-side +<client> + <name> +HTTP Location: following over HTTP proxy + </name> + <command> +http://%HOSTIP:%HOSTPORT/want/11 -L -x %HOSTIP:%HOSTPORT +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET http://127.0.0.1:8999/want/11 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET http://127.0.0.1:8999/want/data/110002.txt?coolsite=yes HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test44 b/Build/source/libs/curl/tests/data/test44 new file mode 100644 index 00000000000..2426c61939c --- /dev/null +++ b/Build/source/libs/curl/tests/data/test44 @@ -0,0 +1,60 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +blablabla + +</data> +</reply> + +# Client-side +<client> + <name> +HTTP RFC1867-type formposting without Expect: header + </name> + <command> +http://%HOSTIP:%HOSTPORT/we/want/44 -F name=daniel -F tool=curl -F file=@log/test44.txt -H 'Expect:' +</command> +# We create this file before the command is invoked! +<file name="log/test44.txt"> +foo- +This is a moo- +bar +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^(User-Agent:|Content-Type: multipart/form-data;|--curl).* +</strip> +<protocol> +POST /we/want/44 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* +Content-Length: 376 +Content-Type: multipart/form-data; boundary=curluczemxkcWWsxptLlAImrFQHwQ3W + +--curluczemxkcWWsxptLlAImrFQHwQ3W +Content-Disposition: form-data; name="name" + +daniel +--curluczemxkcWWsxptLlAImrFQHwQ3W +Content-Disposition: form-data; name="tool" + +curl +--curluczemxkcWWsxptLlAImrFQHwQ3W +Content-Disposition: form-data; name="file"; filename="log/test44.txt" +Content-Type: text/plain + +foo- +This is a moo- +bar +--curluczemxkcWWsxptLlAImrFQHwQ3W-- + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test45 b/Build/source/libs/curl/tests/data/test45 new file mode 100644 index 00000000000..ec6a972d5b7 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test45 @@ -0,0 +1,64 @@ +# Server-side +<reply> +<data> +HTTP/1.1 301 This is a weirdo text message +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Location: data.cgi?moo=http://&/110002 +Connection: close + +This server reply is for testing a simple Location: following + +</data> +<data2> +HTTP/1.1 200 Followed here fine +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +If this is received, the location following worked + +</data2> +<datacheck> +HTTP/1.1 301 This is a weirdo text message +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Location: data.cgi?moo=http://&/110002 +Connection: close + +HTTP/1.1 200 Followed here fine +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +If this is received, the location following worked + +</datacheck> +</reply> + +# Client-side +<client> + <name> +simple HTTP Location: without protocol in initial URL + </name> + <command> +%HOSTIP:%HOSTPORT/want/45 -L +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /want/45 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +GET /want/data.cgi?moo=http://&/110002 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test46 b/Build/source/libs/curl/tests/data/test46 new file mode 100644 index 00000000000..94e01b05f3c --- /dev/null +++ b/Build/source/libs/curl/tests/data/test46 @@ -0,0 +1,62 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Server: Microsoft-IIS/4.0 +Date: Tue, 25 Sep 2001 19:37:44 GMT +Content-Type: text/html +Set-Cookie: ckyPersistent=permanent; expires=Tue, 01-Jan-2010 05:00:00 GMT; path=/ +Set-Cookie: ckySession=temporary; path=/ +Set-Cookie: ASPSESSIONIDQGGQQSJJ=GKNBDIFAAOFDPDAIEAKDIBKE; path=/ +Cache-control: private + +This server reply is for testing a simple Location: following + +</data> +</reply> + +# Client-side +<client> + <name> +HTTP, get cookies and store in cookie jar + </name> + <command> +%HOSTIP:%HOSTPORT/want/46 -c log/jar46 -b log/injar46 +</command> +<file name="log/injar46"> +# Netscape HTTP Cookie File +# http://www.netscape.com/newsref/std/cookie_spec.html +# This is generated by libcurl! Do not edit. + +www.fake.come FALSE / FALSE 1022144953 cookiecliente si +www.loser.com FALSE / FALSE 1139150993 UID 99 +127.0.0.1 FALSE / FALSE 1139150993 mooo indeed +</file> +</client> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /want/46 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* +Cookie: mooo=indeed + +</protocol> +<file name="log/jar46"> +# Netscape HTTP Cookie File +# http://www.netscape.com/newsref/std/cookie_spec.html +# This file was generated by libcurl! Edit at your own risk. + +www.fake.come FALSE / FALSE 1022144953 cookiecliente si +www.loser.com FALSE / FALSE 1139150993 UID 99 +127.0.0.1 FALSE / FALSE 1139150993 mooo indeed +127.0.0.1 FALSE / FALSE 1262322000 ckyPersistent permanent +127.0.0.1 FALSE / FALSE 0 ckySession temporary +127.0.0.1 FALSE / FALSE 0 ASPSESSIONIDQGGQQSJJ GKNBDIFAAOFDPDAIEAKDIBKE +</file> +</verify> diff --git a/Build/source/libs/curl/tests/data/test47 b/Build/source/libs/curl/tests/data/test47 new file mode 100644 index 00000000000..3acfeb4677d --- /dev/null +++ b/Build/source/libs/curl/tests/data/test47 @@ -0,0 +1,38 @@ +# +# Server-side +<reply name="47"> +<data> +HTTP/1.0 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +<foo> within foo </foo> +</data> +</reply> + +# +# Client-side +<client> + <name> +simple HTTP 1.0 GET + </name> + <command> +http://%HOSTIP:%HOSTPORT/47 -0 +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /47 HTTP/1.0 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> + diff --git a/Build/source/libs/curl/tests/data/test5 b/Build/source/libs/curl/tests/data/test5 new file mode 100644 index 00000000000..1052c1e9fab --- /dev/null +++ b/Build/source/libs/curl/tests/data/test5 @@ -0,0 +1,38 @@ +# +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Type: text/html +Funny-head: yesyes + +</data> +</reply> + +# +# Client-side +<client> + <name> +HTTP over proxy + </name> + <command> +http://%HOSTIP:%HOSTPORT/we/want/that/page/5 -x %HOSTIP:%HOSTPORT +</command> +</test> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET http://127.0.0.1:8999/we/want/that/page/5 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test6 b/Build/source/libs/curl/tests/data/test6 new file mode 100644 index 00000000000..d3e6ae321f1 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test6 @@ -0,0 +1,36 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Type: text/html +Funny-head: yesyes + +</data> +</reply> + +# Client-side +<client> + <name> +HTTP with simple cookie send + </name> + <command> +http://%HOSTIP:%HOSTPORT/we/want/that/page/6 -b "name=contents;name2=content2" +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /we/want/that/page/6 HTTP/1.1 +Cookie: name=contents;name2=content2 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test7 b/Build/source/libs/curl/tests/data/test7 new file mode 100644 index 00000000000..c550feb41b2 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test7 @@ -0,0 +1,49 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Type: text/html +Funny-head: yesyes +Set-Cookie: foobar=name; domain=127.0.0.1; path=/; +Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/"; +Set-Cookie: partmatch=present; domain=.0.0.1; path=/; + +</data> +</reply> + +# Client-side +<client> + <name> +HTTP with cookie parser and header recording + </name> + <command> +http://%HOSTIP:%HOSTPORT/we/want/7 -b none -D log/heads7.txt +</command> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /we/want/7 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* + +</protocol> +<file name="log/heads7.txt"> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Type: text/html +Funny-head: yesyes +Set-Cookie: foobar=name; domain=127.0.0.1; path=/; +Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/"; +Set-Cookie: partmatch=present; domain=.0.0.1; path=/; + +</file> +</verify> diff --git a/Build/source/libs/curl/tests/data/test8 b/Build/source/libs/curl/tests/data/test8 new file mode 100644 index 00000000000..4c1695b92a0 --- /dev/null +++ b/Build/source/libs/curl/tests/data/test8 @@ -0,0 +1,47 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +</data> +</reply> + +# Client-side +<client> + <name> +HTTP with cookie parsing from header file + </name> + <command> +http://%HOSTIP:%HOSTPORT/we/want/8 -b log/heads8.txt +</command> + +# We create this file before the command is invoked! +<file name="log/heads8.txt"> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Type: text/html +Funny-head: yesyes +Set-Cookie: foobar=name; domain=127.0.0.1; path=/; +Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/"; +Set-Cookie: partmatch=present; domain=.0.0.1; path=/; + +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +GET /we/want/8 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* +Cookie: partmatch=present; foobar=name + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/data/test9 b/Build/source/libs/curl/tests/data/test9 new file mode 100644 index 00000000000..e6883a979ef --- /dev/null +++ b/Build/source/libs/curl/tests/data/test9 @@ -0,0 +1,61 @@ +# Server-side +<reply> +<data> +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +blablabla + +</data> +</reply> + +# Client-side +<client> + <name> +HTTP RFC1867-type formposting + </name> + <command> +http://%HOSTIP:%HOSTPORT/we/want/9 -F name=daniel -F tool=curl -F file=@log/test9.txt +</command> +# We create this file before the command is invoked! +<file name="log/test9.txt"> +foo- +This is a moo- +bar +</file> +</test> + +# Verify data after the test has been "shot" +<verify> +<strip> +^(User-Agent:|Content-Type: multipart/form-data;|--curl).* +</strip> +<protocol> +POST /we/want/9 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* +Content-Length: 375 +Expect: 100-continue +Content-Type: multipart/form-data; boundary=curluczemxkcWWsxptLlAImrFQHwQ3W + +--curluczemxkcWWsxptLlAImrFQHwQ3W +Content-Disposition: form-data; name="name" + +daniel +--curluczemxkcWWsxptLlAImrFQHwQ3W +Content-Disposition: form-data; name="tool" + +curl +--curluczemxkcWWsxptLlAImrFQHwQ3W +Content-Disposition: form-data; name="file"; filename="log/test9.txt" +Content-Type: text/plain + +foo- +This is a moo- +bar +--curluczemxkcWWsxptLlAImrFQHwQ3W-- + +</protocol> +</verify> diff --git a/Build/source/libs/curl/tests/ftpserver.pl b/Build/source/libs/curl/tests/ftpserver.pl new file mode 100644 index 00000000000..084639a9cdb --- /dev/null +++ b/Build/source/libs/curl/tests/ftpserver.pl @@ -0,0 +1,502 @@ +#!/usr/bin/perl +# +# $Id: ftpserver.pl,v 1.25 2001/12/03 13:46:56 bagder Exp $ +# This is the FTP server designed for the curl test suite. +# +# It is meant to exercise curl, it is not meant to be a fully working +# or even very standard compliant server. +# +# You may optionally specify port on the command line, otherwise it'll +# default to port 8921. +# + +use Socket; +use Carp; +use FileHandle; + +use strict; + +require "getpart.pm"; + +open(FTPLOG, ">log/ftpd.log") || + print STDERR "failed to open log file, runs without logging\n"; + +sub logmsg { print FTPLOG "$$: "; print FTPLOG @_; } + +sub ftpmsg { print INPUT @_; } + +my $verbose=0; # set to 1 for debugging +my $retrweirdo=0; + +my $port = 8921; # just a default +do { + if($ARGV[0] eq "-v") { + $verbose=1; + } + elsif($ARGV[0] =~ /^(\d+)$/) { + $port = $1; + } +} while(shift @ARGV); + +my $proto = getprotobyname('tcp') || 6; + +socket(Server, PF_INET, SOCK_STREAM, $proto)|| die "socket: $!"; +setsockopt(Server, SOL_SOCKET, SO_REUSEADDR, + pack("l", 1)) || die "setsockopt: $!"; +bind(Server, sockaddr_in($port, INADDR_ANY))|| die "bind: $!"; +listen(Server,SOMAXCONN) || die "listen: $!"; + +#print "FTP server started on port $port\n"; + +open(PID, ">.ftp.pid"); +print PID $$; +close(PID); + +my $waitedpid = 0; +my $paddr; + +sub REAPER { + $waitedpid = wait; + $SIG{CHLD} = \&REAPER; # loathe sysV + logmsg "reaped $waitedpid" . ($? ? " with exit $?\n" : "\n"); +} + +# USER is ok in fresh state +my %commandok = ( + 'USER' => 'fresh', + 'PASS' => 'passwd', + 'PASV' => 'loggedin|twosock', + 'EPSV' => 'loggedin|twosock', + 'PORT' => 'loggedin|twosock', + 'TYPE' => 'loggedin|twosock', + 'LIST' => 'twosock', + 'NLST' => 'twosock', + 'RETR' => 'twosock', + 'STOR' => 'twosock', + 'APPE' => 'twosock', + 'REST' => 'twosock', + 'CWD' => 'loggedin|twosock', + 'SYST' => 'loggedin', + 'SIZE' => 'loggedin|twosock', + 'PWD' => 'loggedin|twosock', + 'QUIT' => 'loggedin|twosock', + 'DELE' => 'loggedin|twosock' + ); + +# initially, we're in 'fresh' state +my %statechange = ( 'USER' => 'passwd', # USER goes to passwd state + 'PASS' => 'loggedin', # PASS goes to loggedin state + 'PORT' => 'twosock', # PORT goes to twosock + 'PASV' => 'twosock', # PASV goes to twosock + 'EPSV' => 'twosock', # EPSV goes to twosock + ); + +# this text is shown before the function specified below is run +my %displaytext = ('USER' => '331 We are happy you popped in!', + 'PASS' => '230 Welcome you silly person', + 'PORT' => '200 You said PORT - I say FINE', + 'TYPE' => '200 I modify TYPE as you wanted', + 'LIST' => '150 here comes a directory', + 'NLST' => '150 here comes a directory', + 'CWD' => '250 CWD command successful.', + 'SYST' => '215 UNIX Type: L8', # just fake something + 'QUIT' => '221 bye bye baby', # just reply something + 'PWD' => '257 "/nowhere/anywhere" is current directory', + 'REST' => '350 Yeah yeah we set it there for you', + 'DELE' => '200 OK OK OK whatever you say' + ); + +# callback functions for certain commands +my %commandfunc = ( 'PORT' => \&PORT_command, + 'LIST' => \&LIST_command, + 'NLST' => \&NLST_command, + 'PASV' => \&PASV_command, + 'EPSV' => \&PASV_command, + 'RETR' => \&RETR_command, + 'SIZE' => \&SIZE_command, + 'REST' => \&REST_command, + 'STOR' => \&STOR_command, + 'APPE' => \&STOR_command, # append looks like upload + ); + +my $rest=0; +sub REST_command { + $rest = $_[0]; + logmsg "Set REST position to $rest\n" +} + +sub LIST_command { + # print "150 ASCII data connection for /bin/ls (193.15.23.1,59196) (0 bytes)\r\n"; + +# this is a built-in fake-dir ;-) +my @ftpdir=("total 20\r\n", +"drwxr-xr-x 8 98 98 512 Oct 22 13:06 .\r\n", +"drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..\r\n", +"drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT\r\n", +"-r--r--r-- 1 0 1 35 Jul 16 1996 README\r\n", +"lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin\r\n", +"dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev\r\n", +"drwxrwxrwx 2 98 98 512 May 29 16:04 download.html\r\n", +"dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc\r\n", +"drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub\r\n", +"dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr\r\n"); + + logmsg "$$: pass data to child pid\n"; + for(@ftpdir) { + print SOCK $_; + } + close(SOCK); + logmsg "$$: done passing data to child pid\n"; + + print "226 ASCII transfer complete\r\n"; + return 0; +} + +sub NLST_command { + my @ftpdir=("file", "with space", "fake", "..", " ..", "funny", "README"); + for(@ftpdir) { + print SOCK "$_\r\n"; + } + close(SOCK); + print "226 ASCII transfer complete\r\n"; + return 0; +} + +sub SIZE_command { + my $testno = $_[0]; + + loadtest("data/test$testno"); + + logmsg "SIZE number $testno\n"; + + my @data = getpart("reply", "size"); + + my $size = $data[0]; + + if($size) { + print "213 $size\r\n"; + logmsg "SIZE $testno returned $size\n"; + } + else { + $size=0; + @data = getpart("reply", "data"); + for(@data) { + $size += length($_); + } + if($size) { + print "213 $size\r\n"; + logmsg "SIZE $testno returned $size\n"; + } + else { + print "550 $testno: No such file or directory.\r\n"; + logmsg "SIZE $testno: no such file\n"; + } + } + return 0; +} + +sub RETR_command { + my $testno = $_[0]; + + logmsg "RETR test number $testno\n"; + + if($testno =~ /^verifiedserver$/) { + # this is the secret command that verifies that this actually is + # the curl test server + print "150 Binary junk (10 bytes).\r\n"; + print SOCK "WE ROOLZ\r\n"; + close(SOCK); + print "226 File transfer complete\r\n"; + return 0; + } + + loadtest("data/test$testno"); + + my @data = getpart("reply", "data"); + + my $size=0; + for(@data) { + $size += length($_); + } + + if($size) { + + if($rest) { + # move read pointer forward + $size -= $rest; + logmsg "REST $rest was removed from size, makes $size left\n"; + $rest = 0; # reset REST offset again + } + if($retrweirdo) { + print "150 Binary data connection for $testno () ($size bytes).\r\n", + "226 File transfer complete\r\n"; + logmsg "150+226 in one shot!\n"; + + for(@data) { + my $send = $_; + print SOCK $send; + } + close(SOCK); + $retrweirdo=0; # switch off the weirdo again! + } + else { + print "150 Binary data connection for $testno () ($size bytes).\r\n"; + logmsg "150 Binary data connection for $testno ($size bytes).\n"; + + for(@data) { + my $send = $_; + print SOCK $send; + } + close(SOCK); + + print "226 File transfer complete\r\n"; + } + } + else { + print "550 $testno: No such file or directory.\r\n"; + logmsg "550 $testno: no such file\n"; + } + return 0; +} + +sub STOR_command { + my $testno=$_[0]; + + logmsg "STOR test number $testno\n"; + + my $filename = "log/upload.$testno"; + + print "125 Gimme gimme gimme!\r\n"; + + open(FILE, ">$filename") || + return 0; # failed to open output + + my $line; + my $ulsize=0; + while (defined($line = <SOCK>)) { + $ulsize += length($line); + print FILE $line; + } + close(FILE); + close(SOCK); + + logmsg "received $ulsize bytes upload\n"; + + print "226 File transfer complete\r\n"; + return 0; +} + +my $pasvport=9000; +sub PASV_command { + my ($arg, $cmd)=@_; + + socket(Server2, PF_INET, SOCK_STREAM, $proto) || die "socket: $!"; + setsockopt(Server2, SOL_SOCKET, SO_REUSEADDR, + pack("l", 1)) || die "setsockopt: $!"; + + my $ok=0; + + $pasvport++; # don't reuse the previous + for(1 .. 10) { + if($pasvport > 65535) { + $pasvport = 1025; + } + if(bind(Server2, sockaddr_in($pasvport, INADDR_ANY))) { + $ok=1; + last; + } + $pasvport+= 3; # try another port please + } + if(!$ok) { + print "500 no free ports!\r\n"; + logmsg "couldn't find free port\n"; + return 0; + } + listen(Server2,SOMAXCONN) || die "listen: $!"; + + if($cmd ne "EPSV") { + # PASV reply + logmsg "replying to a $cmd command\n"; + printf("227 Entering Passive Mode (127,0,0,1,%d,%d)\n", + ($pasvport/256), ($pasvport%256)); + } + else { + # EPSV reply + logmsg "replying to a $cmd command\n"; + printf("229 Entering Passive Mode (|||%d|)\n", $pasvport); + } + + my $paddr = accept(SOCK, Server2); + my($iport,$iaddr) = sockaddr_in($paddr); + my $name = gethostbyaddr($iaddr,AF_INET); + + close(Server2); # close the listener when its served its purpose! + + logmsg "$$: data connection from $name [", inet_ntoa($iaddr), "] at port $iport\n"; + + return; +} + + +sub PORT_command { + my $arg = $_[0]; + + if($arg !~ /(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)/) { + logmsg "bad PORT-line: $arg\n"; + print "500 silly you, go away\r\n"; + return 0; + } + my $iaddr = inet_aton("$1.$2.$3.$4"); + + my $port = ($5<<8)+$6; + + if(!$port || $port > 65535) { + print STDERR "very illegal PORT number: $port\n"; + return 1; + } + + my $paddr = sockaddr_in($port, $iaddr); + my $proto = getprotobyname('tcp') || 6; + + socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "major failure"; + connect(SOCK, $paddr) || return 1; + + return \&SOCK; +} + +$SIG{CHLD} = \&REAPER; + +my %customreply; +my %delayreply; +sub customize { + undef %customreply; + open(CUSTOM, "<log/ftpserver.cmd") || + return 1; + + logmsg "FTPD: Getting commands from log/ftpserver.cmd\n"; + + while(<CUSTOM>) { + if($_ =~ /REPLY ([A-Z]+) (.*)/) { + $customreply{$1}=$2; + } + elsif($_ =~ /DELAY ([A-Z]+) (\d*)/) { + $delayreply{$1}=$2; + } + elsif($_ =~ /RETRWEIRDO/) { + print "instructed to use RETRWEIRDO\n"; + $retrweirdo=1; + } + } + close(CUSTOM); +} + +my @welcome=( + '220- _ _ ____ _ '."\r\n", + '220- ___| | | | _ \| | '."\r\n", + '220- / __| | | | |_) | | '."\r\n", + '220- | (__| |_| | _ <| |___ '."\r\n", + '220 \___|\___/|_| \_\_____|'."\r\n"); + +for ( $waitedpid = 0; + ($paddr = accept(Client,Server)) || $waitedpid; + $waitedpid = 0, close Client) +{ + next if $waitedpid and not $paddr; + my($port,$iaddr) = sockaddr_in($paddr); + my $name = gethostbyaddr($iaddr,AF_INET); + + # flush data: + $| = 1; + + logmsg "connection from $name [", inet_ntoa($iaddr), "] at port $port\n"; + + open(STDIN, "<&Client") || die "can't dup client to stdin"; + open(STDOUT, ">&Client") || die "can't dup client to stdout"; + + open(INPUT, ">log/server.input") || + logmsg "failed to open log/server.input\n"; + + FTPLOG->autoflush(1); + INPUT->autoflush(1); + + &customize(); # read test control instructions + + print @welcome; + if($verbose) { + print STDERR "OUT:\n"; + print STDERR @welcome; + } + my $state="fresh"; + + while(1) { + + last unless defined ($_ = <STDIN>); + + ftpmsg $_; + + # Remove trailing CRLF. + s/[\n\r]+$//; + + unless (m/^([A-Z]{3,4})\s?(.*)/i) { + print "500 '$_': command not understood.\r\n"; + next; + } + my $FTPCMD=$1; + my $FTPARG=$2; + my $full=$_; + + logmsg "GOT: ($1) $_\n"; + + if($verbose) { + print STDERR "IN: $full\n"; + } + + my $ok = $commandok{$FTPCMD}; + if($ok !~ /$state/) { + print "500 $FTPCMD not OK in state: $state!\r\n"; + next; + } + + my $newstate=$statechange{$FTPCMD}; + if($newstate eq "") { + # remain in the same state + } + else { + $state = $newstate; + } + + my $delay = $delayreply{$FTPCMD}; + if($delay) { + # just go sleep this many seconds! + sleep($delay); + } + + my $text; + $text = $customreply{$FTPCMD}; + my $fake = $text; + if($text eq "") { + $text = $displaytext{$FTPCMD}; + } + else { + logmsg "$FTPCMD made to send '$text'\n"; + } + if($text) { + print "$text\r\n"; + } + + if($fake eq "") { + # only perform this if we're not faking a reply + # see if the new state is a function caller. + my $func = $commandfunc{$FTPCMD}; + if($func) { + # it is! + \&$func($FTPARG, $FTPCMD); + } + } + + logmsg "set to state $state\n"; + + } # while(1) + close(Client); + close(Client2); +} diff --git a/Build/source/libs/curl/tests/ftpsserver.pl b/Build/source/libs/curl/tests/ftpsserver.pl new file mode 100644 index 00000000000..b6bb11b036a --- /dev/null +++ b/Build/source/libs/curl/tests/ftpsserver.pl @@ -0,0 +1,48 @@ +#!/usr/bin/perl +# +# $Id: ftpsserver.pl,v 1.2 2001/09/17 08:55:32 bagder Exp $ +# This is the HTTPS server designed for the curl test suite. +# +# It is actually just a layer that runs stunnel properly. + +use strict; + +use stunnel; + +my $stunnel = &checkstunnel; + +if(!$stunnel) { + exit; +} + +# +# -p pemfile +# -P pid dir +# -d listen port +# -r target port + +my $verbose=0; # set to 1 for debugging + +my $port = 8821; # just our default, weird enough +my $ftp = 8921; # test ftp-server port +do { + if($ARGV[0] eq "-v") { + $verbose=1; + } + elsif($ARGV[0] eq "-r") { + $ftp=$ARGV[1]; + shift @ARGV; + } + elsif($ARGV[0] =~ /^(\d+)$/) { + $port = $1; + } +} while(shift @ARGV); + +my $path = `pwd`; +chomp $path; +my $cmd = "$stunnel -p $path/stunnel.pem -P $path/.ftps.pid -d $port -r $ftp"; + +if($verbose) { + print "FTPS server: $cmd\n"; +} +system($cmd); diff --git a/Build/source/libs/curl/tests/getpart.pm b/Build/source/libs/curl/tests/getpart.pm new file mode 100644 index 00000000000..d288000882f --- /dev/null +++ b/Build/source/libs/curl/tests/getpart.pm @@ -0,0 +1,203 @@ + +#use strict; + +my @xml; + +my $warning=0; +my $trace=0; + +sub getpartattr { + my ($section, $part)=@_; + + my %hash; + my $inside=0; + + # print "Section: $section, part: $part\n"; + + for(@xml) { + # print "$inside: $_"; + if(!$inside && ($_ =~ /^ *\<$section/)) { + $inside++; + } + elsif((1 ==$inside) && ($_ =~ /^ *\<$part([^>]*)/)) { + $inside++; + my $attr=$1; + my @p=split("[ \t]", $attr); + my $assign; + + foreach $assign (@p) { + # $assign is a 'name="contents"' pair + + if($assign =~ / *([^=]*)=\"([^\"]*)\"/) { + # *with* quotes + $hash{$1}=$2; + } + elsif($assign =~ / *([^=]*)=([^\"]*)/) { + # *without* quotes + $hash{$1}=$2; + } + } + last; + } + elsif((2 ==$inside) && ($_ =~ /^ *\<\/$part/)) { + $inside--; + } + } + return %hash; +} + +sub getpart { + my ($section, $part)=@_; + + my @this; + my $inside=0; + + # print "Section: $section, part: $part\n"; + + for(@xml) { + # print "$inside: $_"; + if(!$inside && ($_ =~ /^ *\<$section/)) { + $inside++; + } + elsif((1 ==$inside) && ($_ =~ /^ *\<$part[ \>]/)) { + $inside++; + } + elsif((2 ==$inside) && ($_ =~ /^ *\<\/$part/)) { + $inside--; + } + elsif((1==$inside) && ($_ =~ /^ *\<\/$section/)) { + if($trace) { + print STDERR "*** getpart.pm: $section/$part returned data!\n"; + } + if(!@this && $warning) { + print STDERR "*** getpart.pm: $section/$part returned empty!\n"; + } + return @this; + } + elsif(2==$inside) { + push @this, $_; + } + } + if($warning) { + print STDERR "*** getpart.pm: $section/$part returned empty!\n"; + } + return @this; #empty! +} + +sub loadtest { + my ($file)=@_; + + undef @xml; + open(XML, "<$file") || + return 1; # failure! + while(<XML>) { + push @xml, $_; + } + close(XML); + return 0; +} + +# +# Strip off all lines that match the specified pattern and return +# the new array. +# + +sub striparray { + my ($pattern, $arrayref) = @_; + + my @array; + + for(@$arrayref) { + if($_ !~ /$pattern/) { + push @array, $_; + } + } + return @array; +} + +# +# pass array *REFERENCES* ! +# +sub compareparts { + my ($firstref, $secondref)=@_; + + my $sizefirst=scalar(@$firstref); + my $sizesecond=scalar(@$secondref); + + if($sizefirst != $sizesecond) { + return -1; + } + + for(1 .. $sizefirst) { + my $index = $_ - 1; + if($firstref->[$index] ne $secondref->[$index]) { + (my $aa = $firstref->[$index]) =~ s/\r+\n$/\n/; + (my $bb = $secondref->[$index]) =~ s/\r+\n$/\n/; + if($aa ne $bb) { + return 1+$index; + } + } + } + return 0; +} + +# +# Write a given array to the specified file +# +sub writearray { + my ($filename, $arrayref)=@_; + + open(TEMP, ">$filename"); + binmode(TEMP,":raw"); # cygwin fix by Kevin Roth + for(@$arrayref) { + print TEMP $_; + } + close(TEMP); +} + +# +# Load a specified file an return it as an array +# +sub loadarray { + my ($filename)=@_; + my @array; + + open(TEMP, "<$filename"); + while(<TEMP>) { + push @array, $_; + } + close(TEMP); + return @array; +} + +# +# Given two array references, this function will store them in two +# temporary files, run 'diff' on them, store the result, remove the +# temp files and return the diff output! +# +sub showdiff { + my ($firstref, $secondref)=@_; + + my $file1=".array1"; + my $file2=".array2"; + + open(TEMP, ">$file1"); + for(@$firstref) { + print TEMP $_; + } + close(TEMP); + + open(TEMP, ">$file2"); + for(@$secondref) { + print TEMP $_; + } + close(TEMP); + + my @out = `diff $file1 $file2`; + + unlink $file1, $file2; + return @out; +} + + +1; diff --git a/Build/source/libs/curl/tests/httpserver.pl b/Build/source/libs/curl/tests/httpserver.pl new file mode 100644 index 00000000000..7faef92f9b1 --- /dev/null +++ b/Build/source/libs/curl/tests/httpserver.pl @@ -0,0 +1,17 @@ +#!/usr/bin/env perl + +use strict; + +my $verbose=0; # set to 1 for debugging + +my $port = 8999; # just a default +do { + if($ARGV[0] eq "-v") { + $verbose=1; + } + elsif($ARGV[0] =~ /^(\d+)$/) { + $port = $1; + } +} while(shift @ARGV); + +exec("server/sws $port"); diff --git a/Build/source/libs/curl/tests/httpsserver.pl b/Build/source/libs/curl/tests/httpsserver.pl new file mode 100644 index 00000000000..7c93f075eba --- /dev/null +++ b/Build/source/libs/curl/tests/httpsserver.pl @@ -0,0 +1,51 @@ +#!/usr/bin/perl +# +# $Id: httpsserver.pl,v 1.2 2001/09/17 08:41:01 bagder Exp $ +# This is the HTTPS server designed for the curl test suite. +# +# It is actually just a layer that runs stunnel properly. + +use strict; + +use stunnel; + +my $stunnel = &checkstunnel; + +if(!$stunnel) { + exit; +} + +# +# -p pemfile +# -P pid dir +# -d listen port +# -r target port + +my $verbose=0; # set to 1 for debugging + +my $port = 8433; # just a default +my $http = 8999; # http-port +do { + if($ARGV[0] eq "-v") { + $verbose=1; + } + if($ARGV[0] eq "-w") { + return 0; # return success, means we have stunnel working! + } + elsif($ARGV[0] eq "-r") { + $http=$ARGV[1]; + shift @ARGV; + } + elsif($ARGV[0] =~ /^(\d+)$/) { + $port = $1; + } +} while(shift @ARGV); + +my $path = `pwd`; +chomp $path; +my $cmd = "$stunnel -p $path/stunnel.pem -P $path/.https.pid -d $port -r $http"; + +if($verbose) { + print "$cmd\n"; +} +system($cmd); diff --git a/Build/source/libs/curl/tests/memanalyze.pl b/Build/source/libs/curl/tests/memanalyze.pl new file mode 100644 index 00000000000..f16f2d8a9e7 --- /dev/null +++ b/Build/source/libs/curl/tests/memanalyze.pl @@ -0,0 +1,269 @@ +#!/usr/bin/perl +# +# Example input: +# +# MEM mprintf.c:1094 malloc(32) = e5718 +# MEM mprintf.c:1103 realloc(e5718, 64) = e6118 +# MEM sendf.c:232 free(f6520) + +do { + if($ARGV[0] eq "-v") { + $verbose=1; + } + elsif($ARGV[0] eq "-t") { + $trace=1; + } +} while (shift @ARGV); + +my $maxmem; + +sub newtotal { + my ($newtot)=@_; + # count a max here + + if($newtot > $maxmem) { + $maxmem= $newtot; + } +} + +while(<STDIN>) { + chomp $_; + $line = $_; + + if($line =~ /^MEM ([^:]*):(\d*) (.*)/) { + # generic match for the filename+linenumber + $source = $1; + $linenum = $2; + $function = $3; + + if($function =~ /free\(0x([0-9a-f]*)/) { + $addr = $1; + if($sizeataddr{$addr} == 0) { + print "FREE ERROR: No memory allocated: $line\n"; + } + elsif(-1 == $sizeataddr{$addr}) { + print "FREE ERROR: Memory freed twice: $line\n"; + print "FREE ERROR: Previously freed at: ".$getmem{$addr}."\n"; + } + else { + $totalmem -= $sizeataddr{$addr}; + if($trace) { + print "FREE: malloc at ".$getmem{$addr}." is freed again at $source:$linenum\n"; + printf("FREE: %d bytes freed, left allocated: $totalmem bytes\n", $sizeataddr{$addr}); + } + + newtotal($totalmem); + $frees++; + + $sizeataddr{$addr}=-1; # set -1 to mark as freed + $getmem{$addr}="$source:$linenum"; + + } + } + elsif($function =~ /malloc\((\d*)\) = 0x([0-9a-f]*)/) { + $size = $1; + $addr = $2; + + if($sizeataddr{$addr}>0) { + # this means weeeeeirdo + print "Fucked up debug compile, rebuild curl now\n"; + } + + $sizeataddr{$addr}=$size; + $totalmem += $size; + + if($trace) { + print "MALLOC: malloc($size) at $source:$linenum", + " makes totally $totalmem bytes\n"; + } + + newtotal($totalmem); + $mallocs++; + + $getmem{$addr}="$source:$linenum"; + } + elsif($function =~ /realloc\(0x([0-9a-f]*), (\d*)\) = 0x([0-9a-f]*)/) { + $oldaddr = $1; + $newsize = $2; + $newaddr = $3; + + $totalmem -= $sizeataddr{$oldaddr}; + if($trace) { + printf("REALLOC: %d less bytes and ", $sizeataddr{$oldaddr}); + } + $sizeataddr{$oldaddr}=0; + + $totalmem += $newsize; + $sizeataddr{$newaddr}=$newsize; + + if($trace) { + printf("%d more bytes ($source:$linenum)\n", $newsize); + } + + newtotal($totalmem); + $reallocs++; + + $getmem{$oldaddr}=""; + $getmem{$newaddr}="$source:$linenum"; + } + elsif($function =~ /strdup\(0x([0-9a-f]*)\) \((\d*)\) = 0x([0-9a-f]*)/) { + # strdup(a5b50) (8) = df7c0 + + $dup = $1; + $size = $2; + $addr = $3; + $getmem{$addr}="$source:$linenum"; + $sizeataddr{$addr}=$size; + + $totalmem += $size; + + if($trace) { + printf("STRDUP: $size bytes at %s, makes totally: %d bytes\n", + $getmem{$addr}, $totalmem); + } + + newtotal($totalmem); + $strdups++; + } + else { + print "Not recognized input line: $function\n"; + } + } + # FD url.c:1282 socket() = 5 + elsif($_ =~ /^FD ([^:]*):(\d*) (.*)/) { + # generic match for the filename+linenumber + $source = $1; + $linenum = $2; + $function = $3; + + if($function =~ /socket\(\) = (\d*)/) { + $filedes{$1}=1; + $getfile{$1}="$source:$linenum"; + $openfile++; + } + elsif($function =~ /accept\(\) = (\d*)/) { + $filedes{$1}=1; + $getfile{$1}="$source:$linenum"; + $openfile++; + } + elsif($function =~ /sclose\((\d*)\)/) { + if($filedes{$1} != 1) { + print "Close without open: $line\n"; + } + else { + $filedes{$1}=0; # closed now + $openfile--; + } + } + } + # FILE url.c:1282 fopen("blabla") = 0x5ddd + elsif($_ =~ /^FILE ([^:]*):(\d*) (.*)/) { + # generic match for the filename+linenumber + $source = $1; + $linenum = $2; + $function = $3; + + if($function =~ /fopen\(\"([^\"]*)\"\) = (\(nil\)|0x([0-9a-f]*))/) { + if($2 eq "(nil)") { + ; + } + else { + $fopen{$3}=1; + $fopenfile{$3}="$source:$linenum"; + $fopens++; + } + } + # fclose(0x1026c8) + elsif($function =~ /fclose\(0x([0-9a-f]*)\)/) { + if(!$fopen{$1}) { + print "fclose() without fopen(): $line\n"; + } + else { + $fopen{$1}=0; + $fopens--; + } + } + } + # ADDR url.c:1282 getaddrinfo() = 0x5ddd + elsif($_ =~ /^ADDR ([^:]*):(\d*) (.*)/) { + # generic match for the filename+linenumber + $source = $1; + $linenum = $2; + $function = $3; + + if($function =~ /getaddrinfo\(\) = (\(nil\)|0x([0-9a-f]*))/) { + my $add = $2; + if($add eq "(nil)") { + ; + } + else { + $addrinfo{$add}=1; + $addrinfofile{$add}="$source:$linenum"; + $addrinfos++; + } + } + # fclose(0x1026c8) + elsif($function =~ /freeaddrinfo\(0x([0-9a-f]*)\)/) { + if(!$addrinfo{$1}) { + print "freeaddrinfo() without getaddrinfo(): $line\n"; + } + else { + $addrinfo{$1}=0; + $addrinfos--; + } + } + + + } + else { + print "Not recognized prefix line: $line\n"; + } +} + +if($totalmem) { + print "Leak detected: memory still allocated: $totalmem bytes\n"; + + for(keys %sizeataddr) { + $addr = $_; + $size = $sizeataddr{$addr}; + if($size > 0) { + print "At $addr, there's $size bytes.\n"; + print " allocated by ".$getmem{$addr}."\n"; + } + } +} + +if($openfile) { + for(keys %filedes) { + if($filedes{$_} == 1) { + print "Open file descriptor created at ".$getfile{$_}."\n"; + } + } +} + +if($fopens) { + print "Open FILE handles left at:\n"; + for(keys %fopen) { + if($fopen{$_} == 1) { + print "fopen() called at ".$fopenfile{$_}."\n"; + } + } +} + +if($addrinfos) { + print "IPv6-style name resolve data left at:\n"; + for(keys %addrinfofile) { + if($addrinfo{$_} == 1) { + print "getaddrinfo() called at ".$addrinfofile{$_}."\n"; + } + } +} + +if($verbose) { + print "Mallocs: $mallocs\n", + "Reallocs: $reallocs\n", + "Strdups: $strdups\n", + "Frees: $frees\n"; + + print "Maximum allocated: $maxmem\n"; +} diff --git a/Build/source/libs/curl/tests/runtests.pl b/Build/source/libs/curl/tests/runtests.pl new file mode 100644 index 00000000000..20bef5c68fb --- /dev/null +++ b/Build/source/libs/curl/tests/runtests.pl @@ -0,0 +1,973 @@ +#!/usr/bin/env perl +# $Id: runtests.pl,v 1.57 2002/03/01 09:20:03 bagder Exp $ +# +# Main curl test script, in perl to run on more platforms +# +####################################################################### +# These should be the only variables that might be needed to get edited: + +use strict; + +@INC=(@INC, $ENV{'srcdir'}, "."); + +require "stunnel.pm"; # stunnel functions +require "getpart.pm"; # array functions + +my $srcdir = $ENV{'srcdir'} || '.'; +my $HOSTIP="127.0.0.1"; +my $HOSTPORT=8999; # bad name, but this is the HTTP server port +my $HTTPSPORT=8433; # this is the HTTPS server port +my $FTPPORT=8921; # this is the FTP server port +my $FTPSPORT=8821; # this is the FTPS server port +my $CURL="../src/curl"; # what curl executable to run on the tests +my $LOGDIR="log"; +my $TESTDIR="data"; +my $SERVERIN="$LOGDIR/server.input"; # what curl sent the server +my $CURLLOG="$LOGDIR/curl.log"; # all command lines run +my $FTPDCMD="$LOGDIR/ftpserver.cmd"; # copy ftp server instructions here + +# Normally, all test cases should be run, but at times it is handy to +# simply run a particular one: +my $TESTCASES="all"; + +# To run specific test cases, set them like: +# $TESTCASES="1 2 3 7 8"; + +####################################################################### +# No variables below this point should need to be modified +# + +my $HTTPPIDFILE=".http.pid"; +my $HTTPSPIDFILE=".https.pid"; +my $FTPPIDFILE=".ftp.pid"; +my $FTPSPIDFILE=".ftps.pid"; + +# invoke perl like this: +my $perl="perl -I$srcdir"; + +# this gets set if curl is compiled with memory debugging: +my $memory_debug=0; + +# name of the file that the memory debugging creates: +my $memdump="memdump"; + +# the path to the script that analyzes the memory debug output file: +my $memanalyze="./memanalyze.pl"; + +my $checkstunnel = &checkstunnel; + +my $ssl_version; # set if libcurl is built with SSL support + +####################################################################### +# variables the command line options may set +# + +my $short; +my $verbose; +my $debugprotocol; +my $anyway; +my $gdbthis; # run test case with gdb debugger +my $keepoutfiles; # keep stdout and stderr files after tests +my $listonly; # only list the tests + +my $pwd; # current working directory + +chomp($pwd = `pwd`); + +# enable memory debugging if curl is compiled with it +$ENV{'CURL_MEMDEBUG'} = 1; + +####################################################################### +# Return the pid of the server as found in the given pid file +# +sub serverpid { + my $PIDFILE = $_[0]; + open(PFILE, "<$PIDFILE"); + my $PID=<PFILE>; + close(PFILE); + return $PID; +} + +####################################################################### +# stop the given test server +# +sub stopserver { + my $PIDFILE = $_[0]; + # check for pidfile + if ( -f $PIDFILE ) { + my $PID = serverpid($PIDFILE); + + my $res = kill (9, $PID); # die! + unlink $PIDFILE; # server is killed + + if($res && $verbose) { + print "Test server pid $PID signalled to die\n"; + } + elsif($verbose) { + print "Test server pid $PID didn't exist\n"; + } + } +} + +####################################################################### +# check the given test server if it is still alive +# +sub checkserver { + my ($pidfile)=@_; + my $RUNNING=0; + my $PID=0; + + # check for pidfile + if ( -f $pidfile ) { + $PID=serverpid($pidfile); + if ($PID ne "" && kill(0, $PID)) { + $RUNNING=1; + } + else { + $RUNNING=0; + $PID = -$PID; # negative means dead process + } + } + else { + $RUNNING=0; + } + return $PID +} + +####################################################################### +# start the http server, or if it already runs, verify that it is our +# test server on the test-port! +# +sub runhttpserver { + my $verbose = $_[0]; + my $RUNNING; + my $pid; + + $pid = checkserver ($HTTPPIDFILE); + + # verify if our/any server is running on this port + my $data=`$CURL --silent -i $HOSTIP:$HOSTPORT/verifiedserver`; + + if ( $data =~ /WE ROOLZ(: |)(\d*)/ ) { + if($2) { + $pid = 0+$2; + } + + if(!$pid) { + print "Test server already running with unknown pid! Use it...\n"; + return; + } + + if($verbose) { + print "Test server already running with pid $pid, killing it...\n"; + } + } + elsif($data ne "") { + print "GOT: $data\n"; + print "An alien HTTP server is running on port $HOSTPORT\n", + "Edit runtests.pl to use another port and rerun the test script\n"; + exit; + } + else { + if($verbose) { + print "No server running, start it\n"; + } + } + + if($pid > 0) { + my $res = kill (9, $pid); # die! + if(!$res) { + print "Failed to kill our HTTP test server, do it manually and", + " restart the tests.\n"; + exit; + } + sleep(2); + } + + my $flag=$debugprotocol?"-v ":""; + my $cmd="$perl $srcdir/httpserver.pl $flag $HOSTPORT &"; + system($cmd); + if($verbose) { + print "CMD: $cmd\n"; + } + +} + +####################################################################### +# start the https server (or rather, tunnel) if needed +# +sub runhttpsserver { + my $verbose = $_[0]; + my $STATUS; + my $RUNNING; + my $PID=checkserver($HTTPSPIDFILE ); + + if($PID > 0) { + # kill previous stunnel! + if($verbose) { + print "kills off running stunnel at $PID\n"; + } + stopserver($HTTPSPIDFILE); + } + + my $flag=$debugprotocol?"-v ":""; + my $cmd="$perl $srcdir/httpsserver.pl $flag -r $HOSTPORT $HTTPSPORT &"; + system($cmd); + if($verbose) { + print "CMD: $cmd\n"; + } +} + +####################################################################### +# start the ftp server if needed +# +sub runftpserver { + my $verbose = $_[0]; + my $STATUS; + my $RUNNING; + # check for pidfile + my $pid = checkserver ($FTPPIDFILE ); + + if ($pid <= 0) { + my $flag=$debugprotocol?"-v ":""; + + # verify that our server is NOT running on this port: + my $data=`$CURL --silent -i ftp://$HOSTIP:$FTPPORT/verifiedserver`; + + if ( $data =~ /WE ROOLZ/ ) { + print "A previous FTP server session is already running and we ", + "can't kill it!\n"; + exit; + } + + my $cmd="$perl $srcdir/ftpserver.pl $flag $FTPPORT &"; + if($verbose) { + print "CMD: $cmd\n"; + } + system($cmd); + } + else { + if($verbose) { + print "ftpd ($pid) is already running\n"; + } + + # verify that our server is one one running on this port: + my $data=`$CURL --silent -i ftp://$HOSTIP:$FTPPORT/verifiedserver`; + + if ( $data !~ /WE ROOLZ/ ) { + print "Another FTP server is running on port $FTPPORT\n", + "Edit runtests.pl to use another FTP port and rerun the ", + "test script\n"; + exit; + } + + if($verbose) { + print "The running FTP server has been verified to be our server\n"; + } + } +} + +####################################################################### +# start the ftps server (or rather, tunnel) if needed +# +sub runftpsserver { + my $verbose = $_[0]; + my $STATUS; + my $RUNNING; + my $PID=checkserver($FTPSPIDFILE ); + + if($PID > 0) { + # kill previous stunnel! + if($verbose) { + print "kills off running stunnel at $PID\n"; + } + stopserver($FTPSPIDFILE); + } + + my $flag=$debugprotocol?"-v ":""; + my $cmd="$perl $srcdir/ftpsserver.pl $flag -r $FTPPORT $FTPSPORT &"; + system($cmd); + if($verbose) { + print "CMD: $cmd\n"; + } +} + +####################################################################### +# Remove all files in the specified directory +# +sub cleardir { + my $dir = $_[0]; + my $count; + my $file; + + # Get all files + opendir(DIR, $dir) || + return 0; # can't open dir + while($file = readdir(DIR)) { + if($file !~ /^\./) { + unlink("$dir/$file"); + $count++; + } + } + closedir DIR; + return $count; +} + +####################################################################### +# filter out the specified pattern from the given input file and store the +# results in the given output file +# +sub filteroff { + my $infile=$_[0]; + my $filter=$_[1]; + my $ofile=$_[2]; + + open(IN, "<$infile") + || return 1; + + open(OUT, ">$ofile") + || return 1; + + # print "FILTER: off $filter from $infile to $ofile\n"; + + while(<IN>) { + $_ =~ s/$filter//; + print OUT $_; + } + close(IN); + close(OUT); + return 0; +} + +####################################################################### +# compare test results with the expected output, we might filter off +# some pattern that is allowed to differ, output test results +# + +sub compare { + # filter off patterns _before_ this comparison! + my ($firstref, $secondref)=@_; + + my $result = compareparts($firstref, $secondref); + + if(!$short && $result) { + print showdiff($firstref, $secondref); + } + return $result; +} + +####################################################################### +# display information about curl and the host the test suite runs on +# +sub displaydata { + + unlink($memdump); # remove this if there was one left + + my $version=`$CURL -V`; + chomp $version; + + my $curl = $version; + + $curl =~ s/^(.*)(libcurl.*)/$1/g; + my $libcurl = $2; + + my $hostname=`hostname`; + my $hosttype=`uname -a`; + + print "********* System characteristics ******** \n", + "* $curl\n", + "* $libcurl\n", + "* Host: $hostname", + "* System: $hosttype"; + + if($libcurl =~ /SSL/i) { + $ssl_version=1; + } + + if( -r $memdump) { + # if this exists, curl was compiled with memory debugging + # enabled and we shall verify that no memory leaks exist + # after each and every test! + $memory_debug=1; + } + printf("* Memory debugging: %s\n", $memory_debug?"ON":"OFF"); + printf("* HTTPS server: %s\n", $checkstunnel?"ON":"OFF"); + printf("* FTPS server: %s\n", $checkstunnel?"ON":"OFF"); + printf("* libcurl SSL: %s\n", $ssl_version?"ON":"OFF"); + print "***************************************** \n"; +} + +####################################################################### +# Run a single specified test case +# + +sub singletest { + my $testnum=$_[0]; + + # load the test case file definition + if(loadtest("${TESTDIR}/test${testnum}")) { + if($verbose) { + # this is not a test + print "$testnum doesn't look like a test case!\n"; + } + return -1; + } + + # extract the reply data + my @reply = getpart("reply", "data"); + my @replycheck = getpart("reply", "datacheck"); + + if (@replycheck) { + # we use this file instead to check the final output against + @reply=@replycheck; + } + + # curl command to run + my @curlcmd= getpart("client", "command"); + + # this is the valid protocol blurb curl should generate + my @protocol= getpart("verify", "protocol"); + + # redirected stdout/stderr to these files + $STDOUT="$LOGDIR/stdout$testnum"; + $STDERR="$LOGDIR/stderr$testnum"; + + # if this section exists, we verify that the stdout contained this: + my @validstdout = getpart("verify", "stdout"); + + # if this section exists, we verify upload + my @upload = getpart("verify", "upload"); + + # if this section exists, it is FTP server instructions: + my @ftpservercmd = getpart("server", "instruction"); + + my $CURLOUT="$LOGDIR/curl$testnum.out"; # curl output if not stdout + + # name of the test + my @testname= getpart("client", "name"); + + print "test $testnum..."; + if(!$short) { + my $name = $testname[0]; + $name =~ s/\n//g; + print "[$name]\n"; + } + + if($listonly) { + return 0; # look successful + } + + # remove previous server output logfile + unlink($SERVERIN); + + if(@ftpservercmd) { + # write the instructions to file + writearray($FTPDCMD, \@ftpservercmd); + } + + # get the command line options to use + my ($cmd, @blaha)= getpart("client", "command"); + + # make some nice replace operations + $cmd =~ s/\n//g; # no newlines please + $cmd =~ s/%HOSTIP/$HOSTIP/g; + $cmd =~ s/%HOSTPORT/$HOSTPORT/g; + $cmd =~ s/%HTTPSPORT/$HTTPSPORT/g; + $cmd =~ s/%FTPPORT/$FTPPORT/g; + $cmd =~ s/%FTPSPORT/$FTPSPORT/g; + $cmd =~ s/%SRCDIR/$srcdir/g; + $cmd =~ s/%PWD/$pwd/g; + + #$cmd =~ s/%HOSTNAME/$HOSTNAME/g; + + if($memory_debug) { + unlink($memdump); + } + + my @inputfile=getpart("client", "file"); + if(@inputfile) { + # we need to generate a file before this test is invoked + my %hash = getpartattr("client", "file"); + + my $filename=$hash{'name'}; + if(!$filename) { + print "ERROR: section client=>file has no name attribute!\n"; + exit; + } + writearray($filename, \@inputfile); + } + + my %cmdhash = getpartattr("client", "command"); + + my $out=""; + + if($cmdhash{'option'} eq "no-output") { + #print "*** We don't slap on --output\n"; + } + else { + if (!@validstdout) { + $out="--output $CURLOUT "; + } + } + + # run curl, add -v for debug information output + my $cmdargs="$out--include -v $cmd"; + + my @stdintest = getpart("client", "stdin"); + + if(@stdintest) { + my $stdinfile="$LOGDIR/stdin-for-$testnum"; + writearray($stdinfile, \@stdintest); + + $cmdargs .= " <$stdinfile"; + } + my $CMDLINE="$CURL $cmdargs >$STDOUT 2>$STDERR"; + + if($verbose) { + print "$CMDLINE\n"; + } + + print CMDLOG "$CMDLINE\n"; + + my $res; + # run the command line we built + if($gdbthis) { + open(GDBCMD, ">log/gdbcmd"); + print GDBCMD "set args $cmdargs\n"; + print GDBCMD "show args\n"; + close(GDBCMD); + system("gdb $CURL -x log/gdbcmd"); + $res =0; # makes it always continue after a debugged run + } + else { + $res = system("$CMDLINE"); + $res /= 256; + } + + # remove the special FTP command file after each test! + unlink($FTPDCMD); + + my @err = getpart("verify", "errorcode"); + my $errorcode = $err[0]; + + if($errorcode || $res) { + if($errorcode == $res) { + if(!$short) { + print " error OK"; + } + } + else { + if(!$short) { + print "curl returned $res, ".(0+$errorcode)." was expected\n"; + } + print " error FAILED\n"; + return 1; + } + } + + if (@validstdout) { + # verify redirected stdout + my @actual = loadarray($STDOUT); + + $res = compare(\@actual, \@validstdout); + if($res) { + print " stdout FAILED\n"; + return 1; + } + if(!$short) { + print " stdout OK"; + } + } + + my %replyattr = getpartattr("reply", "data"); + if(!$replyattr{'nocheck'} && + @reply) { + # verify the received data + my @out = loadarray($CURLOUT); + $res = compare(\@out, \@reply); + if ($res) { + print " data FAILED\n"; + return 1; + } + if(!$short) { + print " data OK"; + } + } + + if(@upload) { + # verify uploaded data + my @out = loadarray("$LOGDIR/upload.$testnum"); + $res = compare(\@out, \@upload); + if ($res) { + print " upload FAILED\n"; + return 1; + } + if(!$short) { + print " upload OK"; + } + } + + if(@protocol) { + # verify the sent request + my @out = loadarray($SERVERIN); + + # what to cut off from the live protocol sent by curl + my @strip = getpart("verify", "strip"); + + my @protstrip=@protocol; + + # check if there's any attributes on the verify/protocol section + my %hash = getpartattr("verify", "protocol"); + + if($hash{'nonewline'}) { + # Yes, we must cut off the final newline from the final line + # of the protocol data + chomp($protstrip[$#protstrip]); + } + + for(@strip) { + # strip all patterns from both arrays + @out = striparray( $_, \@out); + @protstrip= striparray( $_, \@protstrip); + } + + $res = compare(\@out, \@protstrip); + if($res) { + print " protocol FAILED\n"; + return 1; + } + if(!$short) { + print " protocol OK"; + } + } + + my @outfile=getpart("verify", "file"); + if(@outfile) { + # we're supposed to verify a dynamicly generated file! + my %hash = getpartattr("verify", "file"); + + my $filename=$hash{'name'}; + if(!$filename) { + print "ERROR: section verify=>file has no name attribute!\n"; + exit; + } + my @generated=loadarray($filename); + + $res = compare(\@generated, \@outfile); + if($res) { + print " output FAILED\n"; + return 1; + } + if(!$short) { + print " output OK"; + } + } + + if(!$keepoutfiles) { + # remove the stdout and stderr files + unlink($STDOUT); + unlink($STDERR); + unlink($CURLOUT); # remove the downloaded results + + unlink("$LOGDIR/upload.$testnum"); # remove upload leftovers + } + + unlink($FTPDCMD); # remove the instructions for this test + + if($memory_debug) { + if(! -f $memdump) { + print "\n** ALERT! memory debuggin without any output file?\n"; + } + else { + my @memdata=`$memanalyze < $memdump`; + my $leak=0; + for(@memdata) { + if($_ ne "") { + # well it could be other memory problems as well, but + # we call it leak for short here + $leak=1; + } + } + if($leak) { + print "\n** MEMORY FAILURE\n"; + print @memdata; + return 1; + } + else { + if(!$short) { + print " memory OK"; + } + } + } + } + if($short) { + print "OK"; + } + print "\n"; + + return 0; +} + +my %run; + +############################################################################## +# This function makes sure the right set of server is running for the +# specified test case. This is a useful design when we run single tests as not +# all servers need to run then! + +sub serverfortest { + my ($testnum)=@_; + + if($testnum< 100) { + # 0 - 99 is for HTTP + if(!$run{'http'}) { + runhttpserver($verbose); + $run{'http'}=$HTTPPIDFILE; + } + } + elsif($testnum< 200) { + # 100 - 199 is for FTP + if(!$run{'ftp'}) { + runftpserver($verbose); + $run{'ftp'}=$FTPPIDFILE; + } + } + elsif($testnum< 300) { + # 200 - 299 is for FILE, no server! + $run{'file'}="moo"; + } + elsif($testnum< 400) { + # 300 - 399 is for HTTPS, two servers! + + if(!$checkstunnel || !$ssl_version) { + # we can't run https tests without stunnel + # or if libcurl is SSL-less + return 1; + } + + if(!$run{'http'}) { + runhttpserver($verbose); + $run{'http'}=$HTTPPIDFILE; + } + if(!$run{'https'}) { + runhttpsserver($verbose); + $run{'https'}=$HTTPSPIDFILE; + } + } + elsif($testnum< 500) { + # 400 - 499 is for FTPS, also two servers + + if(!$checkstunnel || !$ssl_version) { + # we can't run https tests without stunnel + # or if libcurl is SSL-less + return 1; + } + if(!$run{'ftp'}) { + runftpserver($verbose); + $run{'ftp'}=$FTPPIDFILE; + } + if(!$run{'ftps'}) { + runftpsserver($verbose); + $run{'ftps'}=$FTPSPIDFILE; + } + } + else { + print "Bad test number, no server available\n"; + return 100; + } + sleep 1; # give a second for the server(s) to startup + return 0; # ok +} + +####################################################################### +# Check options to this test program +# + +my $number=0; +my $fromnum=-1; +my @testthis; +do { + if ($ARGV[0] eq "-v") { + # verbose output + $verbose=1; + } + elsif ($ARGV[0] eq "-c") { + # use this path to curl instead of default + $CURL=$ARGV[1]; + shift @ARGV; + } + elsif ($ARGV[0] eq "-d") { + # have the servers display protocol output + $debugprotocol=1; + } + elsif ($ARGV[0] eq "-g") { + # run this test with gdb + $gdbthis=1; + } + elsif($ARGV[0] eq "-s") { + # short output + $short=1; + } + elsif($ARGV[0] eq "-a") { + # continue anyway, even if a test fail + $anyway=1; + } + elsif($ARGV[0] eq "-l") { + # lists the test case names only + $listonly=1; + } + elsif($ARGV[0] eq "-k") { + # keep stdout and stderr files after tests + $keepoutfiles=1; + } + elsif($ARGV[0] eq "-h") { + # show help text + print <<EOHELP +Usage: runtests.pl [options] + -a continue even if a test fails + -d display server debug info + -g run the test case with gdb + -h this help text + -k keep stdout and stderr files present after tests + -l list all test case names/descriptions + -s short output + -v verbose output + [num] like "5 6 9" or " 5 to 22 " to run those tests only +EOHELP + ; + exit; + } + elsif($ARGV[0] =~ /^(\d+)/) { + $number = $1; + if($fromnum >= 0) { + for($fromnum .. $number) { + push @testthis, $_; + } + $fromnum = -1; + } + else { + push @testthis, $1; + } + } + elsif($ARGV[0] =~ /^to$/i) { + $fromnum = $number+1; + } +} while(shift @ARGV); + +if($testthis[0] ne "") { + $TESTCASES=join(" ", @testthis); +} + +####################################################################### +# Output curl version and host info being tested +# + +if(!$listonly) { + displaydata(); +} + +####################################################################### +# clear and create logging directory: +# +cleardir($LOGDIR); +mkdir($LOGDIR, 0777); + +####################################################################### +# If 'all' tests are requested, find out all test numbers +# + +if ( $TESTCASES eq "all") { + # Get all commands and find out their test numbers + opendir(DIR, $TESTDIR) || die "can't opendir $TESTDIR: $!"; + my @cmds = grep { /^test([0-9]+)$/ && -f "$TESTDIR/$_" } readdir(DIR); + closedir DIR; + + $TESTCASES=""; # start with no test cases + + # cut off everything but the digits + for(@cmds) { + $_ =~ s/[a-z\/\.]*//g; + } + # the the numbers from low to high + for(sort { $a <=> $b } @cmds) { + $TESTCASES .= " $_"; + } +} + +####################################################################### +# Start the command line log +# +open(CMDLOG, ">$CURLLOG") || + print "can't log command lines to $CURLLOG\n"; + +####################################################################### +# The main test-loop +# + +my $failed; +my $testnum; +my $ok=0; +my $total=0; +my $skipped=0; + +foreach $testnum (split(" ", $TESTCASES)) { + + my $serverproblem = serverfortest($testnum); + + if($serverproblem) { + # there's a problem with the server, don't run + # this particular server, but count it as "skipped" + $skipped++; + next; + } + + my $error = singletest($testnum); + if(-1 != $error) { + # valid test case number + $total++; + } + if($error>0) { + $failed.= "$testnum "; + if(!$anyway) { + # a test failed, abort + print "\n - abort tests\n"; + last; + } + } + elsif(!$error) { + $ok++; + } + + # loop for next test +} + +####################################################################### +# Close command log +# +close(CMDLOG); + +####################################################################### +# Tests done, stop the servers +# + +for(keys %run) { + stopserver($run{$_}); # the pid file is in the hash table +} + +if($total) { + printf("$ok tests out of $total reported OK: %d%%\n", + $ok/$total*100); + + if($ok != $total) { + print "These test cases failed: $failed\n"; + } +} +else { + print "No tests were performed!\n"; +} +if($skipped) { + print "$skipped tests were skipped due to restraints\n"; +} +if($total && ($ok != $total)) { + exit 1; +} diff --git a/Build/source/libs/curl/tests/server/Makefile.am b/Build/source/libs/curl/tests/server/Makefile.am new file mode 100644 index 00000000000..cb98c20e102 --- /dev/null +++ b/Build/source/libs/curl/tests/server/Makefile.am @@ -0,0 +1,12 @@ +# sws is the Silly Web Server +# +# Original http server code contributed by Georg Horn. Heavily modified since. +# + +AUTOMAKE_OPTIONS = foreign + +noinst_PROGRAMS = sws + +sws_SOURCES= sws.c getpart.c + +extra_DIST = config.h.in diff --git a/Build/source/libs/curl/tests/server/Makefile.in b/Build/source/libs/curl/tests/server/Makefile.in new file mode 100644 index 00000000000..16db3025f9c --- /dev/null +++ b/Build/source/libs/curl/tests/server/Makefile.in @@ -0,0 +1,358 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# sws is the Silly Web Server +# +# Original http server code contributed by Georg Horn. Heavily modified since. +# + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IPV6_ENABLED = @IPV6_ENABLED@ +KRB4_ENABLED = @KRB4_ENABLED@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +NROFF = @NROFF@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENSSL_ENABLED = @OPENSSL_ENABLED@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKGADD_NAME = @PKGADD_NAME@ +PKGADD_PKG = @PKGADD_PKG@ +PKGADD_VENDOR = @PKGADD_VENDOR@ +RANDOM_FILE = @RANDOM_FILE@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VERSIONNUM = @VERSIONNUM@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +AUTOMAKE_OPTIONS = foreign + +noinst_PROGRAMS = sws + +sws_SOURCES = sws.c getpart.c + +extra_DIST = config.h.in +subdir = tests/server +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/lib/config.h \ + $(top_builddir)/src/config.h config.h +CONFIG_CLEAN_FILES = +noinst_PROGRAMS = sws$(EXEEXT) +PROGRAMS = $(noinst_PROGRAMS) + +am_sws_OBJECTS = sws.$(OBJEXT) getpart.$(OBJEXT) +sws_OBJECTS = $(am_sws_OBJECTS) +sws_LDADD = $(LDADD) +sws_DEPENDENCIES = +sws_LDFLAGS = + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/lib -I$(top_builddir)/src -I. +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/getpart.Po $(DEPDIR)/sws.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CFLAGS = @CFLAGS@ +DIST_SOURCES = $(sws_SOURCES) +DIST_COMMON = ./stamp-h3.in Makefile.am Makefile.in config.h.in +SOURCES = $(sws_SOURCES) + +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign tests/server/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +config.h: stamp-h3 + @if test ! -f $@; then \ + rm -f stamp-h3; \ + $(MAKE) stamp-h3; \ + else :; fi +stamp-h3: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h3 stamp-h3T + @echo timestamp > stamp-h3T 2> /dev/null + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=tests/server/config.h \ + $(SHELL) ./config.status + @mv stamp-h3T stamp-h3 +$(srcdir)/config.h.in: $(srcdir)/./stamp-h3.in + @if test ! -f $@; then \ + rm -f $(srcdir)/./stamp-h3.in; \ + $(MAKE) $(srcdir)/./stamp-h3.in; \ + else :; fi +$(srcdir)/./stamp-h3.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h + @rm -f $(srcdir)/./stamp-h3.in $(srcdir)/./stamp-h3.inT + @echo timestamp > $(srcdir)/./stamp-h3.inT 2> /dev/null + cd $(top_srcdir) && $(AUTOHEADER) + @mv $(srcdir)/./stamp-h3.inT $(srcdir)/./stamp-h3.in + +distclean-hdr: + -rm -f config.h + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +sws$(EXEEXT): $(sws_OBJECTS) $(sws_DEPENDENCIES) + @rm -f sws$(EXEEXT) + $(LINK) $(sws_LDFLAGS) $(sws_OBJECTS) $(sws_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getpart.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sws.Po@am__quote@ + +distclean-depend: + -rm -rf $(DEPDIR) + +.c.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + +.c.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `cygpath -w $<` + +.c.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +CCDEPMODE = @CCDEPMODE@ +uninstall-info-am: + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ + || etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) + +GTAGS: + here=`CDPATH=: && cd $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) config.h + +installdirs: + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +uninstall-am: uninstall-info-am + +.PHONY: GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS distclean distclean-compile \ + distclean-depend distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool tags uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Build/source/libs/curl/tests/server/config.h.in b/Build/source/libs/curl/tests/server/config.h.in new file mode 100644 index 00000000000..544ce104766 --- /dev/null +++ b/Build/source/libs/curl/tests/server/config.h.in @@ -0,0 +1,2 @@ + +#undef HAVE_SIGNAL diff --git a/Build/source/libs/curl/tests/server/getpart.c b/Build/source/libs/curl/tests/server/getpart.c new file mode 100644 index 00000000000..c2160a59785 --- /dev/null +++ b/Build/source/libs/curl/tests/server/getpart.c @@ -0,0 +1,153 @@ + +#include <stdio.h> +#include <ctype.h> +#include <string.h> +#include <stdlib.h> + +#define EAT_SPACE(ptr) while( ptr && *ptr && isspace(*ptr) ) ptr++ +#define EAT_WORD(ptr) while( ptr && *ptr && !isspace(*ptr) && ('>' != *ptr)) ptr++ + +#ifdef DEBUG +#define show(x) printf x +#else +#define show(x) +#endif + +static +char *appendstring(char *string, /* original string */ + char *buffer, /* to append */ + int *stringlen, int *stralloc) +{ + int len = strlen(buffer); + + if((len + *stringlen) > *stralloc) { + char *newptr= realloc(string, *stralloc*2); + if(newptr) { + string = newptr; + *stralloc *= 2; + } + else + return NULL; + } + strcpy(&string[*stringlen], buffer); + *stringlen += len; + + return string; +} + +char *spitout(FILE *stream, char *main, char *sub, int *size) +{ + char buffer[8192]; /* big enough for anything */ + char cmain[128]=""; /* current main section */ + char csub[128]=""; /* current sub section */ + char *ptr; + char *end; + char display = 0; + + char *string; + int stringlen=0; + int stralloc=256; + + enum { + STATE_OUTSIDE, + STATE_INMAIN, + STATE_INSUB, + STATE_ILLEGAL + } state = STATE_OUTSIDE; + + string = (char *)malloc(stralloc); + + while(fgets(buffer, sizeof(buffer), stream)) { + + ptr = buffer; + + /* pass white spaces */ + EAT_SPACE(ptr); + + if('<' != *ptr) { + if(display) { + show(("=> %s", buffer)); + string = appendstring(string, buffer, &stringlen, &stralloc); + show(("* %s\n", buffer)); + } + continue; + } + + ptr++; + EAT_SPACE(ptr); + + if('/' == *ptr) { + /* end of a section */ + ptr++; + EAT_SPACE(ptr); + + end = ptr; + EAT_WORD(end); + *end = 0; + + if((state == STATE_INSUB) && + !strcmp(csub, ptr)) { + /* this is the end of the currently read sub section */ + state--; + csub[0]=0; /* no sub anymore */ + display=0; + } + else if((state == STATE_INMAIN) && + !strcmp(cmain, ptr)) { + /* this is the end of the currently read main section */ + state--; + cmain[0]=0; /* no main anymore */ + display=0; + } + } + else if(!display) { + /* this is the beginning of a section */ + end = ptr; + EAT_WORD(end); + + *end = 0; + switch(state) { + case STATE_OUTSIDE: + strcpy(cmain, ptr); + state = STATE_INMAIN; + break; + case STATE_INMAIN: + strcpy(csub, ptr); + state = STATE_INSUB; + break; + } + } + if(display) { + string = appendstring(string, buffer, &stringlen, &stralloc); + show(("* %s\n", buffer)); + } + + if((STATE_INSUB == state) && + !strcmp(cmain, main) && + !strcmp(csub, sub)) { + show(("* (%d bytes) %s\n", stringlen, buffer)); + display = 1; /* start displaying */ + } + else { + show(("%d (%s/%s): %s\n", state, cmain, csub, buffer)); + display = 0; /* no display */ + } + } + + *size = stringlen; + return string; +} + +#ifdef TEST +int main(int argc, char **argv) +{ + if(argc< 3) { + printf("./moo main sub\n"); + } + else { + int size; + char *buffer = spitout(stdin, argv[1], argv[2], &size); + } + return 0; +} +#endif diff --git a/Build/source/libs/curl/tests/server/stamp-h3.in b/Build/source/libs/curl/tests/server/stamp-h3.in new file mode 100644 index 00000000000..9788f70238c --- /dev/null +++ b/Build/source/libs/curl/tests/server/stamp-h3.in @@ -0,0 +1 @@ +timestamp diff --git a/Build/source/libs/curl/tests/server/sws.c b/Build/source/libs/curl/tests/server/sws.c new file mode 100644 index 00000000000..01991bbc0dc --- /dev/null +++ b/Build/source/libs/curl/tests/server/sws.c @@ -0,0 +1,426 @@ +/* sws.c: simple (silly?) web server */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <signal.h> +#include <time.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <netdb.h> + +char *spitout(FILE *stream, char *main, char *sub, int *size); + +#define DEFAULT_PORT 8999 + +#ifndef DEFAULT_LOGFILE +#define DEFAULT_LOGFILE "log/sws.log" +#endif + +#define DOCBUFSIZE 4 +#define BUFFERSIZE (DOCBUFSIZE * 1024) + +#define VERSION "cURL test suite HTTP server/0.1" + +#define REQUEST_DUMP "log/server.input" + +#define TEST_DATA_PATH "data/test%d" + +static char *docfriends = "HTTP/1.1 200 Mighty fine indeed\r\n\r\nWE ROOLZ\r\n"; +static char *doc404 = "HTTP/1.1 404 Not Found\n" + "Server: " VERSION "\n" + "Connection: close\n" + "Content-Type: text/html\n" + "\n" + "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n" + "<HTML><HEAD>\n" + "<TITLE>404 Not Found</TITLE>\n" + "</HEAD><BODY>\n" + "<H1>Not Found</H1>\n" + "The requested URL was not found on this server.\n" + "<P><HR><ADDRESS>" VERSION "</ADDRESS>\n" "</BODY></HTML>\n"; + +static volatile int sigpipe, sigterm; +static FILE *logfp; + + +static void logmsg(const char *msg) +{ + time_t t = time(NULL); + struct tm *curr_time = localtime(&t); + char loctime[80]; + + strcpy(loctime, asctime(curr_time)); + loctime[strlen(loctime) - 1] = '\0'; + fprintf(logfp, "%s: pid %d: %s\n", loctime, getpid(), msg); +#ifdef DEBUG + fprintf(stderr, "%s: pid %d: %s\n", loctime, getpid(), msg); +#endif + fflush(logfp); +} + + +static void sigpipe_handler(int sig) +{ + sigpipe = 1; +} + + +static void sigterm_handler(int sig) +{ + char logbuf[100]; + snprintf(logbuf, 100, "Got signal %d, terminating", sig); + logmsg(logbuf); + sigterm = 1; +} + +int ProcessRequest(char *request) +{ + char *line=request; + unsigned long contentlength=0; + +#define END_OF_HEADERS "\r\n\r\n" + + char *end; + end = strstr(request, END_OF_HEADERS); + + if(!end) + /* we don't have a complete request yet! */ + return 0; + + /* **** Persistancy **** + * + * If the request is a HTTP/1.0 one, we close the connection unconditionally + * when we're done. + * + * If the request is a HTTP/1.1 one, we MUST check for a "Connection:" + * header that might say "close". If it does, we close a connection when + * this request is processed. Otherwise, we keep the connection alive for X + * seconds. + */ + + do { + if(!strncasecmp("Content-Length:", line, 15)) + contentlength = strtol(line+15, &line, 10); + + line = strchr(line, '\n'); + if(line) + line++; + } while(line); + + if(contentlength > 0 ) { + if(contentlength <= strlen(end+strlen(END_OF_HEADERS))) + return 1; /* done */ + else + return 0; /* not complete yet */ + } + return 1; /* done */ +} + +/* store the entire request in a file */ +void storerequest(char *reqbuf) +{ + FILE *dump; + + dump = fopen(REQUEST_DUMP, "ab"); /* b is for windows-preparing */ + if(dump) { + fwrite(reqbuf, 1, strlen(reqbuf), dump); + + fclose(dump); + } + +} + + +#define REQBUFSIZ 50000 +#define REQBUFSIZ_TXT "49999" + +/* very-big-path support */ +#define MAXDOCNAMELEN 40000 +#define MAXDOCNAMELEN_TXT "39999" + +#define REQUEST_KEYWORD_SIZE 256 +static int get_request(int sock, int *part) +{ + static char reqbuf[REQBUFSIZ], doc[MAXDOCNAMELEN]; + static char request[REQUEST_KEYWORD_SIZE]; + unsigned int offset = 0; + int prot_major, prot_minor; + char logbuf[256]; + + *part = 0; /* part zero equals none */ + + while (offset < REQBUFSIZ) { + int got = recv(sock, reqbuf + offset, REQBUFSIZ - offset, 0); + if (got <= 0) { + if (got < 0) { + perror("recv"); + return -1; + } + logmsg("Connection closed by client"); + return -1; + } + offset += got; + + reqbuf[offset] = 0; + + if(ProcessRequest(reqbuf)) + break; + } + + if (offset >= REQBUFSIZ) { + logmsg("Request buffer overflow, closing connection"); + return -1; + } + reqbuf[offset]=0; + + logmsg("Received a request"); + + /* dump the request to an external file */ + storerequest(reqbuf); + + if (sscanf(reqbuf, "%" REQBUFSIZ_TXT"s %" MAXDOCNAMELEN_TXT "s HTTP/%d.%d", + request, + doc, + &prot_major, + &prot_minor) == 4) { + char *ptr; + int test_no=0; + + /* find the last slash */ + ptr = strrchr(doc, '/'); + + /* get the number after it */ + if(ptr) { + + if((strlen(doc) + strlen(request)) < 200) + sprintf(logbuf, "Got request: %s %s HTTP/%d.%d", + request, doc, prot_major, prot_minor); + else + sprintf(logbuf, "Got a *HUGE* request HTTP/%d.%d", + prot_major, prot_minor); + logmsg(logbuf); + + if(!strncmp("/verifiedserver", ptr, 15)) { + logmsg("Are-we-friendly question received"); + return -2; + } + + ptr++; /* skip the slash */ + + test_no = strtol(ptr, &ptr, 10); + + if(test_no > 10000) { + *part = test_no % 10000; + test_no /= 10000; + } + + sprintf(logbuf, "Found test number %d in path", test_no); + logmsg(logbuf); + } + else { + + logmsg("Did not find test number in PATH"); + } + + return test_no; + } + + logmsg("Got illegal request"); + fprintf(stderr, "Got illegal request\n"); + return -1; +} + + +static int send_doc(int sock, int doc, int part_no) +{ + int written; + int count; + char *buffer; + char *ptr; + FILE *stream; + char *cmd=NULL; + int cmdsize; + + char filename[256]; + char partbuf[80]="data"; + + if(doc < 0) { + if(-2 == doc) + /* we got a "friends?" question, reply back that we sure are */ + buffer = docfriends; + else + buffer = doc404; + ptr = NULL; + stream=NULL; + + count = strlen(buffer); + } + else { + if(0 != part_no) { + sprintf(partbuf, "data%d", part_no); + } + + + sprintf(filename, TEST_DATA_PATH, doc); + + stream=fopen(filename, "rb"); + if(!stream) { + logmsg("Couldn't open test file"); + return 0; + } + else { + ptr = buffer = spitout(stream, "reply", partbuf, &count); + fclose(stream); + } + + /* re-open the same file again */ + stream=fopen(filename, "rb"); + if(!stream) { + logmsg("Couldn't open test file"); + return 0; + } + else { + /* get the custom server control "commands" */ + cmd = spitout(stream, "reply", "postcmd", &cmdsize); + fclose(stream); + } + } + + do { + written = send(sock, buffer, count, 0); + if (written < 0) { + return -1; + } + count -= written; + buffer += written; + } while(count>0); + + if(ptr) + free(ptr); + + if(cmdsize > 0 ) { + char command[32]; + int num; + char *ptr=cmd; + do { + if(2 == sscanf(ptr, "%31s %d", command, &num)) { + if(!strcmp("wait", command)) + sleep(num); /* wait this many seconds */ + else { + logmsg("Unknown command in reply command section"); + } + } + ptr = strchr(ptr, '\n'); + if(ptr) + ptr++; + else + ptr = NULL; + } while(ptr && *ptr); + } + if(cmd) + free(cmd); + + return 0; +} + +int main(int argc, char *argv[]) +{ + struct sockaddr_in me; + int sock, msgsock, flag; + unsigned short port = DEFAULT_PORT; + char *logfile = DEFAULT_LOGFILE; + int part_no; + FILE *pidfile; + + if(argc>1) + port = atoi(argv[1]); + + /* FIX: write our pid to a file name */ + + logfp = fopen(logfile, "a"); + if (!logfp) { + perror(logfile); + exit(1); + } + +#ifdef HAVE_SIGNAL + /* FIX: make a more portable signal handler */ + signal(SIGPIPE, sigpipe_handler); + signal(SIGINT, sigterm_handler); + signal(SIGTERM, sigterm_handler); + + siginterrupt(SIGPIPE, 1); + siginterrupt(SIGINT, 1); + siginterrupt(SIGTERM, 1); +#endif + + sock = socket(AF_INET, SOCK_STREAM, 0); + if (sock < 0) { + perror("opening stream socket"); + fprintf(logfp, "Error opening socket -- aborting\n"); + fclose(logfp); + exit(1); + } + + flag = 1; + if (setsockopt + (sock, SOL_SOCKET, SO_REUSEADDR, (const void *) &flag, + sizeof(int)) < 0) { + perror("setsockopt(SO_REUSEADDR)"); + } + + me.sin_family = AF_INET; + me.sin_addr.s_addr = INADDR_ANY; + me.sin_port = htons(port); + if (bind(sock, (struct sockaddr *) &me, sizeof me) < 0) { + perror("binding stream socket"); + fprintf(logfp, "Error binding socket -- aborting\n"); + fclose(logfp); + exit(1); + } + + pidfile = fopen(".http.pid", "w"); + if(pidfile) { + fprintf(pidfile, "%d\n", (int)getpid()); + fclose(pidfile); + } + else + fprintf(stderr, "Couldn't write pid file\n"); + + /* start accepting connections */ + listen(sock, 5); + + fprintf(stderr, "*** %s listening on port %u ***\n", VERSION, port); + + while (!sigterm) { + int doc; + + msgsock = accept(sock, NULL, NULL); + + if (msgsock == -1) { + if (sigterm) { + break; + } + /* perror("accept"); */ + continue; + } + + logmsg("New client connected"); + + doc = get_request(msgsock, &part_no); + send_doc(msgsock, doc, part_no); + + close(msgsock); + } + + close(sock); + fclose(logfp); + + return 0; +} + diff --git a/Build/source/libs/curl/tests/stunnel.pem b/Build/source/libs/curl/tests/stunnel.pem new file mode 100644 index 00000000000..2668a4bd12d --- /dev/null +++ b/Build/source/libs/curl/tests/stunnel.pem @@ -0,0 +1,31 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQDQPvaAU+Pdd5B0XlR71lDw0LyMridewzGaN6H3T+vRKYkvxyZw +nrxhYSLWn4g9wcu/EWcTN23A07Oa4HSZ/wHQ/yO+Yv01OmfGHylWZNN0eb/qemv8 +wp/bFRaubeuIGz9hl4r1HM5Mn3cNjhDjIjDqzGorObUItigCHY4ZDNHOOQIDAQAB +AoGAfK4V3ANeHEznuiR4JKTOVUBEg14JyFzJp/HDEVVSdSqPLoHn6+m+E/eaajGd +2ovbNwxuUD0Rgy+9Cu90IHdjV+8i7xo/ttnzg8UDUUhT0BMuOsbEPGGABqPxXEoM ++c58smG9r30K+5ToctRlsYuH4xQvHL3fc2DHRDEwPDD+KdkCQQD3kO9D6sV9/So3 +wWLamW0AFK/spK0i1MqSdPi/gnor37WNqOxBz2MVYDmTWeDWtq9HuG2QRKCNiqGB +tAUyKSVjAkEA11ccOxGleOM+scugobGkktnCniyMJSxQijMpIDmO/S0DBH5SiTee +BywwtcadjUWn4uQGJ0CQCJo2mjsmY13OswJBAKJgPJ7WWKyXJV6mh9kLMrQP3Yeg +RzMGUMuYzyKFSO6H74O3nSZZCQsXLwxXsiICdpra+3nZmVjc6aux0Iqi9DMCQQCh +DXaAux7t/c9q/CeEJy814YWL9TdPqggGhGLyxfmqYprKJowmMiGPrb40hXpaKUl6 +CR6NBt1ygZvq1+hLEuK/AkBYJ0ikl3YHkWqSFgiw/yDsVa3CDpChLGxjlheX5gop +LKrKE8RO3rtT3CdWyI/IBWPyc0h+qCTEqUdqKW1vRYeS +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIICcTCCAdqgAwIBAgIBADANBgkqhkiG9w0BAQQFADBzMQswCQYDVQQGEwJTRTEO +MAwGA1UECBMFU29sbmExDTALBgNVBAcTBE1vb28xDTALBgNVBAoTBEhheHgxDjAM +BgNVBAsTBUNvb2x4MRIwEAYDVQQDEwlzdG9yZWJyb3IxEjAQBgNVBAMTCWxvY2Fs +aG9zdDAeFw0wMTA0MjAxODI2MjhaFw0wMjA0MjAxODI2MjhaMHMxCzAJBgNVBAYT +AlNFMQ4wDAYDVQQIEwVTb2xuYTENMAsGA1UEBxMETW9vbzENMAsGA1UEChMESGF4 +eDEOMAwGA1UECxMFQ29vbHgxEjAQBgNVBAMTCXN0b3JlYnJvcjESMBAGA1UEAxMJ +bG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQPvaAU+Pdd5B0 +XlR71lDw0LyMridewzGaN6H3T+vRKYkvxyZwnrxhYSLWn4g9wcu/EWcTN23A07Oa +4HSZ/wHQ/yO+Yv01OmfGHylWZNN0eb/qemv8wp/bFRaubeuIGz9hl4r1HM5Mn3cN +jhDjIjDqzGorObUItigCHY4ZDNHOOQIDAQABoxUwEzARBglghkgBhvhCAQEEBAMC +BkAwDQYJKoZIhvcNAQEEBQADgYEASTzH6Af6xmkpPGAdL/lecdkeuChfgb7tVkOE +rTzgxE5fVcW9NK79HXZ3OND2uHyu9WMieIr7QKyzfK1uskxQcY6mPApn/Z+yD1vn +TYBuyP8I+khaLKA69QzVv+5yVBR0xlAaXGwTKxNzBTXznSmshgvYt5nsmcMw2Xfg +CMkSsOU= +-----END CERTIFICATE----- diff --git a/Build/source/libs/curl/tests/stunnel.pm b/Build/source/libs/curl/tests/stunnel.pm new file mode 100644 index 00000000000..d1b9d9fd9bf --- /dev/null +++ b/Build/source/libs/curl/tests/stunnel.pm @@ -0,0 +1,11 @@ +sub checkstunnel { + my @paths=("/usr/sbin", "/usr/local/sbin", "/sbin", "/usr/bin", + "/usr/local/bin"); + for(@paths) { + if( -x "$_/stunnel") { + return "$_/stunnel"; + } + } +} + +1; |