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 remote_config {
89 pub use super::agent_include::datadog::config::*;
90}
91
92pub mod sketches {
94 pub use super::sketch_include::ddsketch::*;
95}
96
97pub mod checks {
99 pub use super::checks_include::datadog::checks::v1::*;
100}
101
102#[cfg(test)]
103mod tests {
104 use protobuf::Message as _;
105
106 use super::traces::{self, AgentPayload};
107
108 #[test]
109 fn agent_payload_round_trips_classic_and_indexed_tracer_payloads() {
110 let mut classic_payload = traces::TracerPayload::new();
111 classic_payload.containerID = "classic-container".to_string();
112
113 let mut indexed_payload = traces::idx::TracerPayload::new();
114 indexed_payload.strings = vec!["".to_string(), "indexed-container".to_string()];
115 indexed_payload.containerIDRef = 1;
116
117 let mut payload = AgentPayload::new();
118 payload.tracerPayloads.push(classic_payload);
119 payload.idxTracerPayloads.push(indexed_payload);
120
121 let encoded = payload.write_to_bytes().expect("payload should encode");
122 let decoded = AgentPayload::parse_from_bytes(&encoded).expect("payload should decode");
123
124 let indexed_payloads: &[traces::idx::TracerPayload] = decoded.idxTracerPayloads();
125 assert_eq!(decoded.tracerPayloads()[0].containerID(), "classic-container");
126 assert_eq!(indexed_payloads[0].containerIDRef(), 1);
127 assert_eq!(indexed_payloads[0].strings(), &["", "indexed-container"]);
128 }
129}