Add test for deadlock
This commit is contained in:
parent
73ba58955f
commit
1e366f9dea
@ -2,6 +2,7 @@
|
||||
#include "threading.h"
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define ASSERT_TRUE(p) \
|
||||
do { \
|
||||
@ -50,6 +51,26 @@ int testOrder(size_t numThreads, size_t queueSize) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void waitFn(void *opaque) {
|
||||
(void)opaque;
|
||||
usleep(100);
|
||||
}
|
||||
|
||||
/* Tests for deadlock */
|
||||
int testWait(size_t numThreads, size_t queueSize) {
|
||||
struct data data;
|
||||
POOL_ctx *ctx = POOL_create(numThreads, queueSize);
|
||||
ASSERT_TRUE(ctx);
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < 16; ++i) {
|
||||
POOL_add(ctx, &waitFn, &data);
|
||||
}
|
||||
}
|
||||
POOL_free(ctx);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, const char **argv) {
|
||||
size_t numThreads;
|
||||
for (numThreads = 1; numThreads <= 4; ++numThreads) {
|
||||
@ -59,6 +80,10 @@ int main(int argc, const char **argv) {
|
||||
printf("FAIL: testOrder\n");
|
||||
return 1;
|
||||
}
|
||||
if (testWait(numThreads, queueSize)) {
|
||||
printf("FAIL: testWait\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("PASS: testOrder\n");
|
||||
|
Loading…
Reference in New Issue
Block a user