Commit Graph

26 Commits

Author SHA1 Message Date
Malte S. Stretz
479df8ecec Add test case for unavailable upstream 2022-02-13 21:46:03 +00:00
Aaron M. Ucko
207f790314 Fix FTBFS on hurd-i386: run_tests.sh duplicates build path. 2021-09-22 13:05:12 +01:00
rofl0r
54ae2d2a19 tests: add some AddHeader directives 2020-09-16 02:39:09 +01:00
rofl0r
7014d050d9 run_tests: make travis happy, use signal nr instead of name 2020-09-14 17:02:36 +01:00
rofl0r
17e19a67cf run_tests: do some more extensive testing
1) force a config reload after some initial tests.
   this will allow to identify memleaks using the valgrind test,
   as this will free all structures allocated for the config, and
   recreate them.
2) test ErrorFile directive by adding several of them.
   this should help catch regressions such as the one fixed in
   4847d8cdb3.
   it will also test memleaks in the related code paths.
3) test some scenarios that should produce errors and use the
   configured ErrorFile directives.
2020-09-13 01:09:21 +01:00
rofl0r
0d26fab317 run_tests.sh: print more diagnostic if killing tp fails 2020-09-06 17:48:14 +01:00
rofl0r
55208eb2f6 run_tests.sh: print pid if killing tp fails 2020-09-06 17:20:06 +01:00
rofl0r
b935dc85c3 simplify codebase by using one thread/conn, instead of preforked procs
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.
2019-12-21 00:43:45 +00:00
Jordi Mallach
7da3e4854c [BB#83] Use output of id instead of $USER 2010-04-21 21:02:57 +05:30
Michael Adam
cfa5792880 change the default log file location to "@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-03-02 23:39:21 +01:00
Michael Adam
3f1632603c tests: fix bug #80: keep track of errors in return codes
Michael
2010-02-23 00:18:29 +01:00
Michael Adam
7c15563430 tests: fix a typo in run_tests.sh 2010-02-23 00:17:21 +01:00
Michael Adam
d133eee36b tests: Fix bug #79. Finish "make test" without waiting for user input.
Old behaviour is preserved by passing in the environment variable
TINYPROXY_TESTS_WAIT=yes.

Michael
2010-02-22 23:12:51 +01:00
Michael Adam
7b8171fe01 tests: add commented out DisableViaHeader to tinyproxy conf in the tests. 2009-10-11 02:00:44 +02:00
Michael Adam
4668ae9e06 tests: set XTinyproxy Yes in the test setup
Michael
2009-09-27 12:52:39 +02:00
Michael Adam
0539be08b4 tests: fix infinite loop "waiting for 3 seconds..." in bash
Michael
2009-09-27 12:07:54 +02:00
Michael Adam
92c64cabc1 tests: use the debug.html file as DefaultErrorFile in the tests.
Michael
2009-09-21 09:42:47 +02:00
Michael Adam
f648d82edc tests: prepare tinyproxy for filter file usage in tests.
Michael
2009-09-15 02:25:10 +02:00
Michael Adam
f1a586648e tests: test retreival of stathost page.
Michael
2009-09-13 01:52:26 +02:00
Michael Adam
282ec11792 tests: set stathost to 127.0.0.127 in the testsuite
Michael
2009-09-13 01:52:11 +02:00
Michael Adam
5a96099cde tests: print IP and port after firing up tinyproxy and webserver
Michael
2009-09-13 01:31:05 +02:00
Michael Adam
71f3721bb1 tests: fix run_tests.sh after templates have moved.
Michael
2009-09-13 01:09:44 +02:00
Michael Adam
26aa8648b6 tests: add support for running tinyproxy under valgrind.
When you want to run tinyproxy under valgrind,
set the environment variable VALGRIND to some useful
valgrind command line.

Michael
2009-09-11 01:02:52 +02:00
Michael Adam
408c781d14 tests: restructure run_tests into functions to make main flow clearer.
Also prepare for modularizing the testsuite.

Michael
2009-09-10 12:53:25 +02:00
Michael Adam
dfa1763af9 tests:run_tests: add complete GPL boilerplate.
Michael
2009-09-10 12:09:12 +02:00
Michael Adam
526c70f687 tests: this is a first draft of the beginning of a test suite.
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-10 01:20:59 +02:00