qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 1/2] tests: refactor file monitor test to make i


From: Marc-André Lureau
Subject: Re: [Qemu-devel] [PATCH 1/2] tests: refactor file monitor test to make it more understandable
Date: Mon, 18 Mar 2019 12:02:24 +0100

Hi

On Thu, Mar 14, 2019 at 4:26 PM Daniel P. Berrangé <address@hidden> wrote:
>
> The current file monitor unit tests are too clever for their own good
> making it hard to understand the desired output.
>
> Instead of trying to infer the expected events, explicitly list the
> events we expect in the operation sequence.
>
> Instead of dynamically building a matrix of tests, just have one giant
> operation sequence that validates all scenarios in a single test.
>
> Signed-off-by: Daniel P. Berrangé <address@hidden>


Reviewed-by: Marc-André Lureau <address@hidden>

> ---
>  tests/test-util-filemonitor.c | 534 +++++++++++++---------------------
>  1 file changed, 208 insertions(+), 326 deletions(-)
>
> diff --git a/tests/test-util-filemonitor.c b/tests/test-util-filemonitor.c
> index 5d95cea5ee..ea3715a8f4 100644
> --- a/tests/test-util-filemonitor.c
> +++ b/tests/test-util-filemonitor.c
> @@ -26,6 +26,9 @@
>  #include <utime.h>
>
>  enum {
> +    QFILE_MONITOR_TEST_OP_ADD_WATCH,
> +    QFILE_MONITOR_TEST_OP_DEL_WATCH,
> +    QFILE_MONITOR_TEST_OP_EVENT,
>      QFILE_MONITOR_TEST_OP_CREATE,
>      QFILE_MONITOR_TEST_OP_APPEND,
>      QFILE_MONITOR_TEST_OP_TRUNC,
> @@ -38,20 +41,10 @@ typedef struct {
>      int type;
>      const char *filesrc;
>      const char *filedst;
> +    int watchid;
> +    int eventid;
>  } QFileMonitorTestOp;
>
> -typedef struct {
> -    const char *file;
> -} QFileMonitorTestWatch;
> -
> -typedef struct {
> -    gsize nwatches;
> -    const QFileMonitorTestWatch *watches;
> -
> -    gsize nops;
> -    const QFileMonitorTestOp *ops;
> -} QFileMonitorTestPlan;
> -
>  typedef struct {
>      int id;
>      QFileMonitorEvent event;
> @@ -67,6 +60,7 @@ typedef struct {
>  static QemuMutex evlock;
>  static bool evstopping;
>  static bool evrunning;
> +static bool debug;
>
>  /*
>   * Main function for a background thread that is
> @@ -200,9 +194,125 @@ qemu_file_monitor_test_expect(QFileMonitorTestData 
> *data,
>
>
>  static void
> -test_file_monitor_events(const void *opaque)
> +test_file_monitor_events(void)
>  {
> -    const QFileMonitorTestPlan *plan = opaque;
> +    QFileMonitorTestOp ops[] = {
> +        { .type = QFILE_MONITOR_TEST_OP_ADD_WATCH,
> +          .filesrc = NULL, .watchid = 0 },
> +        { .type = QFILE_MONITOR_TEST_OP_ADD_WATCH,
> +          .filesrc = "one.txt", .watchid = 1 },
> +        { .type = QFILE_MONITOR_TEST_OP_ADD_WATCH,
> +          .filesrc = "two.txt", .watchid = 2 },
> +
> +
> +        { .type = QFILE_MONITOR_TEST_OP_CREATE,
> +          .filesrc = "one.txt", },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "one.txt", .watchid = 0,
> +          .eventid = QFILE_MONITOR_EVENT_CREATED },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "one.txt", .watchid = 1,
> +          .eventid = QFILE_MONITOR_EVENT_CREATED },
> +
> +
> +        { .type = QFILE_MONITOR_TEST_OP_CREATE,
> +          .filesrc = "two.txt", },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "two.txt", .watchid = 0,
> +          .eventid = QFILE_MONITOR_EVENT_CREATED },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "two.txt", .watchid = 2,
> +          .eventid = QFILE_MONITOR_EVENT_CREATED },
> +
> +
> +        { .type = QFILE_MONITOR_TEST_OP_CREATE,
> +          .filesrc = "three.txt", },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "three.txt", .watchid = 0,
> +          .eventid = QFILE_MONITOR_EVENT_CREATED },
> +
> +
> +        { .type = QFILE_MONITOR_TEST_OP_UNLINK,
> +          .filesrc = "three.txt", },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "three.txt", .watchid = 0,
> +          .eventid = QFILE_MONITOR_EVENT_DELETED },
> +
> +
> +        { .type = QFILE_MONITOR_TEST_OP_RENAME,
> +          .filesrc = "one.txt", .filedst = "two.txt" },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "one.txt", .watchid = 0,
> +          .eventid = QFILE_MONITOR_EVENT_DELETED },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "one.txt", .watchid = 1,
> +          .eventid = QFILE_MONITOR_EVENT_DELETED },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "two.txt", .watchid = 0,
> +          .eventid = QFILE_MONITOR_EVENT_CREATED },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "two.txt", .watchid = 2,
> +          .eventid = QFILE_MONITOR_EVENT_CREATED },
> +
> +
> +        { .type = QFILE_MONITOR_TEST_OP_APPEND,
> +          .filesrc = "two.txt", },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "two.txt", .watchid = 0,
> +          .eventid = QFILE_MONITOR_EVENT_MODIFIED },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "two.txt", .watchid = 2,
> +          .eventid = QFILE_MONITOR_EVENT_MODIFIED },
> +
> +
> +        { .type = QFILE_MONITOR_TEST_OP_TOUCH,
> +          .filesrc = "two.txt", },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "two.txt", .watchid = 0,
> +          .eventid = QFILE_MONITOR_EVENT_ATTRIBUTES },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "two.txt", .watchid = 2,
> +          .eventid = QFILE_MONITOR_EVENT_ATTRIBUTES },
> +
> +
> +        { .type = QFILE_MONITOR_TEST_OP_DEL_WATCH,
> +          .filesrc = "one.txt", .watchid = 1 },
> +        { .type = QFILE_MONITOR_TEST_OP_ADD_WATCH,
> +          .filesrc = "one.txt", .watchid = 3 },
> +        { .type = QFILE_MONITOR_TEST_OP_CREATE,
> +          .filesrc = "one.txt", },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "one.txt", .watchid = 0,
> +          .eventid = QFILE_MONITOR_EVENT_CREATED },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "one.txt", .watchid = 3,
> +          .eventid = QFILE_MONITOR_EVENT_CREATED },
> +
> +
> +        { .type = QFILE_MONITOR_TEST_OP_DEL_WATCH,
> +          .filesrc = "one.txt", .watchid = 3 },
> +        { .type = QFILE_MONITOR_TEST_OP_UNLINK,
> +          .filesrc = "one.txt", },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "one.txt", .watchid = 0,
> +          .eventid = QFILE_MONITOR_EVENT_DELETED },
> +
> +
> +        { .type = QFILE_MONITOR_TEST_OP_UNLINK,
> +          .filesrc = "two.txt", },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "two.txt", .watchid = 0,
> +          .eventid = QFILE_MONITOR_EVENT_DELETED },
> +        { .type = QFILE_MONITOR_TEST_OP_EVENT,
> +          .filesrc = "two.txt", .watchid = 2,
> +          .eventid = QFILE_MONITOR_EVENT_DELETED },
> +
> +
> +        { .type = QFILE_MONITOR_TEST_OP_DEL_WATCH,
> +          .filesrc = "two.txt", .watchid = 2 },
> +        { .type = QFILE_MONITOR_TEST_OP_DEL_WATCH,
> +          .filesrc = NULL, .watchid = 0 },
> +    };
>      Error *local_err = NULL;
>      GError *gerr = NULL;
>      QFileMonitor *mon = qemu_file_monitor_new(&local_err);
> @@ -210,7 +320,7 @@ test_file_monitor_events(const void *opaque)
>      GTimer *timer;
>      gchar *dir = NULL;
>      int err = -1;
> -    gsize i, j;
> +    gsize i;
>      char *pathsrc = NULL;
>      char *pathdst = NULL;
>      QFileMonitorTestData data;
> @@ -248,33 +358,13 @@ test_file_monitor_events(const void *opaque)
>      }
>
>      /*
> -     * First register all the directory / file watches
> -     * we're interested in seeing events against
> +     * Run through the operation sequence validating events
> +     * as we go
>       */
> -    for (i = 0; i < plan->nwatches; i++) {
> -        int watchid;
> -        watchid = qemu_file_monitor_add_watch(mon,
> -                                              dir,
> -                                              plan->watches[i].file,
> -                                              qemu_file_monitor_test_handler,
> -                                              &data,
> -                                              &local_err);
> -        if (watchid < 0) {
> -            g_printerr("Unable to add watch %s",
> -                       error_get_pretty(local_err));
> -            goto cleanup;
> -        }
> -    }
> -
> -
> -    /*
> -     * Now invoke all the file operations (create,
> -     * delete, rename, chmod, etc). These operations
> -     * will trigger the various file monitor events
> -     */
> -    for (i = 0; i < plan->nops; i++) {
> -        const QFileMonitorTestOp *op = &(plan->ops[i]);
> +    for (i = 0; i < G_N_ELEMENTS(ops); i++) {
> +        const QFileMonitorTestOp *op = &(ops[i]);
>          int fd;
> +        int watchid;
>          struct utimbuf ubuf;
>
>          pathsrc = g_strdup_printf("%s/%s", dir, op->filesrc);
> @@ -283,7 +373,50 @@ test_file_monitor_events(const void *opaque)
>          }
>
>          switch (op->type) {
> +        case QFILE_MONITOR_TEST_OP_ADD_WATCH:
> +            if (debug) {
> +                g_printerr("Add watch %s %s %d\n",
> +                           dir, op->filesrc, op->watchid);
> +            }
> +            watchid =
> +                qemu_file_monitor_add_watch(mon,
> +                                            dir,
> +                                            op->filesrc,
> +                                            qemu_file_monitor_test_handler,
> +                                            &data,
> +                                            &local_err);
> +            if (watchid < 0) {
> +                g_printerr("Unable to add watch %s",
> +                           error_get_pretty(local_err));
> +                goto cleanup;
> +            }
> +            if (watchid != op->watchid) {
> +                g_printerr("Unexpected watch ID %d, wanted %d\n",
> +                           watchid, op->watchid);
> +                goto cleanup;
> +            }
> +            break;
> +        case QFILE_MONITOR_TEST_OP_DEL_WATCH:
> +            if (debug) {
> +                g_printerr("Del watch %s %d\n", dir, op->watchid);
> +            }
> +            qemu_file_monitor_remove_watch(mon,
> +                                           dir,
> +                                           op->watchid);
> +            break;
> +        case QFILE_MONITOR_TEST_OP_EVENT:
> +            if (debug) {
> +                g_printerr("Event id=%d event=%d file=%s\n",
> +                           op->watchid, op->eventid, op->filesrc);
> +            }
> +            if (!qemu_file_monitor_test_expect(
> +                    &data, op->watchid, op->eventid, op->filesrc))
> +                goto cleanup;
> +            break;
>          case QFILE_MONITOR_TEST_OP_CREATE:
> +            if (debug) {
> +                g_printerr("Create %s\n", pathsrc);
> +            }
>              fd = open(pathsrc, O_WRONLY | O_CREAT, 0700);
>              if (fd < 0) {
>                  g_printerr("Unable to create %s: %s",
> @@ -294,6 +427,9 @@ test_file_monitor_events(const void *opaque)
>              break;
>
>          case QFILE_MONITOR_TEST_OP_APPEND:
> +            if (debug) {
> +                g_printerr("Append %s\n", pathsrc);
> +            }
>              fd = open(pathsrc, O_WRONLY | O_APPEND, 0700);
>              if (fd < 0) {
>                  g_printerr("Unable to open %s: %s",
> @@ -311,6 +447,9 @@ test_file_monitor_events(const void *opaque)
>              break;
>
>          case QFILE_MONITOR_TEST_OP_TRUNC:
> +            if (debug) {
> +                g_printerr("Truncate %s\n", pathsrc);
> +            }
>              if (truncate(pathsrc, 4) < 0) {
>                  g_printerr("Unable to truncate %s: %s",
>                             pathsrc, strerror(errno));
> @@ -319,6 +458,9 @@ test_file_monitor_events(const void *opaque)
>              break;
>
>          case QFILE_MONITOR_TEST_OP_RENAME:
> +            if (debug) {
> +                g_printerr("Rename %s -> %s\n", pathsrc, pathdst);
> +            }
>              if (rename(pathsrc, pathdst) < 0) {
>                  g_printerr("Unable to rename %s to %s: %s",
>                             pathsrc, pathdst, strerror(errno));
> @@ -327,6 +469,9 @@ test_file_monitor_events(const void *opaque)
>              break;
>
>          case QFILE_MONITOR_TEST_OP_UNLINK:
> +            if (debug) {
> +                g_printerr("Unlink %s\n", pathsrc);
> +            }
>              if (unlink(pathsrc) < 0) {
>                  g_printerr("Unable to unlink %s: %s",
>                             pathsrc, strerror(errno));
> @@ -335,6 +480,9 @@ test_file_monitor_events(const void *opaque)
>              break;
>
>          case QFILE_MONITOR_TEST_OP_TOUCH:
> +            if (debug) {
> +                g_printerr("Touch %s\n", pathsrc);
> +            }
>              ubuf.actime = 1024;
>              ubuf.modtime = 1025;
>              if (utime(pathsrc, &ubuf) < 0) {
> @@ -353,92 +501,6 @@ test_file_monitor_events(const void *opaque)
>          pathsrc = pathdst = NULL;
>      }
>
> -
> -    /*
> -     * Finally validate that we have received all the events
> -     * we expect to see for the combination of watches and
> -     * file operations
> -     */
> -    for (i = 0; i < plan->nops; i++) {
> -        const QFileMonitorTestOp *op = &(plan->ops[i]);
> -
> -        switch (op->type) {
> -        case QFILE_MONITOR_TEST_OP_CREATE:
> -            for (j = 0; j < plan->nwatches; j++) {
> -                if (plan->watches[j].file &&
> -                    !g_str_equal(plan->watches[j].file, op->filesrc))
> -                    continue;
> -
> -                if (!qemu_file_monitor_test_expect(
> -                        &data, j, QFILE_MONITOR_EVENT_CREATED, op->filesrc))
> -                    goto cleanup;
> -            }
> -            break;
> -
> -        case QFILE_MONITOR_TEST_OP_APPEND:
> -        case QFILE_MONITOR_TEST_OP_TRUNC:
> -            for (j = 0; j < plan->nwatches; j++) {
> -                if (plan->watches[j].file &&
> -                    !g_str_equal(plan->watches[j].file, op->filesrc))
> -                    continue;
> -
> -                if (!qemu_file_monitor_test_expect(
> -                        &data, j, QFILE_MONITOR_EVENT_MODIFIED, op->filesrc))
> -                    goto cleanup;
> -            }
> -            break;
> -
> -        case QFILE_MONITOR_TEST_OP_RENAME:
> -            for (j = 0; j < plan->nwatches; j++) {
> -                if (plan->watches[j].file &&
> -                    !g_str_equal(plan->watches[j].file, op->filesrc))
> -                    continue;
> -
> -                if (!qemu_file_monitor_test_expect(
> -                        &data, j, QFILE_MONITOR_EVENT_DELETED, op->filesrc))
> -                    goto cleanup;
> -            }
> -
> -            for (j = 0; j < plan->nwatches; j++) {
> -                if (plan->watches[j].file &&
> -                    !g_str_equal(plan->watches[j].file, op->filedst))
> -                    continue;
> -
> -                if (!qemu_file_monitor_test_expect(
> -                        &data, j, QFILE_MONITOR_EVENT_CREATED, op->filedst))
> -                    goto cleanup;
> -            }
> -            break;
> -
> -        case QFILE_MONITOR_TEST_OP_TOUCH:
> -            for (j = 0; j < plan->nwatches; j++) {
> -                if (plan->watches[j].file &&
> -                    !g_str_equal(plan->watches[j].file, op->filesrc))
> -                    continue;
> -
> -                if (!qemu_file_monitor_test_expect(
> -                        &data, j, QFILE_MONITOR_EVENT_ATTRIBUTES, 
> op->filesrc))
> -                    goto cleanup;
> -            }
> -            break;
> -
> -        case QFILE_MONITOR_TEST_OP_UNLINK:
> -            for (j = 0; j < plan->nwatches; j++) {
> -                if (plan->watches[j].file &&
> -                    !g_str_equal(plan->watches[j].file, op->filesrc))
> -                    continue;
> -
> -                if (!qemu_file_monitor_test_expect(
> -                        &data, j, QFILE_MONITOR_EVENT_DELETED, op->filesrc))
> -                    goto cleanup;
> -            }
> -            break;
> -
> -        default:
> -            g_assert_not_reached();
> -        }
> -    }
> -
>      err = 0;
>
>   cleanup:
> @@ -460,171 +522,36 @@ test_file_monitor_events(const void *opaque)
>      }
>      g_timer_destroy(timer);
>
> -    for (i = 0; i < plan->nops; i++) {
> -        const QFileMonitorTestOp *op = &(plan->ops[i]);
> -        pathsrc = g_strdup_printf("%s/%s", dir, op->filesrc);
> -        unlink(pathsrc);
> -        g_free(pathsrc);
> -        if (op->filedst) {
> -            pathdst = g_strdup_printf("%s/%s", dir, op->filedst);
> -            unlink(pathdst);
> -            g_free(pathdst);
> -        }
> -    }
> -
>      qemu_file_monitor_free(mon);
>      g_list_foreach(data.records,
>                     (GFunc)qemu_file_monitor_test_record_free, NULL);
>      g_list_free(data.records);
>      qemu_mutex_destroy(&data.lock);
>      if (dir) {
> -        rmdir(dir);
> +        for (i = 0; i < G_N_ELEMENTS(ops); i++) {
> +            const QFileMonitorTestOp *op = &(ops[i]);
> +            char *path = g_strdup_printf("%s/%s",
> +                                         dir, op->filesrc);
> +            unlink(path);
> +            g_free(path);
> +            if (op->filedst) {
> +                path = g_strdup_printf("%s/%s",
> +                                       dir, op->filedst);
> +                unlink(path);
> +                g_free(path);
> +            }
> +        }
> +        if (rmdir(dir) < 0) {
> +            g_printerr("Failed to remove %s: %s\n",
> +                       dir, strerror(errno));
> +            abort();
> +        }
>      }
>      g_free(dir);
>      g_assert(err == 0);
>  }
>
>
> -/*
> - * Set of structs which define which file name patterns
> - * we're trying to watch against. NULL, means all files
> - * in the directory
> - */
> -static const QFileMonitorTestWatch watches_any[] = {
> -    { NULL },
> -};
> -
> -static const QFileMonitorTestWatch watches_one[] = {
> -    { "one.txt" },
> -};
> -
> -static const QFileMonitorTestWatch watches_two[] = {
> -    { "two.txt" },
> -};
> -
> -static const QFileMonitorTestWatch watches_many[] = {
> -    { NULL },
> -    { "one.txt" },
> -    { "two.txt" },
> -};
> -
> -
> -/*
> - * Various sets of file operations we're going to
> - * trigger and validate events for
> - */
> -static const QFileMonitorTestOp ops_create_one[] = {
> -    { .type = QFILE_MONITOR_TEST_OP_CREATE,
> -      .filesrc = "one.txt", }
> -};
> -
> -static const QFileMonitorTestOp ops_delete_one[] = {
> -    { .type = QFILE_MONITOR_TEST_OP_CREATE,
> -      .filesrc = "one.txt", },
> -    { .type = QFILE_MONITOR_TEST_OP_UNLINK,
> -      .filesrc = "one.txt", }
> -};
> -
> -static const QFileMonitorTestOp ops_create_many[] = {
> -    { .type = QFILE_MONITOR_TEST_OP_CREATE,
> -      .filesrc = "one.txt", },
> -    { .type = QFILE_MONITOR_TEST_OP_CREATE,
> -      .filesrc = "two.txt", },
> -    { .type = QFILE_MONITOR_TEST_OP_CREATE,
> -      .filesrc = "three.txt", }
> -};
> -
> -static const QFileMonitorTestOp ops_rename_one[] = {
> -    { .type = QFILE_MONITOR_TEST_OP_CREATE,
> -      .filesrc = "one.txt", },
> -    { .type = QFILE_MONITOR_TEST_OP_RENAME,
> -      .filesrc = "one.txt", .filedst = "two.txt" }
> -};
> -
> -static const QFileMonitorTestOp ops_rename_many[] = {
> -    { .type = QFILE_MONITOR_TEST_OP_CREATE,
> -      .filesrc = "one.txt", },
> -    { .type = QFILE_MONITOR_TEST_OP_CREATE,
> -      .filesrc = "two.txt", },
> -    { .type = QFILE_MONITOR_TEST_OP_RENAME,
> -      .filesrc = "one.txt", .filedst = "two.txt" }
> -};
> -
> -static const QFileMonitorTestOp ops_append_one[] = {
> -    { .type = QFILE_MONITOR_TEST_OP_CREATE,
> -      .filesrc = "one.txt", },
> -    { .type = QFILE_MONITOR_TEST_OP_APPEND,
> -      .filesrc = "one.txt", },
> -};
> -
> -static const QFileMonitorTestOp ops_trunc_one[] = {
> -    { .type = QFILE_MONITOR_TEST_OP_CREATE,
> -      .filesrc = "one.txt", },
> -    { .type = QFILE_MONITOR_TEST_OP_TRUNC,
> -      .filesrc = "one.txt", },
> -};
> -
> -static const QFileMonitorTestOp ops_touch_one[] = {
> -    { .type = QFILE_MONITOR_TEST_OP_CREATE,
> -      .filesrc = "one.txt", },
> -    { .type = QFILE_MONITOR_TEST_OP_TOUCH,
> -      .filesrc = "one.txt", },
> -};
> -
> -
> -/*
> - * No we define data sets for the combinatorial
> - * expansion of file watches and operation sets
> - */
> -#define PLAN_DATA(o, w) \
> -    static const QFileMonitorTestPlan plan_ ## o ## _ ## w = { \
> -        .nops = G_N_ELEMENTS(ops_ ##o), \
> -        .ops = ops_ ##o, \
> -        .nwatches = G_N_ELEMENTS(watches_ ##w), \
> -        .watches = watches_ ## w, \
> -    }
> -
> -PLAN_DATA(create_one, any);
> -PLAN_DATA(create_one, one);
> -PLAN_DATA(create_one, two);
> -PLAN_DATA(create_one, many);
> -
> -PLAN_DATA(delete_one, any);
> -PLAN_DATA(delete_one, one);
> -PLAN_DATA(delete_one, two);
> -PLAN_DATA(delete_one, many);
> -
> -PLAN_DATA(create_many, any);
> -PLAN_DATA(create_many, one);
> -PLAN_DATA(create_many, two);
> -PLAN_DATA(create_many, many);
> -
> -PLAN_DATA(rename_one, any);
> -PLAN_DATA(rename_one, one);
> -PLAN_DATA(rename_one, two);
> -PLAN_DATA(rename_one, many);
> -
> -PLAN_DATA(rename_many, any);
> -PLAN_DATA(rename_many, one);
> -PLAN_DATA(rename_many, two);
> -PLAN_DATA(rename_many, many);
> -
> -PLAN_DATA(append_one, any);
> -PLAN_DATA(append_one, one);
> -PLAN_DATA(append_one, two);
> -PLAN_DATA(append_one, many);
> -
> -PLAN_DATA(trunc_one, any);
> -PLAN_DATA(trunc_one, one);
> -PLAN_DATA(trunc_one, two);
> -PLAN_DATA(trunc_one, many);
> -
> -PLAN_DATA(touch_one, any);
> -PLAN_DATA(touch_one, one);
> -PLAN_DATA(touch_one, two);
> -PLAN_DATA(touch_one, many);
> -
> -
>  int main(int argc, char **argv)
>  {
>      g_test_init(&argc, &argv, NULL);
> @@ -633,53 +560,8 @@ int main(int argc, char **argv)
>
>      qemu_mutex_init(&evlock);
>
> -    /*
> -     * Register test cases for the combinatorial
> -     * expansion of file watches and operation sets
> -     */
> -    #define PLAN_REGISTER(o, w)                                         \
> -        g_test_add_data_func("/util/filemonitor/" # o "/" # w,          \
> -                             &plan_ ## o ## _ ## w, test_file_monitor_events)
> -
> -    PLAN_REGISTER(create_one, any);
> -    PLAN_REGISTER(create_one, one);
> -    PLAN_REGISTER(create_one, two);
> -    PLAN_REGISTER(create_one, many);
> -
> -    PLAN_REGISTER(delete_one, any);
> -    PLAN_REGISTER(delete_one, one);
> -    PLAN_REGISTER(delete_one, two);
> -    PLAN_REGISTER(delete_one, many);
> -
> -    PLAN_REGISTER(create_many, any);
> -    PLAN_REGISTER(create_many, one);
> -    PLAN_REGISTER(create_many, two);
> -    PLAN_REGISTER(create_many, many);
> -
> -    PLAN_REGISTER(rename_one, any);
> -    PLAN_REGISTER(rename_one, one);
> -    PLAN_REGISTER(rename_one, two);
> -    PLAN_REGISTER(rename_one, many);
> -
> -    PLAN_REGISTER(rename_many, any);
> -    PLAN_REGISTER(rename_many, one);
> -    PLAN_REGISTER(rename_many, two);
> -    PLAN_REGISTER(rename_many, many);
> -
> -    PLAN_REGISTER(append_one, any);
> -    PLAN_REGISTER(append_one, one);
> -    PLAN_REGISTER(append_one, two);
> -    PLAN_REGISTER(append_one, many);
> -
> -    PLAN_REGISTER(trunc_one, any);
> -    PLAN_REGISTER(trunc_one, one);
> -    PLAN_REGISTER(trunc_one, two);
> -    PLAN_REGISTER(trunc_one, many);
> -
> -    PLAN_REGISTER(touch_one, any);
> -    PLAN_REGISTER(touch_one, one);
> -    PLAN_REGISTER(touch_one, two);
> -    PLAN_REGISTER(touch_one, many);
> +    debug = getenv("FILEMONITOR_DEBUG") != NULL;
> +    g_test_add_func("/util/filemonitor", test_file_monitor_events);
>
>      return g_test_run();
>  }
> --
> 2.20.1
>
>


-- 
Marc-André Lureau



reply via email to

[Prev in Thread] Current Thread [Next in Thread]