xref: /freebsd/contrib/libxo/tests/core/test_11.c (revision 76afb20c58adb296f09857aed214b91464242264)
1d1a0d267SMarcel Moolenaar /*
2d1a0d267SMarcel Moolenaar  * Copyright (c) 2014, Juniper Networks, Inc.
3d1a0d267SMarcel Moolenaar  * All rights reserved.
4d1a0d267SMarcel Moolenaar  * This SOFTWARE is licensed under the LICENSE provided in the
5d1a0d267SMarcel Moolenaar  * ../Copyright file. By downloading, installing, copying, or otherwise
6d1a0d267SMarcel Moolenaar  * using the SOFTWARE, you agree to be bound by the terms of that
7d1a0d267SMarcel Moolenaar  * LICENSE.
8d1a0d267SMarcel Moolenaar  * Phil Shafer, July 2014
9d1a0d267SMarcel Moolenaar  */
10d1a0d267SMarcel Moolenaar 
11d1a0d267SMarcel Moolenaar #include <stdio.h>
12d1a0d267SMarcel Moolenaar #include <stdlib.h>
13d1a0d267SMarcel Moolenaar #include <string.h>
14d1a0d267SMarcel Moolenaar #include <unistd.h>
15d1a0d267SMarcel Moolenaar #include <errno.h>
16d1a0d267SMarcel Moolenaar #include <time.h>
17d1a0d267SMarcel Moolenaar #include <ctype.h>
18d1a0d267SMarcel Moolenaar #include <syslog.h>
19d1a0d267SMarcel Moolenaar 
20d1a0d267SMarcel Moolenaar #include "xo.h"
21*76afb20cSPhil Shafer #include "xo_encoder.h"
22d1a0d267SMarcel Moolenaar 
23d1a0d267SMarcel Moolenaar void
test_syslog_open(void)24d1a0d267SMarcel Moolenaar test_syslog_open (void)
25d1a0d267SMarcel Moolenaar {
26d1a0d267SMarcel Moolenaar     printf("syslog open\n");
27d1a0d267SMarcel Moolenaar }
28d1a0d267SMarcel Moolenaar 
29d1a0d267SMarcel Moolenaar void
test_syslog_close(void)30d1a0d267SMarcel Moolenaar test_syslog_close (void)
31d1a0d267SMarcel Moolenaar {
32d1a0d267SMarcel Moolenaar     printf("syslog close\n");
33d1a0d267SMarcel Moolenaar }
34d1a0d267SMarcel Moolenaar 
35d1a0d267SMarcel Moolenaar void
test_syslog_send(const char * full_msg,const char * v0_hdr,const char * text_only)36d1a0d267SMarcel Moolenaar test_syslog_send (const char *full_msg, const char *v0_hdr,
37d1a0d267SMarcel Moolenaar 		  const char *text_only)
38d1a0d267SMarcel Moolenaar {
39d1a0d267SMarcel Moolenaar     printf("{{%s}}\n{{%s}}\n{{%s}}\n\n", full_msg, v0_hdr, text_only);
40d1a0d267SMarcel Moolenaar }
41d1a0d267SMarcel Moolenaar 
42d1a0d267SMarcel Moolenaar int
main(int argc,char ** argv)43d1a0d267SMarcel Moolenaar main (int argc, char **argv)
44d1a0d267SMarcel Moolenaar {
45d1a0d267SMarcel Moolenaar     int unit_test = 1;
46d1a0d267SMarcel Moolenaar     int fire = 0;
47d1a0d267SMarcel Moolenaar     const char *tzone = "EST";
48d1a0d267SMarcel Moolenaar 
49d1a0d267SMarcel Moolenaar     argc = xo_parse_args(argc, argv);
50d1a0d267SMarcel Moolenaar     if (argc < 0)
51d1a0d267SMarcel Moolenaar 	return 1;
52d1a0d267SMarcel Moolenaar 
53d1a0d267SMarcel Moolenaar     for (argc = 1; argv[argc]; argc++) {
54*76afb20cSPhil Shafer 	if (xo_streq(argv[argc], "full"))
55d1a0d267SMarcel Moolenaar 	    unit_test = 0;
56*76afb20cSPhil Shafer 	else if (xo_streq(argv[argc], "fire"))
57d1a0d267SMarcel Moolenaar 	    fire = 1;
58*76afb20cSPhil Shafer 	else if (xo_streq(argv[argc], "tz"))
59d1a0d267SMarcel Moolenaar 	    tzone = argv[++argc];
60d1a0d267SMarcel Moolenaar     }
61d1a0d267SMarcel Moolenaar 
62d1a0d267SMarcel Moolenaar     setenv("TZ", tzone, 1);
63d1a0d267SMarcel Moolenaar     tzset();
64d1a0d267SMarcel Moolenaar 
65d1a0d267SMarcel Moolenaar     if (!fire) {
66d1a0d267SMarcel Moolenaar 	xo_set_syslog_handler(test_syslog_open, test_syslog_send,
67d1a0d267SMarcel Moolenaar 			      test_syslog_close);
68d1a0d267SMarcel Moolenaar     }
69d1a0d267SMarcel Moolenaar 
70d1a0d267SMarcel Moolenaar     if (unit_test) {
71d1a0d267SMarcel Moolenaar 	xo_set_unit_test_mode(1);
72d1a0d267SMarcel Moolenaar 	xo_open_log("test-program", LOG_PERROR, 0);
73d1a0d267SMarcel Moolenaar     }
74d1a0d267SMarcel Moolenaar 
75d1a0d267SMarcel Moolenaar     xo_set_version("3.1.4");
76d1a0d267SMarcel Moolenaar     xo_set_syslog_enterprise_id(42); /* SunOs */
77d1a0d267SMarcel Moolenaar 
78d1a0d267SMarcel Moolenaar     xo_open_container_h(NULL, "top");
79d1a0d267SMarcel Moolenaar 
80d1a0d267SMarcel Moolenaar     xo_syslog(LOG_INFO | LOG_KERN, "animal-status",
81d1a0d267SMarcel Moolenaar 	      "The {:animal} is {:state}", "snake", "loose");
82d1a0d267SMarcel Moolenaar     xo_syslog(LOG_INFO | LOG_MAIL, "animal-consumed",
83d1a0d267SMarcel Moolenaar 	      "My {:animal} ate your {:pet}", "snake", "hamster");
84d1a0d267SMarcel Moolenaar     xo_syslog(LOG_NOTICE | LOG_DAEMON, "animal-talk",
85d1a0d267SMarcel Moolenaar 	      "{:count/%d} {:animal} said {:quote}", 1, "owl", "\"e=m\\c[2]\"");
86d1a0d267SMarcel Moolenaar 
87d1a0d267SMarcel Moolenaar     /*
88d1a0d267SMarcel Moolenaar       <165>1 2003-10-11T22:14:15.003Z mymachine.example.com
89d1a0d267SMarcel Moolenaar            evntslog - ID47 [exampleSDID@32473 iut="3" eventSource=
90d1a0d267SMarcel Moolenaar            "Application" eventID="1011"] BOMAn application
91d1a0d267SMarcel Moolenaar            event log entry...
92d1a0d267SMarcel Moolenaar 
93d1a0d267SMarcel Moolenaar    This example is modeled after Example 1.  However, this time it
94d1a0d267SMarcel Moolenaar    contains STRUCTURED-DATA, a single element with the value
95d1a0d267SMarcel Moolenaar    "[exampleSDID@32473 iut="3" eventSource="Application"
96d1a0d267SMarcel Moolenaar    eventID="1011"]".  The MSG itself is "An application event log
97d1a0d267SMarcel Moolenaar    entry..."  The BOM at the beginning of MSG indicates UTF-8 encoding.
98d1a0d267SMarcel Moolenaar     */
99d1a0d267SMarcel Moolenaar 
100d1a0d267SMarcel Moolenaar     xo_set_syslog_enterprise_id(32473);
101d1a0d267SMarcel Moolenaar     xo_syslog(LOG_LOCAL4 | LOG_NOTICE, "ID47",
102d1a0d267SMarcel Moolenaar 	      "{e:iut/%u}An {:event-source} {:event-id/%u} log entry",
103d1a0d267SMarcel Moolenaar 	      3, "application", 1011);
104d1a0d267SMarcel Moolenaar 
105d1a0d267SMarcel Moolenaar     xo_close_container_h(NULL, "top");
106d1a0d267SMarcel Moolenaar 
107d1a0d267SMarcel Moolenaar     xo_finish();
108d1a0d267SMarcel Moolenaar 
109d1a0d267SMarcel Moolenaar     return 0;
110d1a0d267SMarcel Moolenaar }
111