1. 28 Oct, 2020 1 commit
    • Dridi Boukelmoune's avatar
      vtc: Add varnish macros for all listen addresses · c7ac5266
      Dridi Boukelmoune authored
      When a test case successfully runs this:
      
          varnish v1 -start
      
      The following macros are created:
      
      - ${v1_addr}
      - ${v1_port}
      - ${v1_sock}
      
      When v1 listens to a UNIX domain socket, those macros become useless and
      we generally have to repeat the socket path wherever we need it.
      
      From now on, varnish listen address macros for unix domain sockets match
      their server counterparts:
      
      - ${v1_addr} expands to "0.0.0.0"
      - ${v1_port} expands to "0"
      - ${v1_sock} expands to the socket path
      
      It is now possible to use the following construct regardless of the
      socket type:
      
          client c1 -connect "${v1_sock}"
      
      In addition, the debug.listen_address command now outputs the listen
      address name in addition to its endpoint. For example, in a test case
      with the following command:
      
          varnish v1 -arg "-a :0 -a :0 -b '${bad_backend}'" -start
      
      The output for debug.listen_address could look like this:
      
          a0 127.0.0.1 34567
          a0 ::1 34567
          a1 127.0.0.1 45678
          a1 ::1 45678
      
      The resulting macros would be:
      
      - ${v1_addr}
      - ${v1_port}
      - ${v1_sock}
      - ${v1_a0_addr}
      - ${v1_a0_port}
      - ${v1_a0_sock}
      - ${v1_a1_addr}
      - ${v1_a1_port}
      - ${v1_a1_sock}
      
      It becomes possible to reliably listen to multiple endpoints and use
      either in a test case. On a dual-stack system where we might end up
      with multiple endpoints sharing the same name, only the first one is
      used for a given name. In the example above all macros would expand
      to IPv4 addresses.
      c7ac5266
  2. 27 Oct, 2020 6 commits
  3. 26 Oct, 2020 13 commits
  4. 24 Oct, 2020 1 commit
  5. 23 Oct, 2020 3 commits
  6. 22 Oct, 2020 2 commits
  7. 21 Oct, 2020 11 commits
  8. 20 Oct, 2020 2 commits
  9. 19 Oct, 2020 1 commit
    • Dridi Boukelmoune's avatar
      varnishtest: Tweak default h2 window parameters · c9fc3842
      Dridi Boukelmoune authored
      This change increases the initial size and reduces the low watermark.
      
      RFC7540 says this:
      
      > Flow-controlled frames from the sender and WINDOW_UPDATE frames from
      > the receiver are completely asynchronous with respect to each other.
      > This property allows a receiver to aggressively update the window
      > size kept by the sender to prevent streams from stalling.
      
      The default parameters are very much on the low-latency aggressive
      updates end of the spectrum, which increases asynchronicity at the
      expense of determinism in test cases.
      
      The tweaks made by varnishtest allows basic tests to send a few request
      bodies before being bothered by window update race conditions. Test
      cases that cover h2 flow control or anything else related to window
      updates may reset parameters or pick other specific values. This frees
      us from a bunch of barriers where the purpose of mitigating this race
      was rarely even documented.
      
      This successfully passed the following test locally:
      
          git grep -Fl +http2 -- '*.vtc' |
          xargs bin/varnishtest/varnishtest -i -n100 -j32
      
      We can hope that h2 test cases will be overall more stable from now on.
      
      Refs #3442
      c9fc3842