diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-01-29 18:03:31 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-01-29 18:03:31 +0200 |
commit | f490124e04a9dda412d1979ca9e3e7a51f7ab8d3 (patch) | |
tree | 8fed90caf8305d733438ddf2c2871c28a814571c /tests | |
parent | 6ea9edf098af19ebb8b081be35c510ed57e99f47 (diff) | |
download | vmod-tbf-f490124e04a9dda412d1979ca9e3e7a51f7ab8d3.tar.gz vmod-tbf-f490124e04a9dda412d1979ca9e3e7a51f7ab8d3.tar.bz2 |
Change dump format; optionally dump the tree at exit; provide statistics
* src/tbf.c: Store tree in the global variable.
Optionally save it to a disk file at exit.
Provide statistics, dumping and loading functions.
* src/tbf.h: Move data type declarations here.
* src/vmod_tbf.vcc (load, dump_at_exit)
(log_tree, log_stats): New functions.
(dump, gc, rate, check): Remove PRIV_VCL parameter.
* tests/Makefile.am (test05.vtc): New test case.
* tests/test05.vtc: New file.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/test05.vtc | 117 |
2 files changed, 118 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 9b4a5fe..413d176 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -19,6 +19,7 @@ VMOD_TESTS = \ test01.vtc\ test02.vtc\ test03.vtc\ + test05.vtc\ time00.vtc EXTRA_DIST=$(VMOD_TESTS) diff --git a/tests/test05.vtc b/tests/test05.vtc new file mode 100644 index 0000000..485318e --- /dev/null +++ b/tests/test05.vtc @@ -0,0 +1,117 @@ +# This file is part of vmod-tbf +# Copyright (C) 2013-2016 Sergey Poznyakoff +# +# Vmod-tbf is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# Vmod-tbf is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with vmod-tbf. If not, see <http://www.gnu.org/licenses/>. + +varnishtest "Test dump/load facilities" + +server s1 { + rxreq + txresp + + rxreq + txresp + + rxreq + txresp + + rxreq + txresp + + rxreq + txresp + + rxreq + txresp + + rxreq + txresp + + rxreq + txresp + + rxreq + txresp +} -start + +varnish v1 -vcl+backend { + import std; + import tbf from "${vmod_topbuild}/src/.libs/libvmod_tbf.so"; + # sub vcl_init { + # tbf.debug(20); + # } + sub vcl_recv { + if (req.url == "/dump") { + tbf.dump("/tmp/test05.dump"); + } else if (req.url == "/load") { + tbf.load("/tmp/test05.dump"); + } else if (!tbf.rate("url:"+req.url, 1, 5 s, 2)) { + return (synth(420, "Overlimit")); + } + return (hash); + } +} -start + +client c1 { + txreq -url "/seks" + rxresp + expect resp.status == 200 + txreq -url "/fire" + rxresp + expect resp.status == 200 + txreq -url "/tre" + rxresp + expect resp.status == 200 + txreq -url "/fem" + rxresp + expect resp.status == 200 + txreq -url "/en" + rxresp + expect resp.status == 200 + txreq -url "/to" + rxresp + expect resp.status == 200 + txreq -url "/sju" + rxresp + expect resp.status == 200 + + # [1] Save the tree + txreq -url "/dump" + rxresp + expect resp.status == 200 + + txreq -url "/sju" + rxresp + expect resp.status == 200 + txreq -url "/sju" + rxresp + expect resp.status == 420 + + # Restore the tree to its state at [1] + txreq -url "/load" + rxresp + expect resp.status == 200 + + # It should now allow to access /sju + txreq -url "/sju" + rxresp + expect resp.status == 200 + +# delay + +} + +client c1 -run + + |