Commit 68df82ed authored by Dridi Boukelmoune's avatar Dridi Boukelmoune

Increase std.ip() and std.port() coverage

Conflicts:
	bin/varnishtest/tests/m00011.vtc
	lib/libvmod_debug/vmod.vcc
	lib/libvmod_debug/vmod_debug.c
parent 24c586ce
......@@ -7,16 +7,76 @@ server s1 {
varnish v1 -vcl+backend {
import std;
import debug;
sub vcl_deliver {
set resp.http.foo0 = std.ip("8.8.8.*", client.ip);
set resp.http.foo1 = std.ip("9.9.9.*", server.ip);
set resp.http.foo2 = std.ip("1.2.3.*", "127.0.0.2");
set resp.http.foo3 = std.ip("1.2.3.5", "127.0.0.3");
set resp.http.foo4 = std.ip("2001:db8::", "[::1]");
set resp.http.foo5 = std.ip("2001::db8::", "[::1]");
set resp.http.foo6 = std.ip("localhost", "0.0.0.0", resolve = false);
set resp.http.foo7 = std.ip("1.2.3.4", "0.0.0.0", resolve = false);
std.timestamp("t0");
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");
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");
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.*");
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");
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::");
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::");
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");
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
......@@ -25,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
......@@ -193,3 +193,13 @@ $Method STRING .meth_opt(PRIV_CALL, PRIV_VCL, PRIV_TASK,
[STRING s], [BOOL b])
Test object method with all the fancy stuff.
$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.
......@@ -414,3 +414,30 @@ xyzzy_vsc_destroy(VRT_CTX)
vsc = NULL;
AZ(pthread_mutex_unlock(&vsc_mtx));
}
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);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment