All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Test coroutine execution order
@ 2013-08-05 19:11 Charlie Shepherd
  2013-08-06  8:47 ` Kevin Wolf
  2013-08-08  8:28 ` [Qemu-devel] [PATCH] Test coroutine execution order (v2) Stefan Hajnoczi
  0 siblings, 2 replies; 5+ messages in thread
From: Charlie Shepherd @ 2013-08-05 19:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, pbonzini, gabriel, Charlie Shepherd, stefanha

This patch adds a test for coroutine execution order in test-coroutine - this
catches a bug in the CPC coroutine implementation.

---
 tests/test-coroutine.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/tests/test-coroutine.c b/tests/test-coroutine.c
index 39be046..3b763c2 100644
--- a/tests/test-coroutine.c
+++ b/tests/test-coroutine.c
@@ -150,6 +150,59 @@ static void test_lifecycle(void)
     g_assert(done); /* expect done to be true (second time) */
 }
 
+
+#define RECORD_SIZE 10 /* Leave some room for expansion */
+struct coroutine_position {
+    int func;
+    int state;
+};
+static struct coroutine_position records[RECORD_SIZE];
+static unsigned record_pos;
+
+static void record_push(int func, int state)
+{
+    struct coroutine_position *cp = &records[record_pos++];
+    g_assert_cmpint(record_pos, <, RECORD_SIZE);
+    cp->func = func;
+    cp->state = state;
+}
+
+static void coroutine_fn co_order_test(void *opaque)
+{
+    record_push(2, 1);
+    g_assert(qemu_in_coroutine());
+    qemu_coroutine_yield();
+    record_push(2, 2);
+    g_assert(qemu_in_coroutine());
+}
+
+static void do_order_test(void)
+{
+    Coroutine *co;
+
+    co = qemu_coroutine_create(co_order_test);
+    record_push(1, 1);
+    qemu_coroutine_enter(co, NULL);
+    record_push(1, 2);
+    g_assert(!qemu_in_coroutine());
+    qemu_coroutine_enter(co, NULL);
+    record_push(1, 3);
+    g_assert(!qemu_in_coroutine());
+}
+
+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
  */
@@ -211,6 +264,7 @@ int main(int argc, char **argv)
     g_test_add_func("/basic/nesting", test_nesting);
     g_test_add_func("/basic/self", test_self);
     g_test_add_func("/basic/in_coroutine", test_in_coroutine);
+    g_test_add_func("/basic/order", test_order);
     if (g_test_perf()) {
         g_test_add_func("/perf/lifecycle", perf_lifecycle);
         g_test_add_func("/perf/nesting", perf_nesting);
-- 
1.8.3.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] Test coroutine execution order
  2013-08-05 19:11 [Qemu-devel] [PATCH] Test coroutine execution order Charlie Shepherd
@ 2013-08-06  8:47 ` Kevin Wolf
  2013-08-08  8:28 ` [Qemu-devel] [PATCH] Test coroutine execution order (v2) Stefan Hajnoczi
  1 sibling, 0 replies; 5+ messages in thread
From: Kevin Wolf @ 2013-08-06  8:47 UTC (permalink / raw)
  To: Charlie Shepherd; +Cc: pbonzini, gabriel, qemu-devel, stefanha

Am 05.08.2013 um 21:11 hat Charlie Shepherd geschrieben:
> This patch adds a test for coroutine execution order in test-coroutine - this
> catches a bug in the CPC coroutine implementation.
> 
> ---
>  tests/test-coroutine.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 54 insertions(+)

This patch doesn't have a Signed-off-by line, so I can't apply it.

Looks good otherwise, you can add to v2:

Reviewed-by: Kevin Wolf <kwolf@redhat.com>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] Test coroutine execution order (v2)
  2013-08-05 19:11 [Qemu-devel] [PATCH] Test coroutine execution order Charlie Shepherd
  2013-08-06  8:47 ` Kevin Wolf
@ 2013-08-08  8:28 ` Stefan Hajnoczi
  2013-08-08  9:48   ` Charlie Shepherd
  1 sibling, 1 reply; 5+ messages in thread
From: Stefan Hajnoczi @ 2013-08-08  8:28 UTC (permalink / raw)
  To: Charlie Shepherd; +Cc: kwolf, pbonzini, gabriel, qemu-devel

On Thu, Aug 08, 2013 at 03:23:14AM +0100, Charlie Shepherd wrote:
This patch's commit message will say "Test coroutine execution order
(v2)" when applied.

In the future please put the "v2" into the [PATCH ...] tag list instead
so it gets stripped automatically when the patch is applied.

With git-format-patch you can use --subject-prefix to customize the tag
list.  I use a tool called git-publish to automate managing patch
revisions:
https://github.com/stefanha/git-publish

Stefan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] Test coroutine execution order (v2)
  2013-08-08  8:28 ` [Qemu-devel] [PATCH] Test coroutine execution order (v2) Stefan Hajnoczi
@ 2013-08-08  9:48   ` Charlie Shepherd
  2013-08-08 10:16     ` Kevin Wolf
  0 siblings, 1 reply; 5+ messages in thread
From: Charlie Shepherd @ 2013-08-08  9:48 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: kwolf, pbonzini, gabriel, qemu-devel

On 08/08/2013 09:28, Stefan Hajnoczi wrote:
> On Thu, Aug 08, 2013 at 03:23:14AM +0100, Charlie Shepherd wrote:
> This patch's commit message will say "Test coroutine execution order
> (v2)" when applied.
>
> In the future please put the "v2" into the [PATCH ...] tag list instead
> so it gets stripped automatically when the patch is applied.
>
> With git-format-patch you can use --subject-prefix to customize the tag
> list.  I use a tool called git-publish to automate managing patch
> revisions:
> https://github.com/stefanha/git-publish

Ah sorry I forgot it should go in the square brackets. Did you want me 
to resend it with the correct title?


Charlie

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] Test coroutine execution order (v2)
  2013-08-08  9:48   ` Charlie Shepherd
@ 2013-08-08 10:16     ` Kevin Wolf
  0 siblings, 0 replies; 5+ messages in thread
From: Kevin Wolf @ 2013-08-08 10:16 UTC (permalink / raw)
  To: Charlie Shepherd; +Cc: Stefan Hajnoczi, gabriel, qemu-devel, pbonzini

Am 08.08.2013 um 11:48 hat Charlie Shepherd geschrieben:
> Ah sorry I forgot it should go in the square brackets. Did you want
> me to resend it with the correct title?

Not necessary, I've fixed it up. Just remember it for your next series.

Thanks, applied to block-next (for 1.7)

Kevin

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-08-08 10:20 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-05 19:11 [Qemu-devel] [PATCH] Test coroutine execution order Charlie Shepherd
2013-08-06  8:47 ` Kevin Wolf
2013-08-08  8:28 ` [Qemu-devel] [PATCH] Test coroutine execution order (v2) Stefan Hajnoczi
2013-08-08  9:48   ` Charlie Shepherd
2013-08-08 10:16     ` Kevin Wolf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.