Commit 0a92f869 authored by Geoff Simmons's avatar Geoff Simmons

implement and test formatters for %q

parent daa6c31d
...@@ -335,25 +335,28 @@ format_O_backend(tx_t *tx, char *name, enum VSL_tag_e tag, char **s, ...@@ -335,25 +335,28 @@ format_O_backend(tx_t *tx, char *name, enum VSL_tag_e tag, char **s,
format_IO_backend(tx, 2, s, len); format_IO_backend(tx, 2, s, len);
} }
#if 0 #define FORMAT_q(dir, xurl) \
void \
#define FORMAT_q(dir, xurl) \ format_q_##dir(tx_t *tx, char *name, enum VSL_tag_e tag, \
static void \ char **s, size_t *len) \
format_q_##dir(logline_t *ll, char *name, enum VSL_tag_e tag, \ { \
char **s, size_t *len) \ char *qs = NULL; \
{ \ (void) name; \
(void) name; \ (void) tag; \
(void) tag; \ \
char *qs = NULL; \ logline_t *rec = get_tag(tx, SLT_##xurl); \
qs = memchr(TAG(ll,SLT_##xurl).data, '?', TAG(ll,SLT_##xurl).len); \ get_payload(rec); \
if (qs != NULL) { \ qs = memchr(VSB_data(payload), '?', rec->len); \
*s = qs + 1; \ if (qs != NULL) { \
*len = TAG(ll,SLT_##xurl).len - (qs - TAG(ll,SLT_##xurl).data - 1); \ *s = qs + 1; \
} \ *len = rec->len - (*s - VSB_data(payload)); \
} \
} }
FORMAT_q(client, RxURL) FORMAT_q(client, ReqURL)
FORMAT_q(backend, TxURL) FORMAT_q(backend, BereqURL)
#if 0
#define FORMAT_r(dir, dx, hx) \ #define FORMAT_r(dir, dx, hx) \
static void \ static void \
......
...@@ -74,3 +74,6 @@ formatter_f format_m_backend; ...@@ -74,3 +74,6 @@ formatter_f format_m_backend;
formatter_f format_O_client; formatter_f format_O_client;
formatter_f format_O_backend; formatter_f format_O_backend;
formatter_f format_q_client;
formatter_f format_q_backend;
...@@ -587,6 +587,47 @@ static const char ...@@ -587,6 +587,47 @@ static const char
return NULL; return NULL;
} }
static const char
*test_format_q(void)
{
tx_t tx;
logline_t rec;
chunk_t chunk;
char *str;
size_t len;
printf("... testing format_q_*()\n");
init_tx_rec_chunk(&tx, &rec, &chunk);
MAN(chunk.data);
#define URL_QUERY_PAYLOAD "/foo?bar=baz&quux=wilco"
set_record_data(&rec, &chunk, URL_QUERY_PAYLOAD, SLT_ReqURL);
format_q_client(&tx, NULL, SLT__Bogus, &str, &len);
MASSERT(strcmp(str, "bar=baz&quux=wilco") == 0);
MASSERT(len == 18);
rec.tag = SLT_BereqURL;
format_q_backend(&tx, NULL, SLT__Bogus, &str, &len);
MASSERT(strcmp(str, "bar=baz&quux=wilco") == 0);
MASSERT(len == 18);
#define URL_PAYLOAD "/foo"
set_record_data(&rec, &chunk, URL_PAYLOAD, SLT_ReqURL);
str = NULL;
len = 0;
format_q_client(&tx, NULL, SLT__Bogus, &str, &len);
MAZ(str);
MAZ(len);
rec.tag = SLT_BereqURL;
format_q_backend(&tx, NULL, SLT__Bogus, &str, &len);
MAZ(str);
MAZ(len);
return NULL;
}
static const char static const char
*all_tests(void) *all_tests(void)
{ {
...@@ -604,6 +645,7 @@ static const char ...@@ -604,6 +645,7 @@ static const char
mu_run_test(test_format_I); mu_run_test(test_format_I);
mu_run_test(test_format_m); mu_run_test(test_format_m);
mu_run_test(test_format_O); mu_run_test(test_format_O);
mu_run_test(test_format_q);
return NULL; return NULL;
} }
......
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