Add bench tests
- Add basic infrastructure for bench tests - Add bench tests for - TcpRepr::emit - UdpRepr::emit - Ipv4Repr::emit - Ipv6Repr::emitv0.7.x
parent
439e0a2cc1
commit
0d7a6255f6
|
@ -0,0 +1,107 @@
|
|||
#![feature(test)]
|
||||
|
||||
extern crate test;
|
||||
extern crate smoltcp;
|
||||
|
||||
mod wire {
|
||||
use test;
|
||||
#[cfg(feature = "proto-ipv6")]
|
||||
use smoltcp::wire::{Ipv6Address, Ipv6Repr, Ipv6Packet};
|
||||
#[cfg(feature = "proto-ipv4")]
|
||||
use smoltcp::wire::{Ipv4Address, Ipv4Repr, Ipv4Packet};
|
||||
use smoltcp::phy::{ChecksumCapabilities};
|
||||
use smoltcp::wire::{IpAddress, IpProtocol};
|
||||
use smoltcp::wire::{TcpRepr, TcpPacket, TcpSeqNumber, TcpControl};
|
||||
use smoltcp::wire::{UdpRepr, UdpPacket};
|
||||
|
||||
#[cfg(feature = "proto-ipv6")]
|
||||
const SRC_ADDR: IpAddress = IpAddress::Ipv6(Ipv6Address([0xfe, 0x80, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 1]));
|
||||
#[cfg(feature = "proto-ipv6")]
|
||||
const DST_ADDR: IpAddress = IpAddress::Ipv6(Ipv6Address([0xfe, 0x80, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 2]));
|
||||
|
||||
#[cfg(all(not(feature = "proto-ipv6"), feature = "proto-ipv4"))]
|
||||
const SRC_ADDR: IpAddress = IpAddress::Ipv4(Ipv4Address([192, 168, 1, 1]));
|
||||
#[cfg(all(not(feature = "proto-ipv6"), feature = "proto-ipv4"))]
|
||||
const DST_ADDR: IpAddress = IpAddress::Ipv4(Ipv4Address([192, 168, 1, 2]));
|
||||
|
||||
#[bench]
|
||||
#[cfg(any(feature = "proto-ipv6", feature = "proto-ipv4"))]
|
||||
fn bench_emit_tcp(b: &mut test::Bencher) {
|
||||
static PAYLOAD_BYTES: [u8; 400] =
|
||||
[0x2a; 400];
|
||||
let repr = TcpRepr {
|
||||
src_port: 48896,
|
||||
dst_port: 80,
|
||||
seq_number: TcpSeqNumber(0x01234567),
|
||||
ack_number: None,
|
||||
window_len: 0x0123,
|
||||
control: TcpControl::Syn,
|
||||
max_seg_size: None,
|
||||
payload: &PAYLOAD_BYTES
|
||||
};
|
||||
let mut bytes = vec![0xa5; repr.buffer_len()];
|
||||
|
||||
b.iter(|| {
|
||||
let mut packet = TcpPacket::new(&mut bytes);
|
||||
repr.emit(&mut packet, &SRC_ADDR, &DST_ADDR, &ChecksumCapabilities::default());
|
||||
});
|
||||
}
|
||||
|
||||
#[bench]
|
||||
#[cfg(any(feature = "proto-ipv6", feature = "proto-ipv4"))]
|
||||
fn bench_emit_udp(b: &mut test::Bencher) {
|
||||
static PAYLOAD_BYTES: [u8; 400] =
|
||||
[0x2a; 400];
|
||||
let repr = UdpRepr {
|
||||
src_port: 48896,
|
||||
dst_port: 80,
|
||||
payload: &PAYLOAD_BYTES
|
||||
};
|
||||
let mut bytes = vec![0xa5; repr.buffer_len()];
|
||||
|
||||
b.iter(|| {
|
||||
let mut packet = UdpPacket::new(&mut bytes);
|
||||
repr.emit(&mut packet, &SRC_ADDR, &DST_ADDR, &ChecksumCapabilities::default());
|
||||
});
|
||||
}
|
||||
|
||||
#[bench]
|
||||
#[cfg(feature = "proto-ipv4")]
|
||||
fn bench_emit_ipv4(b: &mut test::Bencher) {
|
||||
let repr = Ipv4Repr {
|
||||
src_addr: Ipv4Address([192, 168, 1, 1]),
|
||||
dst_addr: Ipv4Address([192, 168, 1, 2]),
|
||||
protocol: IpProtocol::Tcp,
|
||||
payload_len: 100,
|
||||
hop_limit: 64
|
||||
};
|
||||
let mut bytes = vec![0xa5; repr.buffer_len()];
|
||||
|
||||
b.iter(|| {
|
||||
let mut packet = Ipv4Packet::new(&mut bytes);
|
||||
repr.emit(&mut packet, &ChecksumCapabilities::default());
|
||||
});
|
||||
}
|
||||
|
||||
#[bench]
|
||||
#[cfg(feature = "proto-ipv6")]
|
||||
fn bench_emit_ipv6(b: &mut test::Bencher) {
|
||||
let repr = Ipv6Repr {
|
||||
src_addr: Ipv6Address([0xfe, 0x80, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 1]),
|
||||
dst_addr: Ipv6Address([0xfe, 0x80, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 2]),
|
||||
next_header: IpProtocol::Tcp,
|
||||
payload_len: 100,
|
||||
hop_limit: 64
|
||||
};
|
||||
let mut bytes = vec![0xa5; repr.buffer_len()];
|
||||
|
||||
b.iter(|| {
|
||||
let mut packet = Ipv6Packet::new(&mut bytes);
|
||||
repr.emit(&mut packet);
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue