On Jan 12, 2015, at 11:48 PM, Motonori Shindo <moton...@shin.do> wrote:

> Jarno,
> 
> Thanks for the patch. With this patch, I confirmed that I no longer encounter 
> the problem I reported before. Just curious but where is VLOG_INFO() written 
> to in this case?

Thanks for the report.

The blog output goes to stderr by default. The test case expects no output, so 
any output will fail the test case.

  Jarno

> 
> ---
> Motonori Shindo
> 
> 
> 2015-01-13 6:27 GMT+09:00 Jarno Rajahalme <jrajaha...@nicira.com>:
> When the test suite is run on an OS with 1 core (e.g., a VM with one
> core assigned to it), some of the atomic memory model tests take a
> long time, with the effect that the test seems stuck.
> 
> This patch stops these tests after one second and only fails the test
> if there has not been any significant progress, allowing the test to
> pass also when running only with one core.
> 
> Reported-by: Motonori Shindo <moton...@shin.do>
> Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com>
> ---
>  tests/test-atomic.c |   40 ++++++++++++++++++++++++++++++++++++----
>  1 file changed, 36 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/test-atomic.c b/tests/test-atomic.c
> index dcd0a73..0f7f2c0 100644
> --- a/tests/test-atomic.c
> +++ b/tests/test-atomic.c
> @@ -17,9 +17,13 @@
>  #include <config.h>
>  #undef NDEBUG
>  #include "ovs-atomic.h"
> -#include "util.h"
>  #include "ovstest.h"
>  #include "ovs-thread.h"
> +#include "timeval.h"
> +#include "util.h"
> +#include "openvswitch/vlog.h"
> +
> +VLOG_DEFINE_THIS_MODULE(test_atomic);
> 
>  #define TEST_ATOMIC_TYPE(ATOMIC_TYPE, BASE_TYPE)        \
>      {                                                   \
> @@ -186,6 +190,7 @@ atomic_consumer(void * arg1 OVS_UNUSED)
>  {
>      struct atomic_aux *old_aux = NULL;
>      uint64_t count;
> +    long long int stop_time = time_msec() + 1000;
> 
>      do {
>          struct atomic_aux *aux;
> @@ -202,7 +207,14 @@ atomic_consumer(void * arg1 OVS_UNUSED)
>          ovs_assert(b == count + 42);
> 
>          old_aux = aux;
> -    } while (count < ATOMIC_ITEM_COUNT - 1);
> +    } while (count < ATOMIC_ITEM_COUNT - 1 && time_msec() < stop_time);
> +
> +    if (time_msec() >= stop_time) {
> +        if (count < 10) {
> +            VLOG_INFO("atomic_consumer test stopped due to excessive 
> runtime. "
> +                      "Count = %"PRIu64, count);
> +        }
> +    }
> 
>      return NULL;
>  }
> @@ -249,6 +261,8 @@ atomic_reader(void *aux_)
>      struct atomic_aux *aux = aux_;
>      uint64_t count;
>      uint64_t data;
> +    long long int now = time_msec();
> +    long long int stop_time = now + 1000;
> 
>      do {
>          /* Non-synchronized add. */
> @@ -256,7 +270,15 @@ atomic_reader(void *aux_)
> 
>          do {
>              atomic_read_explicit(&aux->data64, &data, memory_order_acquire);
> -        } while (!data);
> +        } while (!data && (now = time_msec()) < stop_time);
> +
> +        if (now >= stop_time) {
> +            if (count < 10) {
> +                VLOG_INFO("atomic_reader test stopped due to excessive "
> +                          "runtime. Count = %"PRIu64, count);
> +            }
> +            break;
> +        }
> 
>          ovs_assert(data == a && data == aux->b && a == aux->b);
> 
> @@ -277,12 +299,22 @@ atomic_writer(void *aux_)
>      uint64_t old_count;
>      uint64_t data;
>      size_t i;
> +    long long int now = time_msec();
> +    long long int stop_time = now + 1000;
> 
>      for (i = 0; i < ATOMIC_ITEM_COUNT; i++) {
>          /* Wait for the reader to be done with the data. */
>          do {
>              atomic_read_explicit(&aux->data64, &data, memory_order_acquire);
> -        } while (data);
> +        } while (data && (now = time_msec()) < stop_time);
> +
> +        if (now >= stop_time) {
> +            if (i < 10) {
> +                VLOG_INFO("atomic_writer test stopped due to excessive "
> +                          "runtime, Count = %"PRIuSIZE, i);
> +            }
> +            break;
> +        }
> 
>          a = i + 1;
>          atomic_add_explicit(&aux->count, 1, &old_count, 
> memory_order_relaxed);
> --
> 1.7.10.4
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
> 

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to