Merge pull request #2806 from rorysexton/dev_turbostat_plugin
[collectd.git] / src / utils_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 "testing.h"
24 #include "utils_format_stackdriver.h"
25
26 DEF_TEST(sd_format_metric_descriptor) {
27   value_list_t vl = {
28       .host = "example.com", .plugin = "unit-test", .type = "example",
29   };
30   char got[1024];
31
32   data_set_t ds_single = {
33       .type = "example",
34       .ds_num = 1,
35       .ds =
36           &(data_source_t){
37               .name = "value", .type = DS_TYPE_GAUGE, .min = NAN, .max = NAN,
38           },
39   };
40   EXPECT_EQ_INT(
41       0, sd_format_metric_descriptor(got, sizeof(got), &ds_single, &vl, 0));
42   char const *want_single =
43       "{\"type\":\"custom.googleapis.com/collectd/unit_test/"
44       "example\",\"metricKind\":\"GAUGE\",\"valueType\":\"DOUBLE\",\"labels\":["
45       "{\"key\":\"host\",\"valueType\":\"STRING\"},{\"key\":\"plugin_"
46       "instance\",\"valueType\":\"STRING\"},{\"key\":\"type_instance\","
47       "\"valueType\":\"STRING\"}]}";
48   EXPECT_EQ_STR(want_single, got);
49
50   data_set_t ds_double = {
51       .type = "example",
52       .ds_num = 2,
53       .ds =
54           (data_source_t[]){
55               {.name = "one", .type = DS_TYPE_DERIVE, .min = 0, .max = NAN},
56               {.name = "two", .type = DS_TYPE_DERIVE, .min = 0, .max = NAN},
57           },
58   };
59   EXPECT_EQ_INT(
60       0, sd_format_metric_descriptor(got, sizeof(got), &ds_double, &vl, 0));
61   char const *want_double =
62       "{\"type\":\"custom.googleapis.com/collectd/unit_test/"
63       "example_one\",\"metricKind\":\"CUMULATIVE\",\"valueType\":\"INT64\","
64       "\"labels\":[{\"key\":\"host\",\"valueType\":\"STRING\"},{\"key\":"
65       "\"plugin_instance\",\"valueType\":\"STRING\"},{\"key\":\"type_"
66       "instance\",\"valueType\":\"STRING\"}]}";
67   EXPECT_EQ_STR(want_double, got);
68   return 0;
69 }
70
71 int main(int argc, char **argv) {
72   RUN_TEST(sd_format_metric_descriptor);
73
74   END_TEST;
75 }