diff options
author | Michał Łyszczek <michal.lyszczek@bofc.pl> | 2018-02-01 09:54:24 +0100 |
---|---|---|
committer | Michał Łyszczek <michal.lyszczek@bofc.pl> | 2018-02-01 09:54:24 +0100 |
commit | 787e74719ba38c536df209491a29a8f150ee54ea (patch) | |
tree | 5368f253912434b7e2c7eaefd4440d7f59c413cc | |
parent | f6fcfa7afc37d742a4ff9fa38dbdea22a25523d4 (diff) | |
download | librb-787e74719ba38c536df209491a29a8f150ee54ea.tar.gz librb-787e74719ba38c536df209491a29a8f150ee54ea.tar.bz2 librb-787e74719ba38c536df209491a29a8f150ee54ea.zip |
add: tests for EAGAIN cases
-rw-r--r-- | rb/tests.c | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -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(); } |