From: Stefan Hajnoczi <stefa...@redhat.com>

See code comment for details.

Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-off-by: Stefano Garzarella <sgarz...@redhat.com>
---
 tools/testing/vsock/util.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/tools/testing/vsock/util.c b/tools/testing/vsock/util.c
index f838bcee3589..4280a56ba677 100644
--- a/tools/testing/vsock/util.c
+++ b/tools/testing/vsock/util.c
@@ -161,10 +161,24 @@ void run_tests(const struct test_case *test_cases,
                printf("%s...", test_cases[i].name);
                fflush(stdout);
 
-               if (opts->mode == TEST_MODE_CLIENT)
+               if (opts->mode == TEST_MODE_CLIENT) {
+                       /* Full barrier before executing the next test.  This
+                        * ensures that client and server are executing the
+                        * same test case.  In particular, it means whoever is
+                        * faster will not see the peer still executing the
+                        * last test.  This is important because port numbers
+                        * can be used by multiple test cases.
+                        */
+                       control_expectln("NEXT");
+                       control_writeln("NEXT");
+
                        run = test_cases[i].run_client;
-               else
+               } else {
+                       control_writeln("NEXT");
+                       control_expectln("NEXT");
+
                        run = test_cases[i].run_server;
+               }
 
                if (run)
                        run(opts);
-- 
2.20.1

Reply via email to