1#![deny(warnings)]
6#![allow(dead_code)]
7#![allow(clippy::enum_variant_names)]
8#![allow(clippy::doc_overindented_list_items)]
9
10pub(crate) mod serde;
11
12mod include {
13 include!(concat!(env!("OUT_DIR"), "/protos/mod.rs"));
14}
15
16mod trace_include {
17 include!(concat!(env!("OUT_DIR"), "/trace_protos/mod.rs"));
18}
19
20mod agent_include {
21 include!(concat!(env!("OUT_DIR"), "/api.mod.rs"));
22}
23
24mod sketch_include {
25 include!(concat!(env!("OUT_DIR"), "/sketch_protos/mod.rs"));
26}
27
28mod trace_piecemeal_include {
29 include!(concat!(env!("OUT_DIR"), "/trace_piecemeal/mod.rs"));
30}
31
32mod checks_include {
33 include!(concat!(env!("OUT_DIR"), "/checks.mod.rs"));
34}
35
36pub mod metrics {
38 pub use super::include::agent_payload::metric_payload::*;
39 pub use super::include::agent_payload::sketch_payload::{sketch::*, Sketch};
40 pub use super::include::agent_payload::*;
41
42 pub mod v3 {
44 pub use super::super::include::intake_v3::*;
45 }
46}
47
48pub mod events {
50 pub use super::include::agent_payload::events_payload::*;
51 pub use super::include::agent_payload::EventsPayload;
52}
53
54pub mod traces {
56 pub use super::trace_include::agent_payload::*;
57 pub use super::trace_include::classic_span::{attribute_any_value::*, attribute_array_value::*, *};
58 pub use super::trace_include::classic_tracer_payload::*;
59 pub use super::trace_include::stats::*;
60
61 pub mod builders {
63 pub use super::super::trace_piecemeal_include::datadog::trace::*;
64 }
65
66 pub mod idx {
71 pub use super::super::trace_include::idx_span::{any_value, *};
72 pub use super::super::trace_include::idx_tracer_payload::*;
73 }
74}
75
76pub mod agent {
78 pub use super::agent_include::datadog::api::v1::agent_client::AgentClient;
79 pub use super::agent_include::datadog::api::v1::agent_secure_client::AgentSecureClient;
80 pub use super::agent_include::datadog::autodiscovery::*;
81 pub use super::agent_include::datadog::model::v1::*;
82 pub use super::agent_include::datadog::remoteagent::v1::remote_agent_client::RemoteAgentClient;
83 pub use super::agent_include::datadog::remoteagent::*;
84 pub use super::agent_include::datadog::workloadmeta::*;
85}
86
87pub mod sketches {
89 pub use super::sketch_include::ddsketch::*;
90}
91
92pub mod checks {
94 pub use super::checks_include::datadog::checks::v1::*;
95}
96
97#[cfg(test)]
98mod tests {
99 use protobuf::Message as _;
100
101 use super::traces::{self, AgentPayload};
102
103 #[test]
104 fn agent_payload_round_trips_classic_and_indexed_tracer_payloads() {
105 let mut classic_payload = traces::TracerPayload::new();
106 classic_payload.containerID = "classic-container".to_string();
107
108 let mut indexed_payload = traces::idx::TracerPayload::new();
109 indexed_payload.strings = vec!["".to_string(), "indexed-container".to_string()];
110 indexed_payload.containerIDRef = 1;
111
112 let mut payload = AgentPayload::new();
113 payload.tracerPayloads.push(classic_payload);
114 payload.idxTracerPayloads.push(indexed_payload);
115
116 let encoded = payload.write_to_bytes().expect("payload should encode");
117 let decoded = AgentPayload::parse_from_bytes(&encoded).expect("payload should decode");
118
119 let indexed_payloads: &[traces::idx::TracerPayload] = decoded.idxTracerPayloads();
120 assert_eq!(decoded.tracerPayloads()[0].containerID(), "classic-container");
121 assert_eq!(indexed_payloads[0].containerIDRef(), 1);
122 assert_eq!(indexed_payloads[0].strings(), &["", "indexed-container"]);
123 }
124}