More threadqueue docs & tests
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include <check.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <sched.h>
|
||||
#include <stdlib.h>
|
||||
#include "ucore_threadqueue.h"
|
||||
@@ -198,6 +199,53 @@ START_TEST (test_thread_queue_multiple_writers)
|
||||
|
||||
END_TEST
|
||||
|
||||
START_TEST (test_thread_queue_timeout1)
|
||||
|
||||
struct uc_threadqueue queue;
|
||||
struct timespec timeout = {0, 1000};
|
||||
struct uc_threadmsg *msg;
|
||||
|
||||
fail_if(uc_thread_queue_init(&queue, 100) != 0);
|
||||
|
||||
fail_if(uc_thread_queue_get(&queue, &timeout, &msg) != ETIMEDOUT);
|
||||
uc_thread_queue_destroy(&queue, NULL);
|
||||
|
||||
END_TEST
|
||||
|
||||
void *thread_test_thread_queue_timeout2(void *arg)
|
||||
{
|
||||
struct uc_threadqueue *queue = arg;
|
||||
struct uc_threadmsg *msg;
|
||||
struct thr_msg *my_msg;
|
||||
struct timespec timeout = {0, 2000};
|
||||
|
||||
fail_if(uc_thread_queue_get(queue, &timeout, &msg) != 0);
|
||||
fail_if(uc_thread_queue_get(queue, &timeout, &msg) != ETIMEDOUT);
|
||||
|
||||
my_msg = (struct thr_msg *)msg;
|
||||
fail_if(my_msg->b != 12345);
|
||||
|
||||
|
||||
return NULL;
|
||||
}
|
||||
START_TEST (test_thread_queue_timeout2)
|
||||
|
||||
struct uc_threadqueue queue;
|
||||
pthread_t tid1;
|
||||
struct thr_msg my_msg;
|
||||
|
||||
fail_if(uc_thread_queue_init(&queue, 10) != 0);
|
||||
fail_if(pthread_create(&tid1, NULL, thread_test_thread_queue_timeout2, &queue) != 0);
|
||||
my_msg.b = 12345;
|
||||
fail_if(uc_thread_queue_add(&queue, &my_msg.msg) != 0);
|
||||
|
||||
|
||||
pthread_join(tid1, NULL);
|
||||
|
||||
uc_thread_queue_destroy(&queue, NULL);
|
||||
|
||||
END_TEST
|
||||
|
||||
|
||||
Suite *threadqueue_suite(void)
|
||||
{
|
||||
@@ -211,6 +259,8 @@ Suite *threadqueue_suite(void)
|
||||
tcase_add_test(tc1, test_thread_queue_reader_writer_len_1);
|
||||
tcase_add_test(tc1, test_thread_queue_zero_len);
|
||||
tcase_add_test(tc1, test_thread_queue_multiple_writers);
|
||||
tcase_add_test(tc1, test_thread_queue_timeout1);
|
||||
tcase_add_test(tc1, test_thread_queue_timeout2);
|
||||
|
||||
//lets start with this:
|
||||
tcase_set_timeout(tc1, 15);
|
||||
|
||||
Reference in New Issue
Block a user