⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.96
Server IP:
147.93.97.220
Server:
Linux srv843233 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64
Server Software:
nginx/1.28.0
PHP Version:
8.2.29
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
share
/
doc
/
varnish
/
html
/
reference
/
View File Name :
vmod_vtc.html
<!DOCTYPE html> <html lang="en" data-content_root="../"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <title>VMOD vtc - Utility module for varnishtest — Varnish version 7.5.0 documentation</title> <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" /> <link rel="stylesheet" type="text/css" href="../_static/classic.css?v=e2714048" /> <script src="../_static/documentation_options.js?v=8214db13"></script> <script src="../_static/doctools.js?v=888ff710"></script> <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="Shell Tricks" href="shell_tricks.html" /> <link rel="prev" title="varnishtest" href="varnishtest.html" /> </head><body> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="shell_tricks.html" title="Shell Tricks" accesskey="N">next</a> |</li> <li class="right" > <a href="varnishtest.html" title="varnishtest" accesskey="P">previous</a> |</li> <li class="nav-item nav-item-0"><a href="../index.html">Varnish version 7.5.0 documentation</a> »</li> <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">The Varnish Reference Manual</a> »</li> <li class="nav-item nav-item-this"><a href="">VMOD vtc - Utility module for varnishtest</a></li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <section id="vmod-vtc-utility-module-for-varnishtest"> <span id="vmod-vtc-3"></span><h1>VMOD vtc - Utility module for varnishtest<a class="headerlink" href="#vmod-vtc-utility-module-for-varnishtest" title="Link to this heading">¶</a></h1> <section id="synopsis"> <h2>SYNOPSIS<a class="headerlink" href="#synopsis" title="Link to this heading">¶</a></h2> <pre class="literal-block">import vtc [as name] [from "path"] <a class="reference internal" href="#vtc-barrier-sync"><span class="std std-ref">VOID barrier_sync(STRING addr, DURATION timeout=0)</span></a> <a class="reference internal" href="#vtc-no-backend"><span class="std std-ref">BACKEND no_backend()</span></a> <a class="reference internal" href="#vtc-no-stevedore"><span class="std std-ref">STEVEDORE no_stevedore()</span></a> <a class="reference internal" href="#vtc-no-ip"><span class="std std-ref">IP no_ip()</span></a> <a class="reference internal" href="#vtc-panic"><span class="std std-ref">VOID panic(STRING)</span></a> <a class="reference internal" href="#vtc-sleep"><span class="std std-ref">VOID sleep(DURATION)</span></a> <a class="reference internal" href="#vtc-workspace-alloc"><span class="std std-ref">VOID workspace_alloc(ENUM, INT size)</span></a> <a class="reference internal" href="#vtc-workspace-reserve"><span class="std std-ref">BYTES workspace_reserve(ENUM, INT size)</span></a> <a class="reference internal" href="#vtc-workspace-free"><span class="std std-ref">INT workspace_free(ENUM {client, backend, session, thread})</span></a> <a class="reference internal" href="#vtc-workspace-snapshot"><span class="std std-ref">VOID workspace_snapshot(ENUM)</span></a> <a class="reference internal" href="#vtc-workspace-reset"><span class="std std-ref">VOID workspace_reset(ENUM)</span></a> <a class="reference internal" href="#vtc-workspace-overflowed"><span class="std std-ref">BOOL workspace_overflowed(ENUM)</span></a> <a class="reference internal" href="#vtc-workspace-overflow"><span class="std std-ref">VOID workspace_overflow(ENUM)</span></a> <a class="reference internal" href="#vtc-workspace-dump"><span class="std std-ref">BLOB workspace_dump(ENUM, ENUM, BYTES off, BYTES len)</span></a> <a class="reference internal" href="#vtc-typesize"><span class="std std-ref">INT typesize(STRING)</span></a> <a class="reference internal" href="#vtc-proxy-header"><span class="std std-ref">BLOB proxy_header(ENUM version, IP client, IP server, STRING authority)</span></a> <a class="reference internal" href="#vtc-vsl"><span class="std std-ref">VOID vsl(INT vxid, STRING tag, ENUM {c, b} side, STRING s)</span></a> <a class="reference internal" href="#vtc-vsl-replay"><span class="std std-ref">VOID vsl_replay(STRING s)</span></a></pre> </section> <section id="description"> <h2>DESCRIPTION<a class="headerlink" href="#description" title="Link to this heading">¶</a></h2> <p>The goal for this VMOD is to provide VCL users and VMOD authors means to test corner cases or reach certain conditions with varnishtest.</p> <section id="void-barrier-sync-string-addr-duration-timeout-0"> <span id="vtc-barrier-sync"></span><h3>VOID barrier_sync(STRING addr, DURATION timeout=0)<a class="headerlink" href="#void-barrier-sync-string-addr-duration-timeout-0" title="Link to this heading">¶</a></h3> <p>When writing test cases, the most common pattern is to start a mock server instance, a Varnish instance, and spin up a mock client. Those entities run asynchronously, and others exist like background processes (<code class="docutils literal notranslate"><span class="pre">process</span></code>) or log readers (<code class="docutils literal notranslate"><span class="pre">logexpect</span></code>). While you can synchronize with individual entities and wait for their completion, you must use a barrier if you need to synchronize two or more entities, or wait until a certain point instead of completion.</p> <p>Not only is it possible to synchronize between test entities, with the <code class="docutils literal notranslate"><span class="pre">barrier_sync</span></code> function you can even synchronize VCL code:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sub</span> <span class="n">vcl_recv</span> <span class="p">{</span> <span class="c1"># wait for some barrier b1 to complete</span> <span class="n">vtc</span><span class="o">.</span><span class="n">barrier_sync</span><span class="p">(</span><span class="s2">"$</span><span class="si">{b1_sock}</span><span class="s2">"</span><span class="p">);</span> <span class="p">}</span> </pre></div> </div> <p>If the function fails to synchronize with the barrier for some reason, or if it reaches the optional timeout, it fails the VCL transaction.</p> </section> </section> <section id="miscellaneous"> <h2>MISCELLANEOUS<a class="headerlink" href="#miscellaneous" title="Link to this heading">¶</a></h2> <section id="backend-no-backend"> <span id="vtc-no-backend"></span><h3>BACKEND no_backend()<a class="headerlink" href="#backend-no-backend" title="Link to this heading">¶</a></h3> <p>Fails at backend selection.</p> </section> <section id="stevedore-no-stevedore"> <span id="vtc-no-stevedore"></span><h3>STEVEDORE no_stevedore()<a class="headerlink" href="#stevedore-no-stevedore" title="Link to this heading">¶</a></h3> <p>Fails at storage selection.</p> </section> <section id="ip-no-ip"> <span id="vtc-no-ip"></span><h3>IP no_ip()<a class="headerlink" href="#ip-no-ip" title="Link to this heading">¶</a></h3> <p>Returns a null IP address, not even a bogo_ip.</p> </section> <section id="void-panic-string"> <span id="vtc-panic"></span><h3>VOID panic(STRING)<a class="headerlink" href="#void-panic-string" title="Link to this heading">¶</a></h3> <p>It can be useful to crash the child process in order to test the robustness of a VMOD.</p> </section> <section id="void-sleep-duration"> <span id="vtc-sleep"></span><h3>VOID sleep(DURATION)<a class="headerlink" href="#void-sleep-duration" title="Link to this heading">¶</a></h3> <p>Block the current worker thread.</p> </section> </section> <section id="workspaces"> <h2>WORKSPACES<a class="headerlink" href="#workspaces" title="Link to this heading">¶</a></h2> <p>It can be useful to put a workspace in a given state when testing corner cases like resource exhaustion for a transaction, especially for VMOD development. All functions available allow to pick which workspace you need to tamper with, available values are <code class="docutils literal notranslate"><span class="pre">client</span></code>, <code class="docutils literal notranslate"><span class="pre">backend</span></code>, <code class="docutils literal notranslate"><span class="pre">session</span></code> and <code class="docutils literal notranslate"><span class="pre">thread</span></code>.</p> <section id="void-workspace-alloc-enum-int-size"> <span id="vtc-workspace-alloc"></span><h3>VOID workspace_alloc(ENUM, INT size)<a class="headerlink" href="#void-workspace-alloc-enum-int-size" title="Link to this heading">¶</a></h3> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">VOID</span> <span class="n">workspace_alloc</span><span class="p">(</span> <span class="n">ENUM</span> <span class="p">{</span><span class="n">client</span><span class="p">,</span> <span class="n">backend</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">thread</span><span class="p">},</span> <span class="n">INT</span> <span class="n">size</span> <span class="p">)</span> </pre></div> </div> <p>Allocate and zero out memory from a workspace. A negative size will allocate as much as needed to leave that many bytes free. The actual allocation size may be higher to comply with memory alignment requirements of the CPU architecture. A failed allocation fails the transaction.</p> </section> <section id="bytes-workspace-reserve-enum-int-size"> <span id="vtc-workspace-reserve"></span><h3>BYTES workspace_reserve(ENUM, INT size)<a class="headerlink" href="#bytes-workspace-reserve-enum-int-size" title="Link to this heading">¶</a></h3> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">BYTES</span> <span class="n">workspace_reserve</span><span class="p">(</span> <span class="n">ENUM</span> <span class="p">{</span><span class="n">client</span><span class="p">,</span> <span class="n">backend</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">thread</span><span class="p">},</span> <span class="n">INT</span> <span class="n">size</span> <span class="p">)</span> </pre></div> </div> <p>Attempt to reserve <em>size</em> bytes, zero out that memory and release the reservation right away. Return the size of the reservation.</p> <p>See <a class="reference internal" href="#vtc-workspace-alloc">vtc.workspace_alloc()</a> for semantics of the <em>size</em> argument.</p> </section> <section id="int-workspace-free-enum-client-backend-session-thread"> <span id="vtc-workspace-free"></span><h3>INT workspace_free(ENUM {client, backend, session, thread})<a class="headerlink" href="#int-workspace-free-enum-client-backend-session-thread" title="Link to this heading">¶</a></h3> <p>Find how much unallocated space there is left in a workspace.</p> </section> <section id="void-workspace-snapshot-enum"> <span id="vtc-workspace-snapshot"></span><h3>VOID workspace_snapshot(ENUM)<a class="headerlink" href="#void-workspace-snapshot-enum" title="Link to this heading">¶</a></h3> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">VOID</span> <span class="n">workspace_snapshot</span><span class="p">(</span><span class="n">ENUM</span> <span class="p">{</span><span class="n">client</span><span class="p">,</span> <span class="n">backend</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">thread</span><span class="p">})</span> </pre></div> </div> <p>Snapshot a workspace. Only one snapshot may be active at a time and each VCL can save only one snapshot, so concurrent tasks requiring snapshots are not supported.</p> </section> <section id="void-workspace-reset-enum"> <span id="vtc-workspace-reset"></span><h3>VOID workspace_reset(ENUM)<a class="headerlink" href="#void-workspace-reset-enum" title="Link to this heading">¶</a></h3> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">VOID</span> <span class="n">workspace_reset</span><span class="p">(</span><span class="n">ENUM</span> <span class="p">{</span><span class="n">client</span><span class="p">,</span> <span class="n">backend</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">thread</span><span class="p">})</span> </pre></div> </div> <p>Reset to the previous snapshot of a workspace, it must be the same workspace too.</p> </section> <section id="bool-workspace-overflowed-enum"> <span id="vtc-workspace-overflowed"></span><h3>BOOL workspace_overflowed(ENUM)<a class="headerlink" href="#bool-workspace-overflowed-enum" title="Link to this heading">¶</a></h3> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">BOOL</span> <span class="n">workspace_overflowed</span><span class="p">(</span><span class="n">ENUM</span> <span class="p">{</span><span class="n">client</span><span class="p">,</span> <span class="n">backend</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">thread</span><span class="p">})</span> </pre></div> </div> <p>Find whether the workspace overflow mark is set or not.</p> </section> <section id="void-workspace-overflow-enum"> <span id="vtc-workspace-overflow"></span><h3>VOID workspace_overflow(ENUM)<a class="headerlink" href="#void-workspace-overflow-enum" title="Link to this heading">¶</a></h3> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">VOID</span> <span class="n">workspace_overflow</span><span class="p">(</span><span class="n">ENUM</span> <span class="p">{</span><span class="n">client</span><span class="p">,</span> <span class="n">backend</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">thread</span><span class="p">})</span> </pre></div> </div> <p>Mark a workspace as overflowed.</p> </section> <section id="blob-workspace-dump-enum-enum-bytes-off-bytes-len"> <span id="vtc-workspace-dump"></span><h3>BLOB workspace_dump(ENUM, ENUM, BYTES off, BYTES len)<a class="headerlink" href="#blob-workspace-dump-enum-enum-bytes-off-bytes-len" title="Link to this heading">¶</a></h3> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">BLOB</span> <span class="n">workspace_dump</span><span class="p">(</span> <span class="n">ENUM</span> <span class="p">{</span><span class="n">client</span><span class="p">,</span> <span class="n">backend</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">thread</span><span class="p">},</span> <span class="n">ENUM</span> <span class="p">{</span><span class="n">s</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">r</span><span class="p">},</span> <span class="n">BYTES</span> <span class="n">off</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">BYTES</span> <span class="nb">len</span><span class="o">=</span><span class="mi">64</span> <span class="p">)</span> </pre></div> </div> <p>Return data from a workspace’s <code class="docutils literal notranslate"><span class="pre">s</span></code>, <code class="docutils literal notranslate"><span class="pre">f</span></code>, or <code class="docutils literal notranslate"><span class="pre">r</span></code> pointer as a blob. Data is copied onto the primary workspace to avoid it being subsequently overwritten.</p> <p>The maximum <em>len</em> is 1KB.</p> </section> <section id="int-typesize-string"> <span id="vtc-typesize"></span><h3>INT typesize(STRING)<a class="headerlink" href="#int-typesize-string" title="Link to this heading">¶</a></h3> <p>Returns the size in bytes of a collection of C-datatypes:</p> <ul class="simple"> <li><p><code class="docutils literal notranslate"><span class="pre">'p'</span></code>: pointer</p></li> <li><p><code class="docutils literal notranslate"><span class="pre">'i'</span></code>: <code class="docutils literal notranslate"><span class="pre">int</span></code></p></li> <li><p><code class="docutils literal notranslate"><span class="pre">'d'</span></code>: <code class="docutils literal notranslate"><span class="pre">double</span></code></p></li> <li><p><code class="docutils literal notranslate"><span class="pre">'f'</span></code>: <code class="docutils literal notranslate"><span class="pre">float</span></code></p></li> <li><p><code class="docutils literal notranslate"><span class="pre">'l'</span></code>: <code class="docutils literal notranslate"><span class="pre">long</span></code></p></li> <li><p><code class="docutils literal notranslate"><span class="pre">'s'</span></code>: <code class="docutils literal notranslate"><span class="pre">short</span></code></p></li> <li><p><code class="docutils literal notranslate"><span class="pre">'z'</span></code>: <code class="docutils literal notranslate"><span class="pre">size_t</span></code></p></li> <li><p><code class="docutils literal notranslate"><span class="pre">'o'</span></code>: <code class="docutils literal notranslate"><span class="pre">off_t</span></code></p></li> <li><p><code class="docutils literal notranslate"><span class="pre">'j'</span></code>: <code class="docutils literal notranslate"><span class="pre">intmax_t</span></code></p></li> </ul> <p>This can be useful for VMOD authors in conjunction with workspace operations.</p> </section> <section id="blob-proxy-header-enum-version-ip-client-ip-server-string-authority"> <span id="vtc-proxy-header"></span><h3>BLOB proxy_header(ENUM version, IP client, IP server, STRING authority)<a class="headerlink" href="#blob-proxy-header-enum-version-ip-client-ip-server-string-authority" title="Link to this heading">¶</a></h3> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">BLOB</span> <span class="n">proxy_header</span><span class="p">(</span> <span class="n">ENUM</span> <span class="p">{</span><span class="n">v1</span><span class="p">,</span> <span class="n">v2</span><span class="p">}</span> <span class="n">version</span><span class="p">,</span> <span class="n">IP</span> <span class="n">client</span><span class="p">,</span> <span class="n">IP</span> <span class="n">server</span><span class="p">,</span> <span class="n">STRING</span> <span class="n">authority</span><span class="o">=</span><span class="mi">0</span> <span class="p">)</span> </pre></div> </div> <p>Format a proxy header of the given version <code class="docutils literal notranslate"><span class="pre">v1</span></code> or <code class="docutils literal notranslate"><span class="pre">v2</span></code> and addresses (The VCL IP type also contains the port number).</p> <p>Optionally also send an authority TLV with version <code class="docutils literal notranslate"><span class="pre">v2</span></code> (ignored for version <code class="docutils literal notranslate"><span class="pre">v1</span></code>).</p> <p>Candidate for moving into vmod_proxy, but there were concerns about the interface design</p> </section> </section> <section id="vsl"> <h2>VSL<a class="headerlink" href="#vsl" title="Link to this heading">¶</a></h2> <p>These functions allow to generate arbitrary log entries to test the Varnish Shared Log (VSL) implementation and readers like varnishlog.</p> <section id="void-vsl-int-vxid-string-tag-enum-c-b-side-string-s"> <span id="vtc-vsl"></span><h3>VOID vsl(INT vxid, STRING tag, ENUM {c, b} side, STRING s)<a class="headerlink" href="#void-vsl-int-vxid-string-tag-enum-c-b-side-string-s" title="Link to this heading">¶</a></h3> <p>Call <code class="docutils literal notranslate"><span class="pre">VSLs()</span></code> with the given parameters.</p> <p>The argument order is chosen to match VSL output.</p> <p>A VCL error is triggered if <cite>tag</cite> can not be resolved at runtime or if vxid is out of bounds.</p> </section> <section id="void-vsl-replay-string-s"> <span id="vtc-vsl-replay"></span><h3>VOID vsl_replay(STRING s)<a class="headerlink" href="#void-vsl-replay-string-s" title="Link to this heading">¶</a></h3> <p>Replay literal log lines.</p> <p>The parser accepts the output generated by <code class="docutils literal notranslate"><span class="pre">varnishlog</span> <span class="pre">-g</span> <span class="pre">raw</span></code> and varnishtest log <code class="docutils literal notranslate"><span class="pre">vsl|</span></code> lines.</p> <p>Unparsable lines are silently ignored.</p> </section> </section> <section id="see-also"> <h2>SEE ALSO<a class="headerlink" href="#see-also" title="Link to this heading">¶</a></h2> <ul class="simple"> <li><p><a class="reference internal" href="vtc.html#vtc-7"><span class="std std-ref">VTC</span></a></p></li> <li><p><a class="reference internal" href="vcl.html#vcl-7"><span class="std std-ref">VCL</span></a></p></li> </ul> </section> <section id="copyright"> <h2>COPYRIGHT<a class="headerlink" href="#copyright" title="Link to this heading">¶</a></h2> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>Copyright (c) 2017 Varnish Software AS All rights reserved. Author: Dridi Boukelmoune <dridi.boukelmoune@gmail.com> SPDX-License-Identifier: BSD-2-Clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NB: Default to strict $ABI handling, so that path is tested in vmodtool.py </pre></div> </div> </section> </section> <div class="clearer"></div> </div> </div> </div> <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="sphinxsidebarwrapper"> <div> <h3><a href="../index.html">Table of Contents</a></h3> <ul> <li><a class="reference internal" href="#">VMOD vtc - Utility module for varnishtest</a></li> </ul> </div> <div> <h4>Previous topic</h4> <p class="topless"><a href="varnishtest.html" title="previous chapter">varnishtest</a></p> </div> <div> <h4>Next topic</h4> <p class="topless"><a href="shell_tricks.html" title="next chapter">Shell Tricks</a></p> </div> <div role="note" aria-label="source link"> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../_sources/reference/vmod_vtc.rst.txt" rel="nofollow">Show Source</a></li> </ul> </div> <div id="searchbox" style="display: none" role="search"> <h3 id="searchlabel">Quick search</h3> <div class="searchformwrapper"> <form class="search" action="../search.html" method="get"> <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/> <input type="submit" value="Go" /> </form> </div> </div> <script>document.getElementById('searchbox').style.display = "block"</script> </div> </div> <div class="clearer"></div> </div> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="shell_tricks.html" title="Shell Tricks" >next</a> |</li> <li class="right" > <a href="varnishtest.html" title="varnishtest" >previous</a> |</li> <li class="nav-item nav-item-0"><a href="../index.html">Varnish version 7.5.0 documentation</a> »</li> <li class="nav-item nav-item-1"><a href="index.html" >The Varnish Reference Manual</a> »</li> <li class="nav-item nav-item-this"><a href="">VMOD vtc - Utility module for varnishtest</a></li> </ul> </div> <div class="footer" role="contentinfo"> © Copyright 2010-2014, Varnish Software AS. Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.6. </div> </body> </html>