linkerd2_proxy_api/
tap.rs1include!("gen/io.linkerd.proxy.tap.rs");
2
3impl From<h2::Reason> for Eos {
6 fn from(reason: h2::Reason) -> Self {
7 let end = eos::End::ResetErrorCode(reason.into());
8 Eos { end: Some(end) }
9 }
10}
11
12impl Eos {
13 pub fn from_grpc_status(code: u32) -> Self {
14 let end = eos::End::GrpcStatusCode(code);
15 Eos { end: Some(end) }
16 }
17}
18
19#[cfg(feature = "arbitrary")]
20mod arbitary {
21 use super::*;
22 use crate::{http_types::*, net::*};
23 use quickcheck::*;
24
25 impl Arbitrary for ObserveRequest {
26 fn arbitrary(g: &mut Gen) -> Self {
27 ObserveRequest {
28 limit: Arbitrary::arbitrary(g),
29 r#match: Arbitrary::arbitrary(g),
30 extract: Arbitrary::arbitrary(g),
31 }
32 }
33 }
34
35 impl Arbitrary for observe_request::Match {
36 fn arbitrary(g: &mut Gen) -> Self {
37 observe_request::Match {
38 r#match: Arbitrary::arbitrary(g),
39 }
40 }
41 }
42
43 impl Arbitrary for observe_request::r#match::Match {
44 fn arbitrary(g: &mut Gen) -> Self {
45 match u32::arbitrary(g) % 6 {
46 0 => observe_request::r#match::Match::All(Arbitrary::arbitrary(g)),
47 1 => observe_request::r#match::Match::Any(Arbitrary::arbitrary(g)),
48 2 => observe_request::r#match::Match::Not(Box::new(Arbitrary::arbitrary(g))),
49 3 => observe_request::r#match::Match::Source(Arbitrary::arbitrary(g)),
50 4 => observe_request::r#match::Match::Destination(Arbitrary::arbitrary(g)),
51 5 => observe_request::r#match::Match::Http(Arbitrary::arbitrary(g)),
52 _ => unreachable!(),
53 }
54 }
55 }
56
57 impl Arbitrary for observe_request::r#match::Seq {
58 fn arbitrary(g: &mut Gen) -> Self {
59 observe_request::r#match::Seq {
60 matches: Arbitrary::arbitrary(g),
61 }
62 }
63
64 fn shrink(&self) -> Box<dyn Iterator<Item = Self>> {
65 Box::new(
66 self.matches
67 .shrink()
68 .map(|matches| observe_request::r#match::Seq { matches }),
69 )
70 }
71 }
72
73 impl Arbitrary for observe_request::r#match::Label {
74 fn arbitrary(g: &mut Gen) -> Self {
75 observe_request::r#match::Label {
76 key: Arbitrary::arbitrary(g),
77 value: Arbitrary::arbitrary(g),
78 }
79 }
80 }
81
82 impl Arbitrary for observe_request::r#match::Tcp {
83 fn arbitrary(g: &mut Gen) -> Self {
84 observe_request::r#match::Tcp {
85 r#match: Arbitrary::arbitrary(g),
86 }
87 }
88 }
89
90 impl Arbitrary for observe_request::r#match::tcp::Match {
91 fn arbitrary(g: &mut Gen) -> Self {
92 use self::observe_request::r#match::tcp;
93
94 if bool::arbitrary(g) {
95 tcp::Match::Netmask(Arbitrary::arbitrary(g))
96 } else {
97 tcp::Match::Ports(Arbitrary::arbitrary(g))
98 }
99 }
100 }
101
102 impl Arbitrary for observe_request::r#match::tcp::PortRange {
103 fn arbitrary(g: &mut Gen) -> Self {
104 observe_request::r#match::tcp::PortRange {
105 min: Arbitrary::arbitrary(g),
106 max: Arbitrary::arbitrary(g),
107 }
108 }
109 }
110
111 impl Arbitrary for observe_request::r#match::tcp::Netmask {
112 fn arbitrary(g: &mut Gen) -> Self {
113 let ip: Option<IpAddress> = Arbitrary::arbitrary(g);
114 let mask = match ip.as_ref().and_then(|a| a.ip.as_ref()) {
115 Some(&ip_address::Ip::Ipv4(_)) => u32::arbitrary(g) % 32 + 1,
116 Some(&ip_address::Ip::Ipv6(_)) => u32::arbitrary(g) % 128 + 1,
117 None => 0u32,
118 };
119 observe_request::r#match::tcp::Netmask { ip, mask }
120 }
121 }
122
123 impl Arbitrary for observe_request::r#match::Http {
124 fn arbitrary(g: &mut Gen) -> Self {
125 observe_request::r#match::Http {
126 r#match: Arbitrary::arbitrary(g),
127 }
128 }
129 }
130
131 impl Arbitrary for observe_request::r#match::http::Match {
132 fn arbitrary(g: &mut Gen) -> Self {
133 use self::observe_request::r#match::http;
134
135 match u32::arbitrary(g) % 4 {
136 0 => http::Match::Scheme(Scheme::arbitrary(g)),
137 1 => http::Match::Method(HttpMethod::arbitrary(g)),
138 2 => http::Match::Authority(http::StringMatch::arbitrary(g)),
139 3 => http::Match::Path(http::StringMatch::arbitrary(g)),
140 _ => unreachable!(),
141 }
142 }
143 }
144
145 impl Arbitrary for observe_request::r#match::http::StringMatch {
146 fn arbitrary(g: &mut Gen) -> Self {
147 observe_request::r#match::http::StringMatch {
148 r#match: Arbitrary::arbitrary(g),
149 }
150 }
151 }
152
153 impl Arbitrary for observe_request::r#match::http::string_match::Match {
154 fn arbitrary(g: &mut Gen) -> Self {
155 use self::observe_request::r#match::http::string_match;
156
157 match u16::arbitrary(g) % 2 {
158 0 => string_match::Match::Exact(String::arbitrary(g)),
159 1 => string_match::Match::Prefix(String::arbitrary(g)),
160 _ => unreachable!(),
161 }
162 }
163 }
164
165 impl Arbitrary for observe_request::Extract {
166 fn arbitrary(g: &mut Gen) -> Self {
167 observe_request::Extract {
168 extract: Arbitrary::arbitrary(g),
169 }
170 }
171 }
172
173 impl Arbitrary for observe_request::extract::Extract {
174 fn arbitrary(g: &mut Gen) -> Self {
175 observe_request::extract::Extract::Http(Arbitrary::arbitrary(g))
176 }
177 }
178
179 impl Arbitrary for observe_request::extract::Http {
180 fn arbitrary(g: &mut Gen) -> Self {
181 observe_request::extract::Http {
182 extract: Arbitrary::arbitrary(g),
183 }
184 }
185 }
186
187 impl Arbitrary for observe_request::extract::http::Extract {
188 fn arbitrary(g: &mut Gen) -> Self {
189 observe_request::extract::http::Extract::Headers(Arbitrary::arbitrary(g))
190 }
191 }
192
193 impl Arbitrary for observe_request::extract::http::Headers {
194 fn arbitrary(_: &mut Gen) -> Self {
195 Self {}
196 }
197 }
198}