Clean up monitoring format/naming
[trust_router.git] / mon / tests / test_mon_req_encode.c
1 //
2 // Created by jlr on 4/9/18.
3 //
4
5 #include <talloc.h>
6 #include <jansson.h>
7 #include <assert.h>
8 #include <string.h>
9 #include <glib.h>
10
11 #include <mon_internal.h>
12
13 #define JSON_DUMP_OPTS 0
14
15 static char *reconfigure()
16 {
17   MON_REQ *req = mon_req_new(NULL, MON_CMD_RECONFIGURE);
18   json_t *req_json = mon_req_encode(req);
19   char *result = json_dumps(req_json, JSON_DUMP_OPTS);
20   assert(req);
21   assert(req_json);
22   assert(result);
23   json_decref(req_json);
24   mon_req_free(req);
25   return result;
26 }
27
28 static char *show_plain()
29 {
30   MON_REQ *req = mon_req_new(NULL, MON_CMD_SHOW);
31   json_t *req_json = mon_req_encode(req);
32   char *result = json_dumps(req_json, JSON_DUMP_OPTS);
33   assert(req);
34   assert(req_json);
35   assert(result);
36   json_decref(req_json);
37   mon_req_free(req);
38   return result;
39 }
40
41 static char *show_options(const MON_OPT_TYPE *opts)
42 {
43   MON_REQ *req = mon_req_new(NULL, MON_CMD_SHOW);
44   json_t *req_json = NULL;
45   char *result = NULL;
46
47   assert(req);
48
49   while (*opts != OPT_TYPE_UNKNOWN) {
50     assert(MON_SUCCESS == mon_req_add_option(req, *opts));
51     opts++;
52   }
53
54   req_json = mon_req_encode(req);
55   assert(req_json);
56
57   result = json_dumps(req_json, JSON_DUMP_OPTS);
58   assert(result);
59
60   json_decref(req_json);
61   mon_req_free(req);
62   return result;
63 }
64
65 static char *read_file(const char *filename)
66 {
67   FILE *f = fopen(filename, "r");
68   char *s = NULL;
69   size_t nn = 0;
70   ssize_t n = getline(&s, &nn, f);
71   fclose(f);
72
73   if( (n > 0) && (s[n-1] == '\n'))
74     s[n-1] = 0;
75
76   return s;
77 }
78 int main(void)
79 {
80   char *s = NULL;
81   MON_OPT_TYPE opts[10];
82   char *expected = NULL;
83
84   // Test reconfigure command
85   s = reconfigure();
86   expected = read_file("req_reconfigure.test");
87   assert(expected);
88   assert(strcmp(expected, s) == 0);
89   free(s);
90   free(expected);
91
92   // Test show without options
93   s = show_plain();
94   expected = read_file("req_show_no_options.test");
95   assert(expected);
96   assert(strcmp(expected, s) == 0);
97   free(s);
98   free(expected);
99
100   // Test show with empty options (this mostly tests the test)
101   opts[0] = OPT_TYPE_UNKNOWN;
102   s = show_options(opts);
103   expected = read_file("req_show_no_options.test");
104   assert(expected);
105   assert(strcmp(expected, s) == 0);
106   free(s);
107   free(expected);
108
109   // Test show with many options
110   opts[0] = OPT_TYPE_SHOW_CONFIG_FILES;
111   opts[1] = OPT_TYPE_SHOW_VERSION;
112   opts[2] = OPT_TYPE_SHOW_UPTIME;
113   opts[3] = OPT_TYPE_SHOW_TID_REQ_COUNT;
114   opts[4] = OPT_TYPE_SHOW_TID_REQ_PENDING;
115   opts[5] = OPT_TYPE_SHOW_ROUTES;
116   opts[6] = OPT_TYPE_SHOW_COMMUNITIES;
117   opts[7] = OPT_TYPE_UNKNOWN;
118   s = show_options(opts);
119   expected = read_file("req_show_all_options.test");
120   assert(expected);
121   assert(strcmp(expected, s) == 0);
122   free(s);
123   free(expected);
124
125   return 0;
126 }