Hi Dridi,

thank you for your quick answer.

> Nice to see some varnishtest usage!

We do love varnishtest :-)

> What you can do instead is this:
>
>     if ( bereq.backend == d1.backend() ) {
>         ...
>     }

>
> It will work depending on the semantics of the VMOD object. For
> objects defined in VMOD directors, it should work with all of them
> except the hash director. It appears to fail in Varnish 4.1.3 on my
> system. Please check with the latest 4.1 and open a bug if that's
> still the case. It works on the master branch, I haven't tried the 5.0
> release.

We are testing against "varnishd (varnish-4.1.4 revision 4529ff7)" from "https://repo.varnish-cache.org/ubuntu/"; and I adapted the test to use "d1.backend()"

------------------------------------------------------------------------------------------------------

varnishtest "Test backends and directors"

server s1 {
  rxreq
  txresp -status 200
} -start


varnish v1 -vcl {
  import std;
  import directors;
  backend b1 {
    .host = "${s1_addr}";
    .port = "${s1_port}";
  }

  sub vcl_init {
    new d1 = directors.round_robin();
    d1.add_backend(b1);
  }

  sub vcl_recv {
    set req.backend_hint = d1.backend();
  }

  sub vcl_backend_response {
    std.log("xxxxxxxx-vcl_backend_response-bereq: " + bereq.backend);
    std.log("xxxxxxxx-vcl_backend_response-beresp: " + beresp.backend);
    if ( bereq.backend == d1.backend() ) {
      set beresp.http.X-Backend-Response = "d1";
    }
  }

  sub vcl_deliver {
    std.log("xxxxxxxx-vcl_deliver: " + req.backend_hint);
    if ( req.backend_hint == d1.backend() ) {
      set resp.http.X-Backend-Deliver = "d1";
    }
  }

} -start

client c1 {
  txreq
  rxresp
  expect resp.status == 200
  expect resp.http.X-Backend-Response == "d1"
  expect resp.http.X-Backend-Deliver == "d1"
} -run
------------------------------------------------------------------------------------------------------

But this also does not compile:

**** v1    0.5 CLI RX| Message from VCC-compiler:\n
**** v1    0.5 CLI RX| Backend not found: 'd1.backend'\n
**** v1    0.5 CLI RX| ('<vcl.inline>' Line 22 Pos 27)\n
**** v1    0.5 CLI RX|     if ( bereq.backend == d1.backend() ) {\n
**** v1    0.5 CLI RX| --------------------------##########------\n

So I am going to open a bug/issue here "https://github.com/varnishcache/varnish-cache";, right?


Thanks again and best regards,

Ronald



_______________________________________________
varnish-misc mailing list
[email protected]
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc

Reply via email to