d4935a318be01d80e57981ac172cd0833dd594ac
[collectd.git] / src / utils / format_stackdriver / format_stackdriver_test.c
1 /**
2  * collectd - src/utils_format_stackdriver_test.c
3  * ISC license
4  *
5  * Copyright (C) 2017  Florian Forster
6  *
7  * Permission to use, copy, modify, and/or distribute this software for any
8  * purpose with or without fee is hereby granted, provided that the above
9  * copyright notice and this permission notice appear in all copies.
10  *
11  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18  *
19  * Authors:
20  *   Florian Forster <octo at collectd.org>
21  **/
22
23 #include "collectd.h"
24
25 #include "testing.h"
26 #include "utils/format_stackdriver/format_stackdriver.h"
27
28 DEF_TEST(sd_format_metric_descriptor) {
29   value_list_t vl = {
30       .host = "example.com", .plugin = "unit-test", .type = "example",
31   };
32   char got[1024];
33
34   data_set_t ds_single = {
35       .type = "example",
36       .ds_num = 1,
37       .ds =
38           &(data_source_t){
39               .name = "value", .type = DS_TYPE_GAUGE, .min = NAN, .max = NAN,
40           },
41   };
42   EXPECT_EQ_INT(
43       0, sd_format_metric_descriptor(got, sizeof(got), &ds_single, &vl, 0));
44   char const *want_single =
45       "{\"type\":\"custom.googleapis.com/collectd/unit_test/"
46       "example\",\"metricKind\":\"GAUGE\",\"valueType\":\"DOUBLE\",\"labels\":["
47       "{\"key\":\"host\",\"valueType\":\"STRING\"},{\"key\":\"plugin_"
48       "instance\",\"valueType\":\"STRING\"},{\"key\":\"type_instance\","
49       "\"valueType\":\"STRING\"}]}";
50   EXPECT_EQ_STR(want_single, got);
51
52   data_set_t ds_double = {
53       .type = "example",
54       .ds_num = 2,
55       .ds =
56           (data_source_t[]){
57               {.name = "one", .type = DS_TYPE_DERIVE, .min = 0, .max = NAN},
58               {.name = "two", .type = DS_TYPE_DERIVE, .min = 0, .max = NAN},
59           },
60   };
61   EXPECT_EQ_INT(
62       0, sd_format_metric_descriptor(got, sizeof(got), &ds_double, &vl, 0));
63   char const *want_double =
64       "{\"type\":\"custom.googleapis.com/collectd/unit_test/"
65       "example_one\",\"metricKind\":\"CUMULATIVE\",\"valueType\":\"INT64\","
66       "\"labels\":[{\"key\":\"host\",\"valueType\":\"STRING\"},{\"key\":"
67       "\"plugin_instance\",\"valueType\":\"STRING\"},{\"key\":\"type_"
68       "instance\",\"valueType\":\"STRING\"}]}";
69   EXPECT_EQ_STR(want_double, got);
70   return 0;
71 }
72
73 int main(int argc, char **argv) {
74   RUN_TEST(sd_format_metric_descriptor);
75
76   END_TEST;
77 }