From e290fbfbeae0a3bccf2c2dc68f5d37bc1f3c4f81 Mon Sep 17 00:00:00 2001 From: Christophe Genevey Metat Date: Mon, 13 Jun 2016 11:24:06 +0000 Subject: lcov test function --- src/my/my_result_helper.c | 31 +++++++++++++++++++++++++++---- src/my/test_my.c | 21 +++++++++++++++++++-- 2 files changed, 46 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/my/my_result_helper.c b/src/my/my_result_helper.c index 963e3f618..c0a1dff4d 100644 --- a/src/my/my_result_helper.c +++ b/src/my/my_result_helper.c @@ -501,10 +501,11 @@ pre_extract_string (void * cls, unsigned int column, MYSQL_BIND *results) { - results[0].buffer = (char *)rs->dst; - results[0].buffer_length = rs->dst_size; + results[0].buffer = NULL; + results[0].buffer_length = 0; results[0].length = &rs->mysql_bind_output_length; - + results[0].buffer_type = MYSQL_TYPE_BLOB; + return GNUNET_OK; } @@ -528,8 +529,30 @@ post_extract_string (void * cls, unsigned int column, MYSQL_BIND *results) { - if (rs->dst_size != rs->mysql_bind_output_length) + size_t size; + + size = (size_t) rs->mysql_bind_output_length; + char buf[size]; + + if (rs->mysql_bind_output_length != size) + return GNUNET_SYSERR; + + results[0].buffer = buf; + results[0].buffer_length = size; + results[0].buffer_type = MYSQL_TYPE_BLOB; + + if (0 != + mysql_stmt_fetch_column (stmt, + results, + column, + 0)) + { + GNUNET_free (buf); return GNUNET_SYSERR; + } + + rs->dst = buf; + return GNUNET_OK; } diff --git a/src/my/test_my.c b/src/my/test_my.c index 5f778ad46..3e051e467 100644 --- a/src/my/test_my.c +++ b/src/my/test_my.c @@ -46,12 +46,16 @@ run_queries (struct GNUNET_MYSQL_Context *context) struct GNUNET_TIME_Absolute abs_time2; struct GNUNET_TIME_Absolute forever = GNUNET_TIME_UNIT_FOREVER_ABS; struct GNUNET_TIME_Absolute forever2; + const struct GNUNET_TIME_AbsoluteNBO abs_time_nbo = GNUNET_TIME_absolute_hton (abs_time); struct GNUNET_HashCode hc; struct GNUNET_HashCode hc2; const char msg[] = "hello"; - void *msg2 = NULL;; + void *msg2 = NULL; size_t msg2_len; + const char msg3[] = "world"; + char *msg4 = ""; + uint16_t u16; uint16_t u162; uint32_t u32; @@ -85,13 +89,15 @@ run_queries (struct GNUNET_MYSQL_Context *context) ",sig" ",abs_time" ",forever" + ",abs_time_nbo" ",hash" ",vsize" + ",str" ",u16" ",u32" ",u64" ") VALUES " - "( ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + "( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); if (NULL == statements_handle_insert) { @@ -104,8 +110,10 @@ run_queries (struct GNUNET_MYSQL_Context *context) GNUNET_MY_query_param_rsa_signature (sig), GNUNET_MY_query_param_absolute_time (&abs_time), GNUNET_MY_query_param_absolute_time (&forever), + GNUNET_MY_query_param_absolute_time_nbo (&abs_time_nbo), GNUNET_MY_query_param_auto_from_type (&hc), GNUNET_MY_query_param_fixed_size (msg, strlen (msg)), + GNUNET_MY_query_param_string (msg3), GNUNET_MY_query_param_uint16 (&u16), GNUNET_MY_query_param_uint32 (&u32), GNUNET_MY_query_param_uint64 (&u64), @@ -128,6 +136,7 @@ run_queries (struct GNUNET_MYSQL_Context *context) ",forever" ",hash" ",vsize" + ",str" ",u16" ",u32" ",u64" @@ -158,6 +167,7 @@ run_queries (struct GNUNET_MYSQL_Context *context) GNUNET_MY_result_spec_absolute_time (&forever2), GNUNET_MY_result_spec_auto_from_type (&hc2), GNUNET_MY_result_spec_variable_size (&msg2, &msg2_len), + GNUNET_MY_result_spec_string (&msg4), GNUNET_MY_result_spec_uint16 (&u162), GNUNET_MY_result_spec_uint32 (&u322), GNUNET_MY_result_spec_uint64 (&u642), @@ -190,6 +200,11 @@ run_queries (struct GNUNET_MYSQL_Context *context) msg2, msg2_len)); +GNUNET_break (strlen (msg3) == strlen(msg4)); +GNUNET_break (0 == + strcmp (msg3, + msg4)); + GNUNET_break (16 == u162); GNUNET_break (32 == u322); GNUNET_break (64 == u642); @@ -242,8 +257,10 @@ main (int argc, const char * const argv[]) ",sig BLOB NOT NULL" ",abs_time BIGINT NOT NULL" ",forever BIGINT NOT NULL" + ",abs_time_nbo BIGINT NOT NULL" ",hash BLOB NOT NULL CHECK(LENGTH(hash)=64)" ",vsize BLOB NOT NULL" + ",str BLOB NOT NULL" ",u16 SMALLINT NOT NULL" ",u32 INT NOT NULL" ",u64 BIGINT NOT NULL" -- cgit v1.2.3