osmo_io: Make the test more deterministic between backends

Change-Id: Ibdd26a4aeadfbd6c5039c8a31cc120d3c98be727
diff --git a/tests/osmo_io/osmo_io_test.c b/tests/osmo_io/osmo_io_test.c
index 3683ee3..a42e6d0 100644
--- a/tests/osmo_io/osmo_io_test.c
+++ b/tests/osmo_io/osmo_io_test.c
@@ -38,6 +38,11 @@
 
 #define TEST_START() printf("Running %s\n", __func__)
 
+static uint8_t TESTDATA[] = {
+	1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
+};
+
+
 static void *ctx = NULL;
 
 static void read_cb(struct osmo_io_fd *iofd, int rc, struct msgb *msg)
@@ -51,7 +56,15 @@
 
 static void write_cb(struct osmo_io_fd *iofd, int rc, struct msgb *msg)
 {
+	uint8_t *buf;
 	printf("%s: write() returned rc=%d\n", osmo_iofd_get_name(iofd), rc);
+	if (rc == 0) {
+		msg = msgb_alloc(1024, "Test data");
+		buf = msgb_put(msg, sizeof(TESTDATA));
+		memcpy(buf, TESTDATA, sizeof(TESTDATA));
+
+		osmo_iofd_write_msgb(iofd, msg);
+	}
 }
 
 struct osmo_io_ops ioops_conn_read_write = {
@@ -59,16 +72,10 @@
 	.write_cb = write_cb,
 };
 
-uint8_t TESTDATA[] = {
-	1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
-};
-
 static void test_connected(void)
 {
 	int fds[2] = {0, 0}, rc;
 	struct osmo_io_fd *iofd1, *iofd2;
-	struct msgb *msg;
-	uint8_t *buf;
 
 	TEST_START();
 
@@ -80,13 +87,6 @@
 	iofd2 = osmo_iofd_setup(ctx, fds[1], "ep2", OSMO_IO_FD_MODE_READ_WRITE, &ioops_conn_read_write, NULL);
 	osmo_iofd_register(iofd2, fds[1]);
 
-	msg = msgb_alloc(1024, "Test data");
-	buf = msgb_put(msg, sizeof(TESTDATA));
-	memcpy(buf, TESTDATA, sizeof(TESTDATA));
-
-	osmo_iofd_write_msgb(iofd1, msg);
-
-
 	/* Allow enough cycles to handle the messages */
 	for (int i = 0; i < 128; i++)
 		osmo_select_main(1);
diff --git a/tests/osmo_io/osmo_io_test.ok b/tests/osmo_io/osmo_io_test.ok
index 43e5464..82a6f38 100644
--- a/tests/osmo_io/osmo_io_test.ok
+++ b/tests/osmo_io/osmo_io_test.ok
@@ -1,6 +1,10 @@
 Running test_connected
-ep1: write() returned rc=16
+ep1: write() returned rc=0
 ep2: write() returned rc=0
+ep1: write() returned rc=16
+ep2: write() returned rc=16
+ep1: read() msg with len=16
+01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 
 ep2: read() msg with len=16
 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 
 Running test_unconnected