Skip to content

Commit e1170f2

Browse files
committed
Mpls tests
1 parent 7cb0d28 commit e1170f2

File tree

1 file changed

+146
-1
lines changed

1 file changed

+146
-1
lines changed

src/tc/filters/flower/mpls.rs

Lines changed: 146 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ impl<'a, T: AsRef<[u8]> + ?Sized> Parseable<NlaBuffer<&'a T>> for LseFilter {
149149
NlasIterator::new(payload)
150150
.map(|nla| LseOptions::parse(&nla?))
151151
.collect::<Result<Vec<_>, _>>()
152-
.map(|opts| LseFilter::try_from(opts))?
152+
.map(LseFilter::try_from)?
153153
}
154154
}
155155

@@ -287,3 +287,148 @@ impl From<Vec<LseFilter>> for Options {
287287
Self::Lses(value)
288288
}
289289
}
290+
291+
#[cfg(test)]
292+
mod tests {
293+
use super::*;
294+
295+
#[test]
296+
fn parse_back_lse_options_depth_zero() {
297+
let example = LseOptions::Depth(0);
298+
let mut buffer = vec![0; example.buffer_len()];
299+
example.emit(&mut buffer);
300+
let parsed =
301+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
302+
.unwrap();
303+
assert_eq!(example, parsed);
304+
}
305+
306+
#[test]
307+
fn parse_back_lse_options_depth_example() {
308+
let example = LseOptions::Depth(0xab);
309+
let mut buffer = vec![0; example.buffer_len()];
310+
example.emit(&mut buffer);
311+
let parsed =
312+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
313+
.unwrap();
314+
assert_eq!(example, parsed);
315+
}
316+
317+
#[test]
318+
fn parse_back_lse_options_label_zero() {
319+
let example = LseOptions::Label(mpls::Label::new(0).unwrap());
320+
let mut buffer = vec![0; example.buffer_len()];
321+
example.emit(&mut buffer);
322+
let parsed =
323+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
324+
.unwrap();
325+
assert_eq!(example, parsed);
326+
}
327+
328+
#[test]
329+
fn parse_back_lse_options_label_example() {
330+
let example = LseOptions::Label(mpls::Label::new(0x12345).unwrap());
331+
let mut buffer = vec![0; example.buffer_len()];
332+
example.emit(&mut buffer);
333+
let parsed =
334+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
335+
.unwrap();
336+
assert_eq!(example, parsed);
337+
}
338+
339+
#[test]
340+
fn parse_back_lse_options_tc_zero() {
341+
let example =
342+
LseOptions::TrafficClass(mpls::TrafficClass::new(0).unwrap());
343+
let mut buffer = vec![0; example.buffer_len()];
344+
example.emit(&mut buffer);
345+
let parsed =
346+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
347+
.unwrap();
348+
assert_eq!(example, parsed);
349+
}
350+
351+
#[test]
352+
fn parse_back_lse_options_tc_example() {
353+
let example =
354+
LseOptions::TrafficClass(mpls::TrafficClass::new(0x3).unwrap());
355+
let mut buffer = vec![0; example.buffer_len()];
356+
example.emit(&mut buffer);
357+
let parsed =
358+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
359+
.unwrap();
360+
assert_eq!(example, parsed);
361+
}
362+
363+
#[test]
364+
fn parse_back_lse_options_bos_unset() {
365+
let example = LseOptions::BottomOfStack(mpls::BottomOfStack::Unset);
366+
let mut buffer = vec![0; example.buffer_len()];
367+
example.emit(&mut buffer);
368+
let parsed =
369+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
370+
.unwrap();
371+
assert_eq!(example, parsed);
372+
}
373+
374+
#[test]
375+
fn parse_back_lse_options_bos_set() {
376+
let example = LseOptions::BottomOfStack(mpls::BottomOfStack::Set);
377+
let mut buffer = vec![0; example.buffer_len()];
378+
example.emit(&mut buffer);
379+
let parsed =
380+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
381+
.unwrap();
382+
assert_eq!(example, parsed);
383+
}
384+
385+
#[test]
386+
fn parse_back_lse_options_ttl_zero() {
387+
let example = LseOptions::Ttl(0);
388+
let mut buffer = vec![0; example.buffer_len()];
389+
example.emit(&mut buffer);
390+
let parsed =
391+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
392+
.unwrap();
393+
assert_eq!(example, parsed);
394+
}
395+
396+
#[test]
397+
fn parse_back_lse_options_ttl_example() {
398+
let example = LseOptions::Ttl(0x34);
399+
let mut buffer = vec![0; example.buffer_len()];
400+
example.emit(&mut buffer);
401+
let parsed =
402+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
403+
.unwrap();
404+
assert_eq!(example, parsed);
405+
}
406+
407+
#[test]
408+
fn parse_back_lse_filter_default() {
409+
let example = LseFilter::default();
410+
let mut buffer = vec![0; example.buffer_len()];
411+
example.emit(&mut buffer);
412+
let parsed =
413+
LseFilter::parse(&NlaBuffer::new_checked(&buffer).unwrap())
414+
.unwrap();
415+
assert_eq!(example, parsed);
416+
}
417+
418+
#[test]
419+
fn parse_back_lse_filter_example() {
420+
let example = LseFilter {
421+
depth: 1,
422+
label: Some(mpls::Label::new(0x12345).unwrap()),
423+
traffic_class: Some(mpls::TrafficClass::new(0x3).unwrap()),
424+
bottom_of_stack: Some(mpls::BottomOfStack::Set),
425+
ttl: Some(0x34),
426+
};
427+
let mut buffer = vec![0; example.buffer_len()];
428+
example.emit(&mut buffer);
429+
let parsed =
430+
LseFilter::parse(&NlaBuffer::new_checked(&buffer).unwrap())
431+
.unwrap();
432+
assert_eq!(example, parsed);
433+
}
434+
}

0 commit comments

Comments
 (0)