Index

lognestmonster / bd6bf7a

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

Latest Commit

{#}TimeHashSubjectAuthor#(+)(-)GPG?
19106 Feb 2020 18:390ab0f71Bring header unit tests up to dateJosh Stockin14257G

Blob @ lognestmonster / tests / header_unit.c

text/plain3257 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// main.c
13// C file for testing the lognestmonster library header
14
15#include <stdio.h>
16
17#define LNM_INIT
18#define LNM_DEBUG
19#include "lognestmonster.h"
20
21void verify_queue_integrity(lnmQueue queue, char * queueName);
22
23int main(void) {
24 long t1 = lnm_getus();
25
26 printf("data testing\n");
27 printf("============\n");
28
29 printf("word size/ptr length: %zu\n", sizeof(lnmItem));
30 printf("\n\n");
31
32 printf("queue persistence testing\n");
33 printf("=========================\n");
34
35 printf("creating \"master\" queue with path \"/var/log/lognestmonster\"\n");
36 lnmQueue queue = lnmQueueInit("master", "/var/log/lognestmonster");
37 printf("queue \"master\" created at 0x%llx\n", (long long)queue);
38 printf("\n");
39
40 printf("checking queue integrity in registry...\n");
41 printf("tests/header_unit.c: queue == lnmQueueByName(\"master\"): ");
42 if (queue == lnmQueueByName("master")) {
43 printf("true\n");
44 } else {
45 printf("false. exiting...\n");
46 return 1;
47 }
48 printf("checking queue integrity across translation units...\n");
49 verify_queue_integrity(queue, "master");
50 printf("\n\n");
51
52 printf("log tree persistence testing\n");
53 printf("============================\n");
54
55 printf("creating log tree\n");
56 lnmItem event = lnmEvent("EVENT_TAG");
57 lnmEventPushS(event, lnmInfo, "Each log statement has a verbosity level attached and holds general information you want to write in a log file.");
58 lnmEventPushS(event, lnmVerbose, "There are 6 verbosity levels: lnmInfo, lnmDebug, lnmVerbose, lnmVeryVerbose, lnmWarning, and lnmError.");
59 lnmEventPushS(event, lnmInfo, "An event is a container for log statements or other events. Events can later be deserialized and queried.");
60 lnmEventPushS(event, lnmVeryVerbose, "Events can hold other events, like this: ");
61 lnmItem nested_event = lnmEvent("NESTED_EVENT");
62 lnmEventPush(event, nested_event);
63 lnmEventPushS(nested_event, lnmDebug, "Each event is assigned a tag to make querying easy.");
64 lnmEventPushS(nested_event, lnmWarning, "Events can hold up to 2^16 (65536) items. Messages also have a 2^16 maximum message length.");
65 printf("created log tree\n");
66 printf("\n\n");
67
68 printf("debug registry logtree (1 top level items expected)\n");
69 lnm_debug_parse_registry();
70 printf("\n\n");
71
72 printf("push event to queue\n");
73 lnmQueuePush(queue, event);
74 printf("\n");
75
76 printf("debug registry logtree (0 top level items expected)\n");
77 lnm_debug_parse_registry();
78 printf("\n");
79
80 printf("debug queue (master)\n");
81 lnm_debug_parse_queue(queue);
82 printf("\n\n");
83
84 printf("freeing queue\n");
85 lnm_free_queue(queue);
86 printf("\n");
87
88 printf("debug queue (master, 0 items expected)\n");
89 lnm_debug_parse_queue(queue);
90 printf("\n\n");
91
92 printf("tests finished\n");
93 printf("----------------------------\n");
94 printf("time elapsed (us): %lu\n", lnm_getus() - t1);
95
96 return 0;
97}
98