On Thu, Jan 14, 2021 at 12:13:17PM +0100, William Dauchy wrote:
> On Thu, Jan 14, 2021 at 11:21 AM William Lallemand
> <[email protected]> wrote:
> > VTest is not really suited to test the process management, for example
> > the tests doing a reload have timing issues because VTest is not able to
> > know when HAProxy is ready.
> >
> > Could you share what you tried to do? I'm not sure what is the problem
> > you are mentionning with -expectexit.
> 
> here it is:
> 
> varnishtest "strict-limits test"
> 
> #REQUIRE_VERSION=2.1
> 
> feature ignore_unknown_macro
> 
> server s1 {
> rxreq
> txresp
> } -repeat 2 -start
> 
> haproxy h1 -conf {
>     global
>         strict-limits
>         maxconn 1000000
> 
>     defaults
> mode http
> timeout connect 1s
> timeout client  1s
> timeout server  1s
> 
>     frontend fe
> bind "fd@${fe}"
> default_backend be
> 
>     backend be
> server s1 ${s1_addr}:${s1_port}
> } -start -expectexit 42
> 
> # give it some time to start and detect failure
> shell {
>     sleep 1
> }
> 
> client c1 -connect ${h1_fe_sock} {
>     txreq -url "/"
> } -run
> 
> - first, the sleep 1 really depends of the process init time, like you
> mentioned in your previous message, it is not possible to detect when
> process should be ready. So it remains very ugly.
> - the client triggers the `wait4` which is correctly ending with this error:
> *    h1    Expected exit: 0x2a signal: 0 core: 0
> ---- h1    Bad exit status: 0x0100 exit 0x1 signal 0 core 0
> 
> - if I switch to no strict-limits, the process won't exit by itself;
> it does not trigger the `wait4` error, quite unclear why for now.

If I remember correctly the wait() is only done after a timeout of 10
seconds letting VTest run even if HAProxy exit immediatly. So I presume
HAProxy is still present as a zombie process during this time.
I don't know why it's done this way but this is a common problem I
have when starting VTest with an invalid haproxy configuration.

-- 
William Lallemand

Reply via email to