[ovs-dev] [debian 6/9] tests: Slightly generalize utility function tests.

Ansis Atteka aatteka at nicira.com
Tue Jul 31 18:09:11 UTC 2012


On Mon, Jul 30, 2012 at 3:18 PM, Ben Pfaff <blp at nicira.com> wrote:

> This will allow passing arguments in for an upcoming test.
>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
>  tests/library.at  |   15 ++++++--
>  tests/test-util.c |   90
> +++++++++++++++++++++++++++++++++-------------------
>  2 files changed, 68 insertions(+), 37 deletions(-)
>
> diff --git a/tests/library.at b/tests/library.at
> index dce69de..70660a2 100644
> --- a/tests/library.at
> +++ b/tests/library.at
> @@ -100,10 +100,17 @@ nibble   0   1   2   3   4   5   6   7   8   9  10
>  11  12  13  14  15
>  ])
>  AT_CLEANUP
>
> -AT_SETUP([test utility functions])
> -AT_KEYWORDS([util])
> -AT_CHECK([test-util])
> -AT_CLEANUP
> +m4_foreach(
> +  [testname],
> +  [[ctz],
> +   [log_2_floor],
> +   [bitwise_copy],
> +   [bitwise_zero],
> +   [bitwise_one],
> +   [bitwise_is_all_zeros]],
> +  [AT_SETUP([testname[()] function])
> +   AT_CHECK([test-util testname], [0], [], [])
> +   AT_CLEANUP])
>
>  AT_SETUP([test unix socket -- short pathname])
>  AT_CHECK([test-unix-socket x])
> diff --git a/tests/test-util.c b/tests/test-util.c
> index 097b1eb..56c5b28 100644
> --- a/tests/test-util.c
> +++ b/tests/test-util.c
> @@ -22,6 +22,7 @@
>  #include <stdlib.h>
>
>  #include "byte-order.h"
> +#include "command-line.h"
>  #include "random.h"
>  #include "util.h"
>
> @@ -36,6 +37,25 @@ check_log_2_floor(uint32_t x, int n)
>  }
>
>  static void
> +test_log_2_floor(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
> +{
> +    int n;
> +
> +    for (n = 0; n < 32; n++) {
> +        /* Check minimum x such that f(x) == n. */
> +        check_log_2_floor(1 << n, n);
> +
> +        /* Check maximum x such that f(x) == n. */
> +        check_log_2_floor((1 << n) | ((1 << n) - 1), n);
> +
> +        /* Check a random value in the middle. */
> +        check_log_2_floor((random_uint32() & ((1 << n) - 1)) | (1 << n),
> n);
> +    }
> +
> +    /* log_2_floor(0) is undefined, so don't check it. */
> +}
> +
> +static void
>  check_ctz(uint32_t x, int n)
>  {
>      if (ctz(x) != n) {
> @@ -45,6 +65,26 @@ check_ctz(uint32_t x, int n)
>      }
>  }
>
> +static void
> +test_ctz(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
> +{
> +    int n;
> +
> +    for (n = 0; n < 32; n++) {
> +        /* Check minimum x such that f(x) == n. */
> +        check_ctz(1 << n, n);
> +
> +        /* Check maximum x such that f(x) == n. */
> +        check_ctz(UINT32_MAX << n, n);
> +
> +        /* Check a random value in the middle. */
> +        check_ctz((random_uint32() | 1) << n, n);
> +    }
> +
> +    /* Check ctz(0). */
> +    check_ctz(0, 32);
> +}
> +
>  /* Returns the sum of the squares of the first 'n' positive integers. */
>  static unsigned int
>  sum_of_squares(int n)
> @@ -53,7 +93,7 @@ sum_of_squares(int n)
>  }
>
>  static void
> -check_bitwise_copy(void)
> +test_bitwise_copy(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
>  {
>      unsigned int n_loops;
>      int src_ofs;
> @@ -103,7 +143,7 @@ check_bitwise_copy(void)
>  }
>
>  static void
> -check_bitwise_zero(void)
> +test_bitwise_zero(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
>  {
>      unsigned int n_loops;
>      int dst_ofs;
> @@ -144,7 +184,7 @@ check_bitwise_zero(void)
>  }
>
>  static void
> -check_bitwise_one(void)
> +test_bitwise_one(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
>  {
>      unsigned int n_loops;
>      int dst_ofs;
> @@ -185,7 +225,7 @@ check_bitwise_one(void)
>  }
>
>  static void
> -check_bitwise_is_all_zeros(void)
> +test_bitwise_is_all_zeros(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
>  {
>      int n_loops;
>
> @@ -227,37 +267,21 @@ check_bitwise_is_all_zeros(void)
>          }
>      }
>  }
> +
> +static const struct command commands[] = {
> +    {"ctz", 0, 0, test_ctz},
> +    {"log_2_floor", 0, 0, test_log_2_floor},
> +    {"bitwise_copy", 0, 0, test_bitwise_copy},
> +    {"bitwise_zero", 0, 0, test_bitwise_zero},
> +    {"bitwise_one", 0, 0, test_bitwise_one},
> +    {"bitwise_is_all_zeros", 0, 0, test_bitwise_is_all_zeros},
> +    {NULL, 0, 0, NULL},
> +};
>
>  int
> -main(void)
> +main(int argc, char *argv[])
>  {
> -    int n;
> -
> -    for (n = 0; n < 32; n++) {
> -        /* Check minimum x such that f(x) == n. */
> -        check_log_2_floor(1 << n, n);
> -        check_ctz(1 << n, n);
> -
> -        /* Check maximum x such that f(x) == n. */
> -        check_log_2_floor((1 << n) | ((1 << n) - 1), n);
> -        check_ctz(UINT32_MAX << n, n);
> -
> -        /* Check a random value in the middle. */
> -        check_log_2_floor((random_uint32() & ((1 << n) - 1)) | (1 << n),
> n);
> -        check_ctz((random_uint32() | 1) << n, n);
> -    }
> -
> -    /* Check ctz(0).
> -     * (log_2_floor(0) is undefined.) */
> -    check_ctz(0, 32);
> -
> -    check_bitwise_copy();
> -
> -    check_bitwise_zero();
> -
> -    check_bitwise_one();
> -
> -    check_bitwise_is_all_zeros();
> -
> +    set_program_name(argv[0]);
> +    run_command(argc - 1, argv + 1, commands);
>      return 0;
>  }
> --
> 1.7.2.5
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
Looks good. Thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-dev/attachments/20120731/2375cfe2/attachment-0004.html>


More information about the dev mailing list