summaryrefslogtreecommitdiffhomepage
path: root/tests
AgeCommit message (Collapse)Author
2019-12-21simplify codebase by using one thread/conn, instead of preforked procsrofl0r
the existing codebase used an elaborate and complex approach for its parallelism: 5 different config file options, namely - MaxClients - MinSpareServers - MaxSpareServers - StartServers - MaxRequestsPerChild were used to steer how (and how many) parallel processes tinyproxy would spin up at start, how many processes at each point needed to be idle, etc. it seems all preforked processes would listen on the server port and compete with each other about who would get assigned the new incoming connections. since some data needs to be shared across those processes, a half- baked "shared memory" implementation was provided for this purpose. that implementation used to use files in the filesystem, and since it had a big FIXME comment, the author was well aware of how hackish that approach was. this entire complexity is now removed. the main thread enters a loop which polls on the listening fds, then spins up a new thread per connection, until the maximum number of connections (MaxClients) is hit. this is the only of the 5 config options left after this cleanup. since threads share the same address space, the code necessary for shared memory access has been removed. this means that the other 4 mentioned config option will now produce a parse error, when encountered. currently each thread uses a hardcoded default of 256KB per thread for the thread stack size, which is quite lavish and should be sufficient for even the worst C libraries, but people may want to tweak this value to the bare minimum, thus we may provide a new config option for this purpose in the future. i suspect that on heavily optimized C libraries such a musl, a stack size of 8-16 KB per thread could be sufficient. since the existing list implementation in vector.c did not provide a way to remove a single item from an existing list, i added my own list implementation from my libulz library which offers this functionality, rather than trying to add an ad-hoc, and perhaps buggy implementation to the vector_t list code. the sblist code is contained in an 80 line C file and as simple as it can get, while offering good performance and is proven bugfree due to years of use in other projects.
2010-04-21[BB#83] Use output of id instead of $USERJordi Mallach
2010-03-02change the default log file location to ↵Michael Adam
"@LOCALSTATEDIR@/log/tinyproxy/tinyproxy.log" i.e. add a tinyproxy subdirectory. This is meant to ease running tinyproxy as non-root user the subdirectory can be used to give the tinyproxy user write permission. Michael
2010-02-23tests: fix bug #80: keep track of errors in return codesMichael Adam
Michael
2010-02-23tests: fix a typo in run_tests.shMichael Adam
2010-02-22tests: Fix bug #79. Finish "make test" without waiting for user input.Michael Adam
Old behaviour is preserved by passing in the environment variable TINYPROXY_TESTS_WAIT=yes. Michael
2009-10-12tests:webclient: add option to send a request entity (body)Michael Adam
2009-10-11tests: add commented out DisableViaHeader to tinyproxy conf in the tests.Michael Adam
2009-10-10tests:webserver: correctly answer http/0.9 requests by sending no headersMichael Adam
Michael
2009-09-27tests: set XTinyproxy Yes in the test setupMichael Adam
Michael
2009-09-27tests: fix infinite loop "waiting for 3 seconds..." in bashMichael Adam
Michael
2009-09-27tests:webclient: allow HTTP/1.0 requests with methods other than GETMichael Adam
Michael
2009-09-21tests: use the debug.html file as DefaultErrorFile in the tests.Michael Adam
Michael
2009-09-20tests:webclient: fix default version (string, not number...)Michael Adam
Michael
2009-09-17tests:webclient: add copyright notice to the pod documentation.Michael Adam
Michael
2009-09-17tests:webserver: Add copyright notice to the pod documentation.Michael Adam
Michael
2009-09-17tests:webclient: reduce duplication.Michael Adam
Michael
2009-09-16tests:webclient: add a --dry-run mode that prints the request to stdoutMichael Adam
and does not connect to the server at all. Michael
2009-09-16tests:webclient: extend webclient to support HTTP/0.9, 1.0 and 1.1 requests.Michael Adam
Enable spcifying HTTP protocol version on command line ( --http-version). Enable specifying method (GET, CONNECT, ...) on the command line (--method). Add POD documentation. Use pod2usage() to print help message. Michael
2009-09-16tests: add Makefile.am to tests/ and tests/scripts dir (for packaging)Michael Adam
Michael
2009-09-15tests: prepare tinyproxy for filter file usage in tests.Michael Adam
Michael
2009-09-14tests:webserver: record the value of the server header field in a variable.Michael Adam
Michael
2009-09-14tests:webclient: add User-Agent header to request.Michael Adam
Michael
2009-09-14tests:webserver: add handing of bad request error.Michael Adam
Michael
2009-09-14tests:webserver: add parsing of requestMichael Adam
Michael
2009-09-14tests:webserver: move parsing of request to its own function.Michael Adam
(Prepare for really parsing the request...) Michael
2009-09-13tests: test retreival of stathost page.Michael Adam
Michael
2009-09-13tests: set stathost to 127.0.0.127 in the testsuiteMichael Adam
Michael
2009-09-13tests: print IP and port after firing up tinyproxy and webserverMichael Adam
Michael
2009-09-13tests:webserver: be more rfc 1945 compliant in the server-header.Michael Adam
Michael
2009-09-13tests: fix run_tests.sh after templates have moved.Michael Adam
Michael
2009-09-11tests: add a script wrapper to run tinyproxy under valgrind in the tests.Michael Adam
This runs valgrind with the -q switch - i.e. the log file tests/env/var/log/valgrind.log will only contain anything when there were valgrind errors. (Memory leaks...) Michael
2009-09-11tests: add support for running tinyproxy under valgrind.Michael Adam
When you want to run tinyproxy under valgrind, set the environment variable VALGRIND to some useful valgrind command line. Michael
2009-09-10tests: restructure run_tests into functions to make main flow clearer.Michael Adam
Also prepare for modularizing the testsuite. Michael
2009-09-10tests:run_tests: add complete GPL boilerplate.Michael Adam
Michael
2009-09-10tests:webclient: add complete GPL boilerplate.Michael Adam
Michael
2009-09-10tests/webserver: add complete GPL boilerplate.Michael Adam
Michael
2009-09-10tests:webserver: make pid-file, log-dir and doc-root reside in /tmp by defaultMichael Adam
So simply starting the server will work. Michael
2009-09-10tests/webserver: rework locking of pid file.Michael Adam
Michael
2009-09-10tests:webserver: reopen STDOUT/STDERR after locking pid file.Michael Adam
Michael
2009-09-10tests: this is a first draft of the beginning of a test suite.Michael Adam
It provisions a test envirnonment, fires up the perl web server and tinyproxy and currently makes one direct request to the web server and one request through tinyproxy. This will be modularized and extended in the sequel. Michael
2009-09-10tests: add a simple web client written in perl.Michael Adam
This should be one of the test tools for writing our testsuite. This can be used to make direct connects to web servers like so: webclient.pl server_ip:port /path/file.html and to make requestis via a proxy like this: webclient.pl proxy_ip:port http://webserver:port/path/file.html Michael
2009-09-10tests: add a simple webserver written in perl.Michael Adam
This should be the web server to test against in the upcoming selftest suite. This web server will evolve as the test suite grows. Currently, it just returns a web site quoting the request and a fortune (if fortune is installed...) for whatever request it gets. The option to provide a document root is already present. Michael