Index

lognestmonster / bd6bf7a

A general-purpose single-header C logging library and parser for event-based logs. (Incomplete)

Latest Commit

{#}TimeHashSubjectAuthor#(+)(-)GPG?
19324 Mar 2020 21:05446acd7Fix memory leak in lnm_registry_freeJosh Stockin1680G

Blob @ lognestmonster / tests / header_memory.c

text/plain1851 bytesdownload raw
1/* lognestmonster Copyright (c) 2020 Joshua 'joshuas3' Stockin
2 * <https://joshstock.in>
3 * <https://github.com/JoshuaS3/lognestmonster>
4 *
5 * This software is licensed and distributed under the terms of the MIT License.
6 * See the MIT License in the LICENSE file of this project's root folder.
7 *
8 * This comment block and its contents, including this disclaimer, MUST be
9 * preserved in all copies or distributions of this software's source.
10 */
11
12// header_memory.c
13// Test memory usage on lognestmonster library to prevent leaks
14
15#include <stdio.h>
16#include <sys/resource.h>
17
18#define LNM_INIT
19#define LNM_ALL
20#define LNM_DEBUG
21#include "lognestmonster.h"
22
23int main() {
24 long t1 = lnm_getus();
25
26 struct rusage r_usage;
27 getrusage(RUSAGE_SELF, &r_usage);
28 printf("Memory usage before: %li\n", r_usage.ru_maxrss);
29
30 lnmItem lastEvent = NULL;
31 for (int iter = 0; iter < 1000; iter++) {
32 uint64_t time = lnm_getus();
33 int type = time % 5 == 0 ? LNM_EVENT : LNM_STATEMENT;
34 if (type == LNM_STATEMENT) {
35 char message[25];
36 snprintf(message, 25, "New statement #%i", iter);
37 if (lastEvent == NULL) {
38 lnmStatement(lnmInfo, message);
39 } else {
40 lnmEventPushS(lastEvent, lnmInfo, message);
41 }
42 } else if (type == LNM_EVENT) {
43 char tag[20];
44 snprintf(tag, 20, "New event #%i", iter);
45 if (lastEvent == NULL || time % 7 == 0) {
46 lastEvent = lnmEvent(tag);
47 } else {
48 lnmItem new_event = lnmEvent(tag);
49 lnmEventPush(lastEvent, new_event);
50 lastEvent = new_event;
51 }
52 }
53 }
54
55 lnm_debug_parse_registry();
56
57 getrusage(RUSAGE_SELF, &r_usage);
58 printf("Memory usage during test: %li\n", r_usage.ru_maxrss);
59
60 lnm_registry_free();
61 lnm_debug_parse_registry();
62
63 getrusage(RUSAGE_SELF, &r_usage);
64 printf("Memory usage after: %li\n", r_usage.ru_maxrss);
65
66 printf("time elapsed (us): %lu\n", lnm_getus() - t1);
67 return 0;
68}
69