datadog_agent_metrics_v3/
constants.rs

1// Protocol Buffers field numbers for series and sketch payload messages in the V3 format.
2//
3// These field numbers come from the Protocol Buffers definitions in `lib/protos/datadog/proto/agent-payload/intake_v3.proto`.
4pub(crate) const DICT_NAME_STR_FIELD_NUMBER: u32 = 1;
5pub(crate) const DICT_TAGS_STR_FIELD_NUMBER: u32 = 2;
6pub(crate) const DICT_TAGSETS_FIELD_NUMBER: u32 = 3;
7pub(crate) const DICT_RESOURCE_STR_FIELD_NUMBER: u32 = 4;
8pub(crate) const DICT_RESOURCE_LEN_FIELD_NUMBER: u32 = 5;
9pub(crate) const DICT_RESOURCE_TYPE_FIELD_NUMBER: u32 = 6;
10pub(crate) const DICT_RESOURCE_NAME_FIELD_NUMBER: u32 = 7;
11pub(crate) const DICT_SOURCE_TYPE_NAME_FIELD_NUMBER: u32 = 8;
12pub(crate) const DICT_ORIGIN_INFO_FIELD_NUMBER: u32 = 9;
13pub(crate) const TYPES_FIELD_NUMBER: u32 = 10;
14pub(crate) const NAMES_FIELD_NUMBER: u32 = 11;
15pub(crate) const TAGS_FIELD_NUMBER: u32 = 12;
16pub(crate) const RESOURCES_FIELD_NUMBER: u32 = 13;
17pub(crate) const INTERVALS_FIELD_NUMBER: u32 = 14;
18pub(crate) const NUM_POINTS_FIELD_NUMBER: u32 = 15;
19pub(crate) const TIMESTAMPS_FIELD_NUMBER: u32 = 16;
20pub(crate) const VALS_SINT64_FIELD_NUMBER: u32 = 17;
21pub(crate) const VALS_FLOAT32_FIELD_NUMBER: u32 = 18;
22pub(crate) const VALS_FLOAT64_FIELD_NUMBER: u32 = 19;
23pub(crate) const SKETCH_NUM_BINS_FIELD_NUMBER: u32 = 20;
24pub(crate) const SKETCH_BIN_KEYS_FIELD_NUMBER: u32 = 21;
25pub(crate) const SKETCH_BIN_CNTS_FIELD_NUMBER: u32 = 22;
26pub(crate) const SOURCE_TYPE_NAME_FIELD_NUMBER: u32 = 23;
27pub(crate) const ORIGIN_INFO_FIELD_NUMBER: u32 = 24;
28pub(crate) const DICT_UNIT_STR_FIELD_NUMBER: u32 = 25;
29pub(crate) const UNIT_REFS_FIELD_NUMBER: u32 = 26;
30
31/// Display names for the V3 columns, indexed by their Protocol Buffers field number (from
32/// `lib/protos/datadog/proto/agent-payload/intake_v3.proto`, also mirrored in
33/// `datadog_agent_metrics_v3::writer` as the `*_FIELD_NUMBER` constants). Index 0 is unused since
34/// field numbers start at 1.
35pub const COLUMN_NAMES: [&str; 27] = [
36    "reserved",
37    "DictNameStr",
38    "DictTagsStr",
39    "DictTagsets",
40    "DictResourceStr",
41    "DictResourcesLen",
42    "DictResourceType",
43    "DictResourceName",
44    "DictSourceTypeName",
45    "DictOriginInfo",
46    "Type",
47    "Name",
48    "Tags",
49    "Resources",
50    "Interval",
51    "NumPoints",
52    "Timestamp",
53    "ValueSint64",
54    "ValueFloat32",
55    "ValueFloat64",
56    "SketchNBins",
57    "SketchBinKeys",
58    "SketchBinCounts",
59    "SourceTypeName",
60    "OriginInfo",
61    "DictUnitStr",
62    "UnitRef",
63];
64
65#[cfg(test)]
66mod tests {
67    use super::*;
68
69    #[test]
70    fn field_numbers_match_column_names() {
71        let pairs: &[(u32, &str)] = &[
72            (DICT_NAME_STR_FIELD_NUMBER, "DictNameStr"),
73            (DICT_TAGS_STR_FIELD_NUMBER, "DictTagsStr"),
74            (DICT_TAGSETS_FIELD_NUMBER, "DictTagsets"),
75            (DICT_RESOURCE_STR_FIELD_NUMBER, "DictResourceStr"),
76            (DICT_RESOURCE_LEN_FIELD_NUMBER, "DictResourcesLen"),
77            (DICT_RESOURCE_TYPE_FIELD_NUMBER, "DictResourceType"),
78            (DICT_RESOURCE_NAME_FIELD_NUMBER, "DictResourceName"),
79            (DICT_SOURCE_TYPE_NAME_FIELD_NUMBER, "DictSourceTypeName"),
80            (DICT_ORIGIN_INFO_FIELD_NUMBER, "DictOriginInfo"),
81            (TYPES_FIELD_NUMBER, "Type"),
82            (NAMES_FIELD_NUMBER, "Name"),
83            (TAGS_FIELD_NUMBER, "Tags"),
84            (RESOURCES_FIELD_NUMBER, "Resources"),
85            (INTERVALS_FIELD_NUMBER, "Interval"),
86            (NUM_POINTS_FIELD_NUMBER, "NumPoints"),
87            (TIMESTAMPS_FIELD_NUMBER, "Timestamp"),
88            (VALS_SINT64_FIELD_NUMBER, "ValueSint64"),
89            (VALS_FLOAT32_FIELD_NUMBER, "ValueFloat32"),
90            (VALS_FLOAT64_FIELD_NUMBER, "ValueFloat64"),
91            (SKETCH_NUM_BINS_FIELD_NUMBER, "SketchNBins"),
92            (SKETCH_BIN_KEYS_FIELD_NUMBER, "SketchBinKeys"),
93            (SKETCH_BIN_CNTS_FIELD_NUMBER, "SketchBinCounts"),
94            (SOURCE_TYPE_NAME_FIELD_NUMBER, "SourceTypeName"),
95            (ORIGIN_INFO_FIELD_NUMBER, "OriginInfo"),
96            (DICT_UNIT_STR_FIELD_NUMBER, "DictUnitStr"),
97            (UNIT_REFS_FIELD_NUMBER, "UnitRef"),
98        ];
99
100        for (field_number, expected_name) in pairs {
101            assert_eq!(
102                COLUMN_NAMES[*field_number as usize], *expected_name,
103                "field number {field_number} should index COLUMN_NAMES to \"{expected_name}\""
104            );
105        }
106    }
107}