[master] 64fc34269 Increase std.ip() and std.port() coverage
Dridi Boukelmoune
dridi.boukelmoune at gmail.com
Tue May 21 07:46:10 UTC 2019
commit 64fc34269040ca5f986156c0fe32b2527839cf47
Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
Date: Wed May 15 11:59:16 2019 +0200
Increase std.ip() and std.port() coverage
diff --git a/bin/varnishtest/tests/m00011.vtc b/bin/varnishtest/tests/m00011.vtc
index 95517c7c8..6c761fff4 100644
--- a/bin/varnishtest/tests/m00011.vtc
+++ b/bin/varnishtest/tests/m00011.vtc
@@ -7,25 +7,76 @@ server s1 {
varnish v1 -vcl+backend {
import std;
+ import debug;
sub vcl_deliver {
std.timestamp("t0");
- set resp.http.foo0 = std.ip("8.8.8.*", client.ip);
+
+ debug.store_ip(std.ip("8.8.8.*", client.ip));
+ set resp.http.ip0 = debug.get_ip();
+ set resp.http.port0 = std.port(debug.get_ip());
std.timestamp("8.8.8.*, client.ip");
- set resp.http.foo1 = std.ip("9.9.9.*", server.ip);
+
+ debug.store_ip(std.ip("9.9.9.*", server.ip));
+ set resp.http.ip1 = debug.get_ip();
+ set resp.http.port1 = std.port(debug.get_ip());
std.timestamp("9.9.9.*, server.ip");
- set resp.http.foo2 = std.ip("1.2.3.*", "127.0.0.2");
+
+ debug.store_ip(std.ip("1.2.3.*", "127.0.0.2"));
+ set resp.http.ip2 = debug.get_ip();
+ set resp.http.port2 = std.port(debug.get_ip());
std.timestamp("1.2.3.*");
- set resp.http.foo3 = std.ip("1.2.3.5", "127.0.0.3");
+
+ debug.store_ip(std.ip("1.2.3.5", "127.0.0.3"));
+ set resp.http.ip3 = debug.get_ip();
+ set resp.http.port3 = std.port(debug.get_ip());
std.timestamp("1.2.3.5");
- set resp.http.foo4 = std.ip("2001:db8::", "[::1]");
+
+ debug.store_ip(std.ip("2001:db8::", "[::1]"));
+ set resp.http.ip4 = debug.get_ip();
+ set resp.http.port4 = std.port(debug.get_ip());
std.timestamp("2001:db8::");
- set resp.http.foo5 = std.ip("2001::db8::", "[::1]");
+
+ debug.store_ip(std.ip("2001::db8::", "[::1]"));
+ set resp.http.ip5 = debug.get_ip();
+ set resp.http.port5 = std.port(debug.get_ip());
std.timestamp("2001::db8::");
- set resp.http.foo6 = std.ip("localhost", "0.0.0.0", resolve = false);
+
+ debug.store_ip(std.ip("localhost", "0.0.0.0", resolve = false));
+ set resp.http.ip6 = debug.get_ip();
+ set resp.http.port6 = std.port(debug.get_ip());
std.timestamp("localhost, resolve = false");
- set resp.http.foo7 = std.ip("1.2.3.4", "0.0.0.0", resolve = false);
+
+ debug.store_ip(std.ip("1.2.3.4", "0.0.0.0", resolve = false));
+ set resp.http.ip7 = debug.get_ip();
+ set resp.http.port7 = std.port(debug.get_ip());
std.timestamp("1.2.3.4, resolve = false");
+
+ debug.store_ip(std.ip("1.2.3.4 8080", "0.0.0.0"));
+ set resp.http.ip8 = debug.get_ip();
+ set resp.http.port8 = std.port(debug.get_ip());
+ std.timestamp("1.2.3.4 8080");
+
+ debug.store_ip(std.ip("1.2.3.4:443", "0.0.0.0"));
+ set resp.http.ip9 = debug.get_ip();
+ set resp.http.port9 = std.port(debug.get_ip());
+ std.timestamp("1.2.3.4:443");
+
+ debug.store_ip(std.ip("1.2.3.4", "0.0.0.0", resolve = false));
+ set resp.http.ip10 = debug.get_ip();
+ set resp.http.port10 = std.port(debug.get_ip());
+ std.timestamp("1.2.3.4, resolve = false");
+
+ debug.store_ip(std.ip("9.9.9.*", "${s1_sock}"));
+ set resp.http.ip10 = debug.get_ip();
+ set resp.http.port10 = std.port(debug.get_ip());
+ std.timestamp("9.9.9.*, ${s1_sock}");
+
+ debug.store_ip(std.ip("1.2.3.4 80", "0.0.0.0", p = "443"));
+ set resp.http.ip11 = debug.get_ip();
+ set resp.http.port11 = std.port(debug.get_ip());
+ std.timestamp("1.2.3.4 80, p = 443");
+
}
} -start
@@ -34,12 +85,29 @@ client c1 {
timeout 60
txreq
rxresp
- expect resp.http.foo0 == "${localhost}"
- expect resp.http.foo1 == "${localhost}"
- expect resp.http.foo2 == "127.0.0.2"
- expect resp.http.foo3 == "1.2.3.5"
- expect resp.http.foo4 == "2001:db8::"
- expect resp.http.foo5 == "::1"
- expect resp.http.foo6 == "0.0.0.0"
- expect resp.http.foo7 == "1.2.3.4"
+ expect resp.http.ip0 == ${localhost}
+ expect resp.http.port0 != 0
+ expect resp.http.port0 != 80
+ expect resp.http.ip1 == ${v1_addr}
+ expect resp.http.port1 == ${v1_port}
+ expect resp.http.ip2 == 127.0.0.2
+ expect resp.http.port2 == 80
+ expect resp.http.ip3 == 1.2.3.5
+ expect resp.http.port3 == 80
+ expect resp.http.ip4 == 2001:db8::
+ expect resp.http.port4 == 80
+ expect resp.http.ip5 == ::1
+ expect resp.http.port5 == 80
+ expect resp.http.ip6 == 0.0.0.0
+ expect resp.http.port6 == 80
+ expect resp.http.ip7 == 1.2.3.4
+ expect resp.http.port7 == 80
+ expect resp.http.ip8 == 1.2.3.4
+ expect resp.http.port8 == 8080
+ expect resp.http.ip9 == 1.2.3.4
+ expect resp.http.port9 == 443
+ expect resp.http.ip10 == ${s1_addr}
+ expect resp.http.port10 == ${s1_port}
+ expect resp.http.ip11 == 1.2.3.4
+ expect resp.http.port11 == 80
} -run
diff --git a/lib/libvmod_debug/vmod.vcc b/lib/libvmod_debug/vmod.vcc
index 530d94571..4a40ecc9b 100644
--- a/lib/libvmod_debug/vmod.vcc
+++ b/lib/libvmod_debug/vmod.vcc
@@ -258,3 +258,13 @@ $Function VOID sndbuf(BYTES sndbuf)
Set the client socket' send buffer size to *sndbuf*. The previous, desired
and actual values appear in the logs. Not currently implemented for backend
transactions.
+
+$Function VOID store_ip(PRIV_TASK, IP)
+
+Store an IP address to be later found by ``debug.get_ip()`` in the same
+transaction.
+
+$Function IP get_ip(PRIV_TASK)
+
+Get the IP address previously stored by ``debug.store_ip()`` in the same
+transaction.
diff --git a/lib/libvmod_debug/vmod_debug.c b/lib/libvmod_debug/vmod_debug.c
index 0d9f9d356..9e1463101 100644
--- a/lib/libvmod_debug/vmod_debug.c
+++ b/lib/libvmod_debug/vmod_debug.c
@@ -855,6 +855,33 @@ xyzzy_sndbuf(VRT_CTX, VCL_BYTES arg)
fd, oldbuf, buflen, newbuf);
}
+VCL_VOID
+xyzzy_store_ip(VRT_CTX, struct vmod_priv *priv, VCL_IP ip)
+{
+
+ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
+ AN(priv);
+ AZ(priv->free);
+ assert(VSA_Sane(ip));
+
+ priv->priv = TRUST_ME(ip);
+}
+
+VCL_IP
+xyzzy_get_ip(VRT_CTX, struct vmod_priv *priv)
+{
+ VCL_IP ip;
+
+ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
+ AN(priv);
+ AZ(priv->free);
+
+ ip = priv->priv;
+ assert(VSA_Sane(ip));
+
+ return (ip);
+}
+
/**********************************************************************
* For testing import code on bad vmod files (m00003.vtc)
*/
More information about the varnish-commit
mailing list