Index

lognestmonster / 4bda992

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

Latest Commit

{#}TimeHashSubjectAuthor#(+)(-)GPG?
17901 Feb 2020 21:541a7420fModify testing chain for convenienceJosh Stockin11120G

Blob @ lognestmonster / tests / header_unit.c

text/plain3348 bytesdownload raw
1// lognestmonster Copyright (c) 2020 Joshua 'joshuas3' Stockin
2// <https://joshstock.in>
3// <https://github.com/JoshuaS3/lognestmonster>
4// This software is licensed under the MIT License.
5//
6// main.c
7// C file for testing the lognestmonster library header
8
9#include <stdio.h>
10
11#define LNM_INIT
12#define LNM_ALL
13#include "lognestmonster.h"
14
15void test(void);
16extern char * queueName;
17static char * queuePath = "~/path";
18
19int main(void) {
20 queueName = "master";
21 long t1 = lnm_getus();
22
23 printf("lognestmonster C test main()\n");
24 printf("============================\n");
25 printf("\n\n");
26
27
28 printf("data testing\n");
29 printf("----------------------------\n");
30
31 printf("word size/ptr length: %li\n", sizeof(lnmItem));
32 printf("\n");
33
34 printf("enum lnmVerbosityLevel {\n");
35 printf("\tlnmInfo = %i,\n\tlnmDebug = %i,\n\tlnmVerbose = %i,\n\tlnmVeryVerbose = %i,\n\tlnmWarning = %i,\n\tlnmError = %i\n}\n", lnmInfo, lnmDebug, lnmVerbose, lnmVeryVerbose, lnmWarning, lnmError);
36 printf("\n\n");
37
38 printf("core library\n");
39 printf("----------------------------\n");
40
41 printf("creating \"%s\" queue with path \"%s\"\n", queueName, queuePath);
42 lnmQueue queue = lnmQueueInit(queueName, queuePath);
43 printf("queue \"%s\" created at 0x%llx\n", queueName, (long long)queue);
44 printf("\n");
45
46 printf("checking queue integrity in registry...\n");
47 printf("queue == lnmQueueByName(\"%s\"): ", queueName);
48 if (queue == lnmQueueByName(queueName)) {
49 printf("true\n");
50 } else {
51 printf("false. exiting...\n");
52 return 1;
53 }
54 printf("\n");
55
56 printf("creating an E{2S, E{1S}, 1S} logtree\n");
57 lnmItem event = lnmEventS(lnmError, "INVOKER", "Test ERROR statement pushed to single event with custom tag and message");
58 lnmEventPushS(event, lnmInfo, "INIT", "Sample INFO/INIT log statement");
59
60 lnmItem event2 = lnmEventS(lnmVerbose, "NESTED", "Example of a nested log statement");
61 lnmEventPushS(event2, lnmVeryVerbose, "NESTED", "Nested #2");
62
63 lnmEventPush(event, event2);
64
65 lnmEventPushS(event2, lnmInfo, "TEST", "Item #3");
66 lnmEventPushS(event2, lnmInfo, "TEST", "Item #4");
67
68 lnmItem event3 = lnmEventS(lnmWarning, "NESTED-2", "Third layer log statement");
69 lnmEventPush(event2, event3);
70
71 lnmEventPushS(event2, lnmInfo, "TEST", "Item #6");
72 lnmEventPushS(event2, lnmInfo, "TEST", "Item #7");
73 lnmEventPushS(event2, lnmInfo, "TEST", "Item #8");
74 lnmEventPushS(event2, lnmInfo, "TEST", "Item #9 (frame capacity doubles from 8 to 16)");
75
76 lnmEventPushS(event, lnmDebug, "REQUEST", "DEBUG/REQUEST log statement. might be found useful in a webserver backend");
77 printf("\n");
78
79 printf("debug registry logtree (1 top level items expected)\n");
80 lnm_debug_parse_registry();
81 printf("\n");
82
83 printf("push event to queue\n");
84 lnmQueuePush(queue, event);
85 printf("\n");
86
87 printf("debug queue (master)\n");
88 lnm_debug_parse_queue(queue);
89 printf("\n");
90
91 printf("debug registry logtree (0 top level items expected)\n");
92 lnm_debug_parse_registry();
93 printf("\n");
94
95 printf("calling test function from different source file\n");
96 test();
97 printf("\n");
98
99 printf("freeing queue\n");
100 lnm_free_queue(queue);
101 printf("\n");
102
103 printf("debug queue (master, 0 items expected)\n");
104 lnm_debug_parse_queue(queue);
105 printf("\n\n");
106
107 printf("tests finished\n");
108 printf("----------------------------\n");
109 printf("time elapsed (us): %lu\n", lnm_getus() - t1);
110
111 return 0;
112}
113