queue and queue test

This commit is contained in:
Wolfgang Hottgenroth 2021-10-18 00:08:41 +02:00
parent a99c3b7121
commit 808d2d21e3
Signed by: wn
GPG Key ID: E49AF3B9EF6DD469

94
tests.c Normal file
View File

@ -0,0 +1,94 @@
#define _DEFAULT_SOURCE
#include <queue.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdlib.h>
#include <config.h>
#include <logging.h>
#include <unistd.h>
#include <string.h>
extern bool verbose;
extern bool debug;
bool stopConsumer = false;
void * consumer(void * arg) {
logmsg(LOG_DEBUG, "consumer thread started");
t_queue *queue = (t_queue*) arg;
while (! stopConsumer) {
logmsg(LOG_INFO, "consumer waiting");
char *item = (char*) getQueue(queue);
logmsg(LOG_INFO, "consumer received: %s", item);
free(item);
}
logmsg(LOG_DEBUG, "consumer thread returning");
return NULL;
}
int main() {
verbose = true;
debug = true;
t_queue *queue = initQueue();
logmsg(LOG_DEBUG, "queue created");
pthread_t consumerThread;
int res = pthread_create(&consumerThread, NULL, &consumer, (void*) queue);
if (res != 0) {
logmsg(LOG_ERR, "Error starting consumer thread");
exit(1);
}
sched_yield();
sleep(1);
char *t = strdup("hallo1");
putQueue(queue, (void*) t);
logmsg(LOG_DEBUG, "item added to queue");
t = strdup("hallo2");
putQueue(queue, (void*) t);
logmsg(LOG_DEBUG, "item added to queue");
sleep(1);
t = strdup("hallo3");
putQueue(queue, (void*) t);
logmsg(LOG_DEBUG, "item added to queue");
t = strdup("hallo4");
putQueue(queue, (void*) t);
logmsg(LOG_DEBUG, "item added to queue");
// stopConsumer = true;
t = strdup("hallo5");
putQueue(queue, (void*) t);
logmsg(LOG_DEBUG, "item added to queue");
sleep(2);
pthread_join(consumerThread, NULL);
logmsg(LOG_DEBUG, "consumer thread joined");
}