[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 2/3] test-coroutine: test qemu_coroutine_ente
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [PATCH v2 2/3] test-coroutine: test qemu_coroutine_entered() |
Date: |
Wed, 28 Sep 2016 10:38:24 +0800 |
User-agent: |
Mutt/1.7.0 (2016-08-17) |
On Tue, 09/27 16:18, Stefan Hajnoczi wrote:
> Signed-off-by: Stefan Hajnoczi <address@hidden>
> ---
> tests/test-coroutine.c | 42 ++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 42 insertions(+)
>
> diff --git a/tests/test-coroutine.c b/tests/test-coroutine.c
> index 6431dd6..abd97c2 100644
> --- a/tests/test-coroutine.c
> +++ b/tests/test-coroutine.c
> @@ -53,6 +53,47 @@ static void test_self(void)
> }
>
> /*
> + * Check that qemu_coroutine_entered() works
> + */
Not related to this patch:
It's a bit weird that in this file function header comments are followed by a
blank line, and in one case it even looks like as odd as this:
static void test_order(void)
{
int i;
const struct coroutine_position expected_pos[] = {
{1, 1,}, {2, 1}, {1, 2}, {2, 2}, {1, 3}
};
do_order_test();
g_assert_cmpint(record_pos, ==, 5);
for (i = 0; i < record_pos; i++) {
g_assert_cmpint(records[i].func , ==, expected_pos[i].func );
g_assert_cmpint(records[i].state, ==, expected_pos[i].state);
}
}
/*
* Lifecycle benchmark
*/
static void coroutine_fn empty_coroutine(void *opaque)
{
/* Do nothing */
}
> +
> +static void coroutine_fn verify_entered_step_2(void *opaque)
> +{
> + Coroutine *caller = (Coroutine *)opaque;
> +
> + g_assert(qemu_coroutine_entered(caller));
> + g_assert(qemu_coroutine_entered(qemu_coroutine_self()));
> + qemu_coroutine_yield();
> +
> + /* Once more to check it still works after yielding */
> + g_assert(qemu_coroutine_entered(caller));
> + g_assert(qemu_coroutine_entered(qemu_coroutine_self()));
> + qemu_coroutine_yield();
> +}
> +
> +static void coroutine_fn verify_entered_step_1(void *opaque)
> +{
> + Coroutine *self = qemu_coroutine_self();
> + Coroutine *coroutine;
> +
> + g_assert(qemu_coroutine_entered(self));
> +
> + coroutine = qemu_coroutine_create(verify_entered_step_2, self);
> + g_assert(!qemu_coroutine_entered(coroutine));
> + qemu_coroutine_enter(coroutine);
> + g_assert(!qemu_coroutine_entered(coroutine));
> + qemu_coroutine_enter(coroutine);
> +}
> +
> +static void test_entered(void)
> +{
> + Coroutine *coroutine;
> +
> + coroutine = qemu_coroutine_create(verify_entered_step_1, NULL);
> + g_assert(!qemu_coroutine_entered(coroutine));
> + qemu_coroutine_enter(coroutine);
> +}
> +
> +/*
> * Check that coroutines may nest multiple levels
> */
>
> @@ -389,6 +430,7 @@ int main(int argc, char **argv)
> g_test_add_func("/basic/yield", test_yield);
> g_test_add_func("/basic/nesting", test_nesting);
> g_test_add_func("/basic/self", test_self);
> + g_test_add_func("/basic/entered", test_entered);
> g_test_add_func("/basic/in_coroutine", test_in_coroutine);
> g_test_add_func("/basic/order", test_order);
> if (g_test_perf()) {
> --
> 2.7.4
>
Reviewed-by: Fam Zheng <address@hidden>