ubinos
msgqtest04.c
/*
* Copyright (c) 2009 Sung Ho Park
*
* SPDX-License-Identifier: Apache-2.0
*/
#if (INCLUDE__UBINOS__UBIK_TEST == 1)
#if !(UBINOS__UBIK_TEST__EXCLUDE_MSGQTESTSET == 1)
#include <stdio.h>
#include <stdlib.h>
int r;
int r2;
int i;
int j;
msgq_pt * msgq_p;
unsigned int size_old;
unsigned int count_old;
unsigned int size;
unsigned int count;
printf("\n");
printf("<test>\n");
printf("<name>ubik_test_msgqtest04</name>\n");
printf("<description>Memory leak test of message queue</description>\n");
printf("<message>\n");
r = heap_getallocatedsize(NULL, &size_old);
if (0 != r) {
printf("fail at heap_getallocatedsize\n");
goto end0;
}
r = heap_getallocatedcount(NULL, &count_old);
if (0 != r) {
printf("fail at heap_getallocatedcount\n");
goto end0;
}
msgq_p = malloc(sizeof(msgq_pt) * UBINOS__UBIK_TEST__MEMLEAK_SIGOBJCOUNT);
if (NULL == msgq_p) {
printf("fail at malloc()\n");
goto end0;
}
r = 0;
printf("|----------|\n ");
for (i=0; i<UBINOS__UBIK_TEST__MEMLEAK_TESTCOUNT; i++) {
for (j=0; j<UBINOS__UBIK_TEST__MEMLEAK_SIGOBJCOUNT; j++) {
msgq_p[j] = NULL;
}
for (j=0; j<UBINOS__UBIK_TEST__MEMLEAK_SIGOBJCOUNT; j++) {
r = msgq_create(&msgq_p[j], UBINOS__UBIK_TEST__MSGQSIZE, 1);
if (0 != r) {
printf("\n");
printf("test %d, msgq %d\n", i, j);
printf("fail at msgq_create(), err=%d\n", r);
r = -1;
break;
}
}
for (j=0; j<UBINOS__UBIK_TEST__MEMLEAK_SIGOBJCOUNT; j++) {
if (NULL != msgq_p[j]) {
r2 = msgq_delete(&msgq_p[j]);
if (0 != r2) {
printf("\n");
printf("fail at msgq_delete(), err=%d\n", r2);
r = -1;
break;
}
}
}
if (0 != r) {
break;
}
if (0 == i%(UBINOS__UBIK_TEST__MEMLEAK_TESTCOUNT/10)) {
printf("+");
}
}
if (0 == r) {
printf("\n");
printf("pass %d tests creating and deleting %d message queue\n", i, j);
}
free(msgq_p);
if (0 == r) {
if (0 != r2) {
printf("fail at heap_getallocatedsize\n");
r = -1;
goto end0;
}
if (0 != r2) {
printf("fail at heap_getallocatedcount\n");
r = -1;
goto end0;
}
if (size_old != size || count_old != count) {
printf("memory leak was detected\n");
r = -1;
goto end0;
}
}
end0:
if (0 != r) {
r = -1;
}
else {
r = 0;
}
printf("</message>\n");
printf("<result>");
if (0 == r) {
printf("pass");
}
else {
printf("fail");
}
printf("</result>\n");
printf("</test>\n");
printf("\n");
return r;
}
#endif /* !(UBINOS__UBIK_TEST__EXCLUDE_MSGQTESTSET == 1) */
#endif /* (INCLUDE__UBINOS__UBIK_TEST == 1) */
int heap_getallocatedcount(heap_pt heap, unsigned int *count_p)
int heap_getallocatedsize(heap_pt heap, unsigned int *size_p)
int msgq_delete(msgq_pt *msgq_p)
int msgq_create(msgq_pt *msgq_p, unsigned int msgsize, unsigned int maxcount)
stdlib (Standard Library) API
Definition: msgq.h:128
#define NULL
Definition: type.h:42
int ubik_collectgarbage(void)
ubik test API
int ubik_test_msgqtest04(void)
Test for memory leak by message queue.