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;