aboutsummaryrefslogtreecommitdiffstats
path: root/rb
diff options
context:
space:
mode:
authorMichał Łyszczek <michal.lyszczek@bofc.pl>2018-02-01 09:54:24 +0100
committerMichał Łyszczek <michal.lyszczek@bofc.pl>2018-02-01 09:54:24 +0100
commit787e74719ba38c536df209491a29a8f150ee54ea (patch)
tree5368f253912434b7e2c7eaefd4440d7f59c413cc /rb
parentf6fcfa7afc37d742a4ff9fa38dbdea22a25523d4 (diff)
downloadlibrb-787e74719ba38c536df209491a29a8f150ee54ea.tar.gz
librb-787e74719ba38c536df209491a29a8f150ee54ea.tar.bz2
librb-787e74719ba38c536df209491a29a8f150ee54ea.zip
add: tests for EAGAIN cases
Diffstat (limited to 'rb')
-rw-r--r--rb/tests.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/rb/tests.c b/rb/tests.c
index f7537b6..a93cabe 100644
--- a/rb/tests.c
+++ b/rb/tests.c
@@ -264,6 +264,21 @@ static void multi_thread(void)
free(recv_buf);
}
+static void multithread_eagain(void)
+{
+ char s[6] = {0, 1, 2, 3, 4, 5};
+ char d[6];
+ struct rb *rb;
+
+ rb = rb_new(4, 1, O_MULTITHREAD | O_NONBLOCK);
+ rb_write(rb, s, sizeof(s));
+ mt_ferr(rb_write(rb, s, sizeof(s)), EAGAIN);
+ rb_read(rb, d, sizeof(d));
+ mt_ferr(rb_read(rb, d, sizeof(d)), EAGAIN);
+ rb_destroy(rb);
+
+}
+
#endif
@@ -310,6 +325,21 @@ static void nonblocking_flag(void)
rb_destroy(rb);
}
+static void singlethread_eagain(void)
+{
+ char s[6] = {0, 1, 2, 3, 4, 5};
+ char d[6];
+ struct rb *rb;
+
+ rb = rb_new(4, 1, 0);
+ rb_write(rb, s, sizeof(s));
+ mt_ferr(rb_write(rb, s, sizeof(s)), EAGAIN);
+ rb_read(rb, d, sizeof(d));
+ mt_ferr(rb_read(rb, d, sizeof(d)), EAGAIN);
+ rb_destroy(rb);
+}
+
+
static void invalid_read_write(void)
{
struct rb *rb;
@@ -489,6 +519,11 @@ int main(void)
mt_run(invalid_read_write);
mt_run(multithread_flag);
mt_run(nonblocking_flag);
+ mt_run(singlethread_eagain);
+
+#if ENABLE_THREADS
+ mt_run(multithread_eagain);
+#endif
mt_return();
}