From cdf975db2956e405c287855d6b093ab505855731 Mon Sep 17 00:00:00 2001 From: Philippe PITTOLI Date: Fri, 9 Sep 2016 14:44:15 +0200 Subject: [PATCH] pubsub: tests sur les pipes (read, write) --- lib/communication.c | 19 ++++++++++++++----- pubsub/test-pipe-read.c | 21 ++++++++++++++------- pubsub/test-pipe-write.c | 3 +-- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/lib/communication.c b/lib/communication.c index dd62f7d..0f6d387 100644 --- a/lib/communication.c +++ b/lib/communication.c @@ -24,15 +24,24 @@ int file_read (const char *path, char **buf, size_t *msize) return ER_FILE_OPEN; } + if (*buf == NULL) + *buf = malloc (BUFSIZ); + int ret = 0; + int ret2 = 0; ret = read (fd, *buf, BUFSIZ); - if (ret < 0) { - return ret; + if (ret <= 0) { + fprintf (stderr, "err: read %s\n", path); + } + else { + *msize = ret; } - *msize = ret; - - close (fd); + ret2 = close (fd); + if (ret2 < 0) { + fprintf (stderr, "err: close [err: %d] %s\n", ret2, path); + perror ("closing"); + } return ret; } diff --git a/pubsub/test-pipe-read.c b/pubsub/test-pipe-read.c index 7ab462c..a9c330e 100644 --- a/pubsub/test-pipe-read.c +++ b/pubsub/test-pipe-read.c @@ -34,16 +34,23 @@ main(int argc, char **argv) while (nb--) { ret = file_read (path, &buf, &msize); - if (ret == 0) { - printf ("no msg\n"); + if (ret <= 0) { + fprintf (stderr, "no msg"); + if (ret == ER_FILE_OPEN) { + fprintf (stderr, " ER_FILE_OPEN"); + } + fprintf (stderr, "\n"); nb++; continue; } - struct pubsub_msg m; - pubsubd_msg_unserialize (&m, buf, msize); - pubsubd_msg_print (&m); - pubsubd_msg_free (&m); - sleep (1); + if (msize > 0) { + printf ("msg size %ld\t", msize); + struct pubsub_msg m; + memset (&m, 0, sizeof (struct pubsub_msg)); + pubsubd_msg_unserialize (&m, buf, msize); + pubsubd_msg_print (&m); + pubsubd_msg_free (&m); + } } return EXIT_SUCCESS; diff --git a/pubsub/test-pipe-write.c b/pubsub/test-pipe-write.c index 3520928..2be8e03 100644 --- a/pubsub/test-pipe-write.c +++ b/pubsub/test-pipe-write.c @@ -48,10 +48,9 @@ main(int argc, char **argv) pubsubd_msg_print (&msg); pubsubd_msg_free (&msg); ret = file_write (path, buf, msize); - if (ret != msize) { + if (ret != (int) msize) { fprintf (stderr, "msg not written\n"); } - sleep (1); } return EXIT_SUCCESS;