aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-01-29 18:03:31 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2016-01-29 18:03:31 +0200
commitf490124e04a9dda412d1979ca9e3e7a51f7ab8d3 (patch)
tree8fed90caf8305d733438ddf2c2871c28a814571c /tests
parent6ea9edf098af19ebb8b081be35c510ed57e99f47 (diff)
downloadvmod-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.am1
-rw-r--r--tests/test05.vtc117
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
+
+

Return to:

Send suggestions and report system problems to the System administrator.