Re: [PATCH BlueZ] unit/test-gatt: Use tester framework

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Thu, Feb 19, 2015 at 11:41 AM, Luiz Augusto von Dentz
<luiz.dentz@xxxxxxxxx> wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>
>
> Our tester framework actually produces much better output.
> ---
>  unit/test-gatt.c | 106 +++++++++++++++++++------------------------------------
>  1 file changed, 36 insertions(+), 70 deletions(-)
>
> diff --git a/unit/test-gatt.c b/unit/test-gatt.c
> index 2be4c87..3ab5340 100644
> --- a/unit/test-gatt.c
> +++ b/unit/test-gatt.c
> @@ -44,6 +44,7 @@
>  #include "src/shared/gatt-db.h"
>  #include "src/shared/gatt-server.h"
>  #include "src/shared/gatt-client.h"
> +#include "src/shared/tester.h"
>
>  struct test_pdu {
>         bool valid;
> @@ -67,7 +68,6 @@ struct test_data {
>  };
>
>  struct context {
> -       GMainLoop *main_loop;
>         struct bt_gatt_client *client;
>         struct bt_gatt_server *server;
>         struct bt_att *att;
> @@ -103,7 +103,7 @@ struct context {
>                 data.source_db = db;                                    \
>                 data.pdu_list = g_malloc(sizeof(pdus));                 \
>                 memcpy(data.pdu_list, pdus, sizeof(pdus));              \
> -               g_test_add_data_func(name, &data, function);            \
> +               tester_add(name, &data, NULL, function, NULL);          \
>         } while (0)
>
>  #define define_test_att(name, function, bt_uuid, test_step, args...)   \
> @@ -272,6 +272,23 @@ struct test_step {
>         uint16_t length;
>  };
>
> +static void destroy_context(struct context *context)
> +{
> +       if (context->source > 0)
> +               g_source_remove(context->source);
> +
> +       bt_gatt_client_unref(context->client);
> +       bt_gatt_server_unref(context->server);
> +       gatt_db_unref(context->client_db);
> +       gatt_db_unref(context->server_db);
> +
> +       if (context->att)
> +               bt_att_unref(context->att);
> +
> +       test_free(context->data);
> +       g_free(context);
> +}
> +
>  static gboolean context_quit(gpointer user_data)
>  {
>         struct context *context = user_data;
> @@ -280,11 +297,13 @@ static gboolean context_quit(gpointer user_data)
>         if (context->process > 0)
>                 g_source_remove(context->process);
>
> -       g_main_loop_quit(context->main_loop);
> -
>         if (step && step->post_func)
>                 step->post_func(context);
>
> +       destroy_context(context);
> +
> +       tester_test_passed();
> +
>         return FALSE;
>  }
>
> @@ -292,7 +311,7 @@ static void test_debug(const char *str, void *user_data)
>  {
>         const char *prefix = user_data;
>
> -       g_print("%s%s\n", prefix, str);
> +       tester_debug("%s%s", prefix, str);
>  }
>
>  static gboolean send_pdu(gpointer user_data)
> @@ -305,8 +324,7 @@ static gboolean send_pdu(gpointer user_data)
>
>         len = write(context->fd, pdu->data, pdu->size);
>
> -       if (g_test_verbose())
> -               util_hexdump('<', pdu->data, len, test_debug, "GATT: ");
> +       util_hexdump('<', pdu->data, len, test_debug, "GATT: ");
>
>         g_assert_cmpint(len, ==, pdu->size);
>
> @@ -314,8 +332,7 @@ static gboolean send_pdu(gpointer user_data)
>
>         pdu = &context->data->pdu_list[context->pdu_offset];
>         if (pdu->valid && (pdu->size == 0)) {
> -               if (g_test_verbose())
> -                       test_debug("(no action expected)", "GATT: ");
> +               test_debug("(no action expected)", "GATT: ");
>                 context->pdu_offset++;
>                 return send_pdu(context);
>         }
> @@ -358,8 +375,7 @@ static gboolean test_handler(GIOChannel *channel, GIOCondition cond,
>
>         g_assert(len > 0);
>
> -       if (g_test_verbose())
> -               util_hexdump('>', buf, len, test_debug, "GATT: ");
> +       util_hexdump('>', buf, len, test_debug, "GATT: ");
>
>         g_assert_cmpint(len, ==, pdu->size);
>
> @@ -370,9 +386,7 @@ static gboolean test_handler(GIOChannel *channel, GIOCondition cond,
>
>         if (pdu->valid && (pdu->size == 0)) {
>                 context->pdu_offset++;
> -               if (g_test_verbose())
> -                       test_debug("triggering server action",
> -                                                       "Empty client pdu: ");
> +               test_debug("triggering server action", "Empty client pdu: ");
>                 g_assert(step && step->func);
>                 step->func(context);
>                 return TRUE;
> @@ -387,7 +401,7 @@ static void print_debug(const char *str, void *user_data)
>  {
>         const char *prefix = user_data;
>
> -       g_print("%s%s\n", prefix, str);
> +       tester_debug("%s%s", prefix, str);
>  }
>
>  struct db_attribute_test_data {
> @@ -566,9 +580,6 @@ static struct context *create_context(uint16_t mtu, gconstpointer data)
>         int err, sv[2];
>         struct bt_att *att;
>
> -       context->main_loop = g_main_loop_new(NULL, FALSE);
> -       g_assert(context->main_loop);
> -
>         err = socketpair(AF_UNIX, SOCK_SEQPACKET | SOCK_CLOEXEC, 0, sv);
>         g_assert(err == 0);
>
> @@ -579,9 +590,7 @@ static struct context *create_context(uint16_t mtu, gconstpointer data)
>         case ATT:
>                 context->att = att;
>
> -               if (g_test_verbose())
> -                       bt_att_set_debug(context->att, print_debug, "bt_att:",
> -                                                                       NULL);
> +               bt_att_set_debug(context->att, print_debug, "bt_att:", NULL);
>
>                 bt_gatt_exchange_mtu(context->att, mtu, NULL, NULL, NULL);
>                 break;
> @@ -593,8 +602,7 @@ static struct context *create_context(uint16_t mtu, gconstpointer data)
>                                                                         mtu);
>                 g_assert(context->server);
>
> -               if (g_test_verbose())
> -                       bt_gatt_server_set_debug(context->server, print_debug,
> +               bt_gatt_server_set_debug(context->server, print_debug,
>                                                 "bt_gatt_server:", NULL);
>                 bt_att_unref(att);
>                 break;
> @@ -606,8 +614,7 @@ static struct context *create_context(uint16_t mtu, gconstpointer data)
>                                                                         mtu);
>                 g_assert(context->client);
>
> -               if (g_test_verbose())
> -                       bt_gatt_client_set_debug(context->client, print_debug,
> +               bt_gatt_client_set_debug(context->client, print_debug,
>                                                 "bt_gatt_client:", NULL);
>
>                 bt_gatt_client_set_ready_handler(context->client,
> @@ -649,32 +656,6 @@ static void generic_search_cb(bool success, uint8_t att_ecode,
>         context_quit(context);
>  }
>
> -static void destroy_context(struct context *context)
> -{
> -       if (context->source > 0)
> -               g_source_remove(context->source);
> -
> -       bt_gatt_client_unref(context->client);
> -       bt_gatt_server_unref(context->server);
> -       gatt_db_unref(context->client_db);
> -       gatt_db_unref(context->server_db);
> -
> -       if (context->att)
> -               bt_att_unref(context->att);
> -
> -       g_main_loop_unref(context->main_loop);
> -
> -       test_free(context->data);
> -       g_free(context);
> -}
> -
> -static void execute_context(struct context *context)
> -{
> -       g_main_loop_run(context->main_loop);
> -
> -       destroy_context(context);
> -}
> -
>  static void test_read_cb(bool success, uint8_t att_ecode,
>                                         const uint8_t *value, uint16_t length,
>                                         void *user_data)
> @@ -1339,9 +1320,7 @@ static struct gatt_db *make_test_spec_large_db_1(void)
>
>  static void test_client(gconstpointer data)
>  {
> -       struct context *context = create_context(512, data);
> -
> -       execute_context(context);
> +       create_context(512, data);
>  }
>
>  static void test_server(gconstpointer data)
> @@ -1354,10 +1333,7 @@ static void test_server(gconstpointer data)
>
>         g_assert_cmpint(len, ==, pdu.size);
>
> -       if (g_test_verbose())
> -               util_hexdump('<', pdu.data, len, test_debug, "GATT: ");
> -
> -       execute_context(context);
> +       util_hexdump('<', pdu.data, len, test_debug, "GATT: ");
>  }
>
>  static void test_search_primary(gconstpointer data)
> @@ -1368,8 +1344,6 @@ static void test_search_primary(gconstpointer data)
>         bt_gatt_discover_all_primary_services(context->att, test_data->uuid,
>                                                         generic_search_cb,
>                                                         context, NULL);
> -
> -       execute_context(context);
>  }
>
>  static void test_search_included(gconstpointer data)
> @@ -1379,8 +1353,6 @@ static void test_search_included(gconstpointer data)
>         bt_gatt_discover_included_services(context->att, 0x0001, 0xffff,
>                                                         generic_search_cb,
>                                                         context, NULL);
> -
> -       execute_context(context);
>  }
>
>  static void test_search_chars(gconstpointer data)
> @@ -1390,8 +1362,6 @@ static void test_search_chars(gconstpointer data)
>         g_assert(bt_gatt_discover_characteristics(context->att, 0x0010, 0x0020,
>                                                         generic_search_cb,
>                                                         context, NULL));
> -
> -       execute_context(context);
>  }
>
>  static void test_search_descs(gconstpointer data)
> @@ -1401,8 +1371,6 @@ static void test_search_descs(gconstpointer data)
>         g_assert(bt_gatt_discover_descriptors(context->att, 0x0013, 0x0016,
>                                                         generic_search_cb,
>                                                         context, NULL));
> -
> -       execute_context(context);
>  }
>
>  static const struct test_step test_read_by_type_1 = {
> @@ -1552,8 +1520,6 @@ static void test_read_by_type(gconstpointer data)
>         g_assert(bt_gatt_read_by_type(context->att, step->handle,
>                                         step->end_handle, test_data->uuid,
>                                         read_by_type_cb, context, NULL));
> -
> -       execute_context(context);
>  }
>
>  static void test_long_read(struct context *context)
> @@ -1788,7 +1754,7 @@ int main(int argc, char *argv[])
>  {
>         struct gatt_db *service_db_1, *ts_small_db, *ts_large_db_1;
>
> -       g_test_init(&argc, &argv, NULL);
> +       tester_init(&argc, &argv);
>
>         service_db_1 = make_service_data_1_db();
>         ts_small_db = make_test_spec_small_db();
> @@ -2879,5 +2845,5 @@ int main(int argc, char *argv[])
>                         raw_pdu(0x0a, 0x03, 0x00),
>                         raw_pdu(0x01, 0x0a, 0x03, 0x00, 0x80));
>
> -       return g_test_run();
> +       return tester_run();
>  }
> --
> 2.1.0

Applied.


-- 
Luiz Augusto von Dentz
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux