r4428 - in trunk/varnish-cache: bin/varnishd bin/varnishtest/tests include lib/libvarnish lib/libvcl
tfheen at projects.linpro.no
tfheen at projects.linpro.no
Wed Jan 6 18:38:59 CET 2010
Author: tfheen
Date: 2010-01-06 18:38:59 +0100 (Wed, 06 Jan 2010)
New Revision: 4428
Added:
trunk/varnish-cache/bin/varnishtest/tests/b00030.vtc
Modified:
trunk/varnish-cache/bin/varnishd/cache_vrt.c
trunk/varnish-cache/bin/varnishtest/tests/v00018.vtc
trunk/varnish-cache/include/libvarnish.h
trunk/varnish-cache/include/vrt.h
trunk/varnish-cache/lib/libvarnish/time.c
trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c
trunk/varnish-cache/lib/libvcl/vcc_gen_fixed_token.tcl
trunk/varnish-cache/lib/libvcl/vcc_obj.c
trunk/varnish-cache/lib/libvcl/vcc_parse.c
trunk/varnish-cache/lib/libvcl/vcc_string.c
Log:
Add string representations of TIME and RTIME
Make it possible to get useful string representations of TIME and
RTIME out. Also change the definition of types that should be RTIME
from TIME.
Modified: trunk/varnish-cache/bin/varnishd/cache_vrt.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_vrt.c 2010-01-06 17:38:53 UTC (rev 4427)
+++ trunk/varnish-cache/bin/varnishd/cache_vrt.c 2010-01-06 17:38:59 UTC (rev 4428)
@@ -840,6 +840,16 @@
return (p);
}
+char *
+VRT_time_string(const struct sess *sp, double t)
+{
+ char *p;
+
+ AN(p = WS_Alloc(sp->http->ws, TIM_FORMAT_SIZE));
+ TIM_format(t, p);
+ return p;
+}
+
const char *
VRT_backend_string(struct sess *sp)
{
Added: trunk/varnish-cache/bin/varnishtest/tests/b00030.vtc
===================================================================
--- trunk/varnish-cache/bin/varnishtest/tests/b00030.vtc (rev 0)
+++ trunk/varnish-cache/bin/varnishtest/tests/b00030.vtc 2010-01-06 17:38:59 UTC (rev 4428)
@@ -0,0 +1,20 @@
+# $Id$
+
+test "Test formatting of timestamps"
+
+server s1 {
+ rxreq
+ txresp
+} -start
+
+varnish v1 -vcl+backend {
+ sub vcl_recv {
+ error 200 req.grace;
+ }
+} -start
+
+client c1 {
+ txreq
+ rxresp
+ expect resp.msg == "10.000"
+} -run
Modified: trunk/varnish-cache/bin/varnishtest/tests/v00018.vtc
===================================================================
--- trunk/varnish-cache/bin/varnishtest/tests/v00018.vtc 2010-01-06 17:38:53 UTC (rev 4427)
+++ trunk/varnish-cache/bin/varnishtest/tests/v00018.vtc 2010-01-06 17:38:59 UTC (rev 4428)
@@ -27,11 +27,6 @@
varnish v1 -badvcl {
backend b { .host = "127.0.0.1"; }
- sub vcl_fetch { error 404 req.grace; }
-}
-
-varnish v1 -badvcl {
- backend b { .host = "127.0.0.1"; }
sub vcl_miss { set server.port = 1000; }
}
Modified: trunk/varnish-cache/include/libvarnish.h
===================================================================
--- trunk/varnish-cache/include/libvarnish.h 2010-01-06 17:38:53 UTC (rev 4427)
+++ trunk/varnish-cache/include/libvarnish.h 2010-01-06 17:38:59 UTC (rev 4428)
@@ -75,6 +75,7 @@
#endif
/* from libvarnish/time.c */
+#define TIM_FORMAT_SIZE 30
void TIM_format(double t, char *p);
time_t TIM_parse(const char *p);
double TIM_mono(void);
Modified: trunk/varnish-cache/include/vrt.h
===================================================================
--- trunk/varnish-cache/include/vrt.h 2010-01-06 17:38:53 UTC (rev 4427)
+++ trunk/varnish-cache/include/vrt.h 2010-01-06 17:38:59 UTC (rev 4428)
@@ -168,6 +168,7 @@
char *VRT_IP_string(const struct sess *sp, const struct sockaddr *sa);
char *VRT_int_string(const struct sess *sp, int);
char *VRT_double_string(const struct sess *sp, double);
+char *VRT_time_string(const struct sess *sp, double);
const char *VRT_backend_string(struct sess *sp);
#define VRT_done(sp, hand) \
Modified: trunk/varnish-cache/lib/libvarnish/time.c
===================================================================
--- trunk/varnish-cache/lib/libvarnish/time.c 2010-01-06 17:38:53 UTC (rev 4427)
+++ trunk/varnish-cache/lib/libvarnish/time.c 2010-01-06 17:38:59 UTC (rev 4428)
@@ -107,7 +107,7 @@
tt = (time_t) t;
(void)gmtime_r(&tt, &tm);
- AN(strftime(p, 30, "%a, %d %b %Y %T GMT", &tm));
+ AN(strftime(p, TIM_FORMAT_SIZE, "%a, %d %b %Y %T GMT", &tm));
}
/* XXX: add statistics ? */
Modified: trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c 2010-01-06 17:38:53 UTC (rev 4427)
+++ trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c 2010-01-06 17:38:59 UTC (rev 4428)
@@ -1,5 +1,5 @@
/*
- * $Id: vcc_gen_fixed_token.tcl 4376 2009-11-27 11:06:32Z phk $
+ * $Id$
*
* NB: This file is machine generated, DO NOT EDIT!
*
@@ -159,10 +159,9 @@
/* ../../include/vcl.h */
- vsb_cat(sb, "/*\n * $Id: vcc_gen_fixed_token.tcl 4376 2009-11-27 11");
- vsb_cat(sb, ":06:32Z phk $\n *\n * NB: This file is machine genera");
- vsb_cat(sb, "ted, DO NOT EDIT!\n *\n * Edit and run vcc_gen_fixed_t");
- vsb_cat(sb, "oken.tcl instead\n */\n\nstruct sess;\n");
+ vsb_cat(sb, "/*\n * $Id$\n *\n * NB: This file is machine generate");
+ vsb_cat(sb, "d, DO NOT EDIT!\n *\n * Edit and run vcc_gen_fixed_tok");
+ vsb_cat(sb, "en.tcl instead\n */\n\nstruct sess;\n");
vsb_cat(sb, "struct cli;\n\ntypedef void vcl_init_f(struct cli *);\n");
vsb_cat(sb, "typedef void vcl_fini_f(struct cli *);\n");
vsb_cat(sb, "typedef int vcl_func_f(struct sess *sp);\n");
@@ -227,16 +226,16 @@
vsb_cat(sb, " * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWI");
vsb_cat(sb, "SE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFT");
vsb_cat(sb, "WARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n");
- vsb_cat(sb, " * SUCH DAMAGE.\n *\n * $Id: vrt.h 4405 2009-12-16 10:");
- vsb_cat(sb, "45:39Z phk $\n *\n * Runtime support for compiled VCL ");
- vsb_cat(sb, "programs.\n *\n * XXX: When this file is changed, lib/");
- vsb_cat(sb, "libvcl/vcc_gen_fixed_token.tcl\n");
- vsb_cat(sb, " * XXX: *MUST* be rerun.\n */\n");
- vsb_cat(sb, "\nstruct sess;\nstruct vsb;\nstruct cli;\n");
- vsb_cat(sb, "struct director;\nstruct VCL_conf;\n");
- vsb_cat(sb, "struct sockaddr;\n\n/*\n * A backend probe specificati");
- vsb_cat(sb, "on\n */\n\nextern const void * const vrt_magic_string_");
- vsb_cat(sb, "end;\n\nstruct vrt_backend_probe {\n");
+ vsb_cat(sb, " * SUCH DAMAGE.\n *\n * $Id$\n *\n");
+ vsb_cat(sb, " * Runtime support for compiled VCL programs.\n");
+ vsb_cat(sb, " *\n * XXX: When this file is changed, lib/libvcl/vcc_");
+ vsb_cat(sb, "gen_fixed_token.tcl\n * XXX: *MUST* be rerun.\n");
+ vsb_cat(sb, " */\n\nstruct sess;\nstruct vsb;\n");
+ vsb_cat(sb, "struct cli;\nstruct director;\n");
+ vsb_cat(sb, "struct VCL_conf;\nstruct sockaddr;\n");
+ vsb_cat(sb, "\n/*\n * A backend probe specification\n");
+ vsb_cat(sb, " */\n\nextern const void * const vrt_magic_string_end;");
+ vsb_cat(sb, "\n\nstruct vrt_backend_probe {\n");
vsb_cat(sb, "\tconst char\t*url;\n\tconst char\t*request;\n");
vsb_cat(sb, "\tdouble\t\ttimeout;\n\tdouble\t\tinterval;\n");
vsb_cat(sb, "\tunsigned\texp_status;\n\tunsigned\twindow;\n");
@@ -304,33 +303,33 @@
vsb_cat(sb, "\nchar *VRT_IP_string(const struct sess *sp, const str");
vsb_cat(sb, "uct sockaddr *sa);\nchar *VRT_int_string(const struct ");
vsb_cat(sb, "sess *sp, int);\nchar *VRT_double_string(const struct ");
- vsb_cat(sb, "sess *sp, double);\nconst char *VRT_backend_string(str");
- vsb_cat(sb, "uct sess *sp);\n\n#define VRT_done(sp, hand)\t\t\t\\\n");
+ vsb_cat(sb, "sess *sp, double);\nchar *VRT_time_string(const struct");
+ vsb_cat(sb, " sess *sp, double);\nconst char *VRT_backend_string(st");
+ vsb_cat(sb, "ruct sess *sp);\n\n#define VRT_done(sp, hand)\t\t\t\\\n");
vsb_cat(sb, "\tdo {\t\t\t\t\t\\\n\t\tVRT_handling(sp, hand);\t\t\\\n");
vsb_cat(sb, "\t\treturn (1);\t\t\t\\\n\t} while (0)\n");
/* ../../include/vrt_obj.h */
- vsb_cat(sb, "/*\n * $Id: vcc_gen_fixed_token.tcl 4376 2009-11-27 11");
- vsb_cat(sb, ":06:32Z phk $\n *\n * NB: This file is machine genera");
- vsb_cat(sb, "ted, DO NOT EDIT!\n *\n * Edit and run vcc_gen_fixed_t");
- vsb_cat(sb, "oken.tcl instead\n */\n\nstruct sockaddr * VRT_r_clien");
- vsb_cat(sb, "t_ip(const struct sess *);\nstruct sockaddr * VRT_r_se");
- vsb_cat(sb, "rver_ip(struct sess *);\nconst char * VRT_r_server_hos");
- vsb_cat(sb, "tname(struct sess *);\nconst char * VRT_r_server_ident");
- vsb_cat(sb, "ity(struct sess *);\nint VRT_r_server_port(struct sess");
- vsb_cat(sb, " *);\nconst char * VRT_r_req_request(const struct sess");
- vsb_cat(sb, " *);\nvoid VRT_l_req_request(const struct sess *, cons");
- vsb_cat(sb, "t char *, ...);\nconst char * VRT_r_req_url(const stru");
- vsb_cat(sb, "ct sess *);\nvoid VRT_l_req_url(const struct sess *, c");
- vsb_cat(sb, "onst char *, ...);\nconst char * VRT_r_req_proto(const");
- vsb_cat(sb, " struct sess *);\nvoid VRT_l_req_proto(const struct se");
- vsb_cat(sb, "ss *, const char *, ...);\nvoid VRT_l_req_hash(struct ");
- vsb_cat(sb, "sess *, const char *);\nstruct director * VRT_r_req_ba");
- vsb_cat(sb, "ckend(struct sess *);\nvoid VRT_l_req_backend(struct s");
- vsb_cat(sb, "ess *, struct director *);\nint VRT_r_req_restarts(con");
- vsb_cat(sb, "st struct sess *);\ndouble VRT_r_req_grace(struct sess");
- vsb_cat(sb, " *);\nvoid VRT_l_req_grace(struct sess *, double);\n");
+ vsb_cat(sb, "/*\n * $Id$\n *\n * NB: This file is machine generate");
+ vsb_cat(sb, "d, DO NOT EDIT!\n *\n * Edit and run vcc_gen_fixed_tok");
+ vsb_cat(sb, "en.tcl instead\n */\n\nstruct sockaddr * VRT_r_client_");
+ vsb_cat(sb, "ip(const struct sess *);\nstruct sockaddr * VRT_r_serv");
+ vsb_cat(sb, "er_ip(struct sess *);\nconst char * VRT_r_server_hostn");
+ vsb_cat(sb, "ame(struct sess *);\nconst char * VRT_r_server_identit");
+ vsb_cat(sb, "y(struct sess *);\nint VRT_r_server_port(struct sess *");
+ vsb_cat(sb, ");\nconst char * VRT_r_req_request(const struct sess *");
+ vsb_cat(sb, ");\nvoid VRT_l_req_request(const struct sess *, const ");
+ vsb_cat(sb, "char *, ...);\nconst char * VRT_r_req_url(const struct");
+ vsb_cat(sb, " sess *);\nvoid VRT_l_req_url(const struct sess *, con");
+ vsb_cat(sb, "st char *, ...);\nconst char * VRT_r_req_proto(const s");
+ vsb_cat(sb, "truct sess *);\nvoid VRT_l_req_proto(const struct sess");
+ vsb_cat(sb, " *, const char *, ...);\nvoid VRT_l_req_hash(struct se");
+ vsb_cat(sb, "ss *, const char *);\nstruct director * VRT_r_req_back");
+ vsb_cat(sb, "end(struct sess *);\nvoid VRT_l_req_backend(struct ses");
+ vsb_cat(sb, "s *, struct director *);\nint VRT_r_req_restarts(const");
+ vsb_cat(sb, " struct sess *);\ndouble VRT_r_req_grace(struct sess *");
+ vsb_cat(sb, ");\nvoid VRT_l_req_grace(struct sess *, double);\n");
vsb_cat(sb, "const char * VRT_r_req_xid(struct sess *);\n");
vsb_cat(sb, "unsigned VRT_r_req_esi(struct sess *);\n");
vsb_cat(sb, "void VRT_l_req_esi(struct sess *, unsigned);\n");
Modified: trunk/varnish-cache/lib/libvcl/vcc_gen_fixed_token.tcl
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_gen_fixed_token.tcl 2010-01-06 17:38:53 UTC (rev 4427)
+++ trunk/varnish-cache/lib/libvcl/vcc_gen_fixed_token.tcl 2010-01-06 17:38:59 UTC (rev 4428)
@@ -150,7 +150,7 @@
all
"const struct sess *"
}
- { req.grace TIME
+ { req.grace RTIME
RW
all
"struct sess *"
@@ -196,17 +196,17 @@
{ pipe pass miss fetch }
"const struct sess *"
}
- { bereq.connect_timeout TIME
+ { bereq.connect_timeout RTIME
RW
{ pass miss }
"struct sess *"
}
- { bereq.first_byte_timeout TIME
+ { bereq.first_byte_timeout RTIME
RW
{ pass miss }
"struct sess *"
}
- { bereq.between_bytes_timeout TIME
+ { bereq.between_bytes_timeout RTIME
RW
{ pass miss }
"struct sess *"
@@ -219,7 +219,7 @@
{ fetch }
"const struct sess *"
}
- { beresp.saintmode TIME
+ { beresp.saintmode RTIME
WO
{ fetch }
"const struct sess *"
@@ -244,12 +244,12 @@
{ fetch }
"const struct sess *"
}
- { beresp.ttl TIME
+ { beresp.ttl RTIME
RW
{ fetch }
"const struct sess *"
}
- { beresp.grace TIME
+ { beresp.grace RTIME
RW
{ fetch }
"const struct sess *"
@@ -288,17 +288,17 @@
{ hit }
"const struct sess *"
}
- { obj.ttl TIME
+ { obj.ttl RTIME
RW
{ hit error }
"const struct sess *"
}
- { obj.grace TIME
+ { obj.grace RTIME
RW
{ hit error }
"const struct sess *"
}
- { obj.lastuse TIME
+ { obj.lastuse RTIME
RO
{ hit deliver error }
"const struct sess *"
Modified: trunk/varnish-cache/lib/libvcl/vcc_obj.c
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_obj.c 2010-01-06 17:38:53 UTC (rev 4427)
+++ trunk/varnish-cache/lib/libvcl/vcc_obj.c 2010-01-06 17:38:59 UTC (rev 4428)
@@ -1,5 +1,5 @@
/*
- * $Id: vcc_gen_fixed_token.tcl 4376 2009-11-27 11:06:32Z phk $
+ * $Id$
*
* NB: This file is machine generated, DO NOT EDIT!
*
@@ -105,7 +105,7 @@
| VCL_MET_MISS | VCL_MET_HIT | VCL_MET_FETCH | VCL_MET_DELIVER
| VCL_MET_ERROR
},
- { "req.grace", TIME, 9,
+ { "req.grace", RTIME, 9,
"VRT_r_req_grace(sp)",
"VRT_l_req_grace(sp, ",
V_RW, 0,
@@ -159,19 +159,19 @@
V_RW, "HDR_BEREQ",
VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_MISS | VCL_MET_FETCH
},
- { "bereq.connect_timeout", TIME, 21,
+ { "bereq.connect_timeout", RTIME, 21,
"VRT_r_bereq_connect_timeout(sp)",
"VRT_l_bereq_connect_timeout(sp, ",
V_RW, 0,
VCL_MET_PASS | VCL_MET_MISS
},
- { "bereq.first_byte_timeout", TIME, 24,
+ { "bereq.first_byte_timeout", RTIME, 24,
"VRT_r_bereq_first_byte_timeout(sp)",
"VRT_l_bereq_first_byte_timeout(sp, ",
V_RW, 0,
VCL_MET_PASS | VCL_MET_MISS
},
- { "bereq.between_bytes_timeout", TIME, 27,
+ { "bereq.between_bytes_timeout", RTIME, 27,
"VRT_r_bereq_between_bytes_timeout(sp)",
"VRT_l_bereq_between_bytes_timeout(sp, ",
V_RW, 0,
@@ -183,7 +183,7 @@
V_RW, 0,
VCL_MET_FETCH
},
- { "beresp.saintmode", TIME, 16,
+ { "beresp.saintmode", RTIME, 16,
NULL,
"VRT_l_beresp_saintmode(sp, ",
V_WO, 0,
@@ -213,13 +213,13 @@
V_RW, 0,
VCL_MET_FETCH
},
- { "beresp.ttl", TIME, 10,
+ { "beresp.ttl", RTIME, 10,
"VRT_r_beresp_ttl(sp)",
"VRT_l_beresp_ttl(sp, ",
V_RW, 0,
VCL_MET_FETCH
},
- { "beresp.grace", TIME, 12,
+ { "beresp.grace", RTIME, 12,
"VRT_r_beresp_grace(sp)",
"VRT_l_beresp_grace(sp, ",
V_RW, 0,
@@ -261,19 +261,19 @@
V_RW, 0,
VCL_MET_HIT
},
- { "obj.ttl", TIME, 7,
+ { "obj.ttl", RTIME, 7,
"VRT_r_obj_ttl(sp)",
"VRT_l_obj_ttl(sp, ",
V_RW, 0,
VCL_MET_HIT | VCL_MET_ERROR
},
- { "obj.grace", TIME, 9,
+ { "obj.grace", RTIME, 9,
"VRT_r_obj_grace(sp)",
"VRT_l_obj_grace(sp, ",
V_RW, 0,
VCL_MET_HIT | VCL_MET_ERROR
},
- { "obj.lastuse", TIME, 11,
+ { "obj.lastuse", RTIME, 11,
"VRT_r_obj_lastuse(sp)",
NULL,
V_RO, 0,
Modified: trunk/varnish-cache/lib/libvcl/vcc_parse.c
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_parse.c 2010-01-06 17:38:53 UTC (rev 4427)
+++ trunk/varnish-cache/lib/libvcl/vcc_parse.c 2010-01-06 17:38:59 UTC (rev 4428)
@@ -265,6 +265,9 @@
case TIME:
vcc_TimeVal(tl);
break;
+ case RTIME:
+ vcc_RTimeVal(tl);
+ break;
case INT:
ExpectErr(tl, CNUM);
Fb(tl, 0, "%.*s ", PF(tl->t));
@@ -355,6 +358,7 @@
case IP: L(tl, vcc_Cond_Ip(vp, tl)); break;
case STRING: L(tl, Cond_String(vp, tl)); break;
case TIME: L(tl, Cond_Int(vp, tl)); break;
+ case RTIME: L(tl, Cond_Int(vp, tl)); break;
case BACKEND: L(tl, Cond_Backend(vp, tl)); break;
default:
vsb_printf(tl->sb,
Modified: trunk/varnish-cache/lib/libvcl/vcc_string.c
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_string.c 2010-01-06 17:38:53 UTC (rev 4427)
+++ trunk/varnish-cache/lib/libvcl/vcc_string.c 2010-01-06 17:38:59 UTC (rev 4428)
@@ -171,6 +171,12 @@
case FLOAT:
Fb(tl, 0, "VRT_double_string(sp, %s)", vp->rname);
break;
+ case TIME:
+ Fb(tl, 0, "VRT_time_string(sp, %s)", vp->rname);
+ break;
+ case RTIME:
+ Fb(tl, 0, "VRT_double_string(sp, %s)", vp->rname);
+ break;
case BACKEND:
Fb(tl, 0, "VRT_backend_string(sp)");
break;
More information about the varnish-commit
mailing list