Compact tests using rstest

This commit is contained in:
cyqsimon
2023-10-07 22:13:14 +08:00
parent f1b49254c2
commit 72b04c82ae
16 changed files with 393 additions and 765 deletions

106
Cargo.lock generated
View File

@@ -162,6 +162,7 @@ dependencies = [
"ratatui",
"regex",
"resolv-conf",
"rstest",
"sysinfo",
"thiserror",
"tokio",
@@ -567,6 +568,21 @@ dependencies = [
"percent-encoding",
]
[[package]]
name = "futures"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
dependencies = [
"futures-channel",
"futures-core",
"futures-executor",
"futures-io",
"futures-sink",
"futures-task",
"futures-util",
]
[[package]]
name = "futures-channel"
version = "0.3.28"
@@ -574,6 +590,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
dependencies = [
"futures-core",
"futures-sink",
]
[[package]]
@@ -582,26 +599,65 @@ version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
[[package]]
name = "futures-executor"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
dependencies = [
"futures-core",
"futures-task",
"futures-util",
]
[[package]]
name = "futures-io"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
[[package]]
name = "futures-macro"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
]
[[package]]
name = "futures-sink"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
[[package]]
name = "futures-task"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
[[package]]
name = "futures-timer"
version = "3.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
[[package]]
name = "futures-util"
version = "0.3.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
dependencies = [
"futures-channel",
"futures-core",
"futures-io",
"futures-macro",
"futures-sink",
"futures-task",
"memchr",
"pin-project-lite",
"pin-utils",
"slab",
@@ -1375,6 +1431,12 @@ version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
[[package]]
name = "relative-path"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca"
[[package]]
name = "resolv-conf"
version = "0.7.0"
@@ -1385,12 +1447,50 @@ dependencies = [
"quick-error",
]
[[package]]
name = "rstest"
version = "0.18.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97eeab2f3c0a199bc4be135c36c924b6590b88c377d416494288c14f2db30199"
dependencies = [
"futures",
"futures-timer",
"rstest_macros",
"rustc_version",
]
[[package]]
name = "rstest_macros"
version = "0.18.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605"
dependencies = [
"cfg-if",
"glob",
"proc-macro2",
"quote",
"regex",
"relative-path",
"rustc_version",
"syn 2.0.38",
"unicode-ident",
]
[[package]]
name = "rustc-demangle"
version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
[[package]]
name = "rustc_version"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
dependencies = [
"semver",
]
[[package]]
name = "rustix"
version = "0.36.15"
@@ -1462,6 +1562,12 @@ dependencies = [
"libc",
]
[[package]]
name = "semver"
version = "1.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0"
[[package]]
name = "serde"
version = "1.0.188"

View File

@@ -48,6 +48,7 @@ procfs = "0.15.1"
insta = "1.33.0"
pnet_base = "0.34.0"
packet-builder = { version = "0.7.0", git = "https://github.com/cyqsimon/packet_builder.git", branch = "patch-update" }
rstest = "0.18.2"
[target.'cfg(target_os="windows")'.build-dependencies]
anyhow = "1.0.75"

View File

@@ -1,55 +0,0 @@
---
source: src/tests/cases/ui.rs
assertion_line: 1580
expression: "&terminal_draw_events_mirror[1]"
---
98Bps
5 0Bps / 28Bps
4 0Bps / 26Bps
1 0Bps / 22Bps
2 0Bps / 21Bps
3.3.3.3 0Bps / 28Bps
2.2.2.2 0Bps / 26Bps
1.1.1.1 0Bps / 22Bps
4.4.4.4 0Bps / 21Bps

View File

@@ -1,55 +0,0 @@
---
source: src/tests/cases/ui.rs
assertion_line: 1579
expression: "&terminal_draw_events_mirror[0]"
---
Total Up / Down: 0Bps / 0Bps
┌Utilization by process name────────────────────┐
│Process Up / Down │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└───────────────────────────────────────────────┘
┌Utilization by remote address──────────────────┐
│Remote Address Up / Down │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└───────────────────────────────────────────────┘
Press <SPACE> to pause.

View File

@@ -0,0 +1,55 @@
---
source: src/tests/cases/ui.rs
expression: "&terminal_draw_events_mirror[0]"
---
Total Up / Down: 0Bps / 0Bps
┌Utilization by process name─────────────────────┐
│Process Up / Down │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└────────────────────────────────────────────────┘
┌Utilization by remote address───────────────────┐
│Remote Address Up / Down │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└────────────────────────────────────────────────┘
Press <SPACE> to pause.

View File

@@ -0,0 +1,55 @@
---
source: src/tests/cases/ui.rs
expression: "&terminal_draw_events_mirror[1]"
---
98Bps
5 0Bps / 28Bps
4 0Bps / 26Bps
1 0Bps / 22Bps
2 0Bps / 21Bps
3.3.3.3 0Bps / 28Bps
2.2.2.2 0Bps / 26Bps
1.1.1.1 0Bps / 22Bps
4.4.4.4 0Bps / 21Bps

View File

@@ -9,6 +9,7 @@ use crossterm::event::{Event, KeyCode, KeyEvent, KeyModifiers};
use packet_builder::*;
use pnet::{datalink::DataLinkReceiver, packet::Packet};
use pnet_base::MacAddr;
use rstest::fixture;
use crate::{
network::dns::Client,
@@ -56,7 +57,8 @@ pub fn build_tcp_packet(
pkt.packet().to_vec()
}
pub fn sample_frames() -> Vec<Box<dyn DataLinkReceiver>> {
#[fixture]
pub fn sample_frames_short() -> Vec<Box<dyn DataLinkReceiver>> {
vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"10.0.0.2",
@@ -82,6 +84,125 @@ pub fn sample_frames() -> Vec<Box<dyn DataLinkReceiver>> {
]) as Box<dyn DataLinkReceiver>]
}
#[fixture]
pub fn sample_frames_sustained_one_process() -> Vec<Box<dyn DataLinkReceiver>> {
vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1",
)),
None, // sleep
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"Same here, but one second later",
)),
]) as Box<dyn DataLinkReceiver>]
}
#[fixture]
pub fn sample_frames_sustained_multiple_processes() -> Vec<Box<dyn DataLinkReceiver>> {
vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I come from 3.3.3.3",
)),
None, // sleep
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1 one second later",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I come 3.3.3.3 one second later",
)),
]) as Box<dyn DataLinkReceiver>]
}
#[fixture]
pub fn sample_frames_sustained_long() -> Vec<Box<dyn DataLinkReceiver>> {
vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"omw to 3.3.3.3",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I was just there!",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"Is it nice there? I think 1.1.1.1 is dull",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"Well, I heard 1.1.1.1 is all the rage",
)),
None, // sleep
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"Wait for me!",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"They're waiting for you...",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"1.1.1.1 forever!",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"10.0.0.2 forever!",
)),
]) as Box<dyn DataLinkReceiver>]
}
pub fn os_input_output(
network_frames: Vec<Box<dyn DataLinkReceiver>>,
sleep_num: usize,

View File

@@ -3,12 +3,15 @@ use std::{collections::HashMap, iter, net::IpAddr};
use crossterm::event::{Event, KeyCode, KeyEvent, KeyModifiers};
use insta::assert_snapshot;
use pnet::datalink::DataLinkReceiver;
use rstest::rstest;
use crate::{
start,
tests::{
cases::test_utils::{
build_tcp_packet, opts_ui, os_input_output, os_input_output_factory, sample_frames,
build_tcp_packet, opts_ui, os_input_output, os_input_output_factory,
sample_frames_short, sample_frames_sustained_long,
sample_frames_sustained_multiple_processes, sample_frames_sustained_one_process,
sleep_and_quit_events, sleep_resize_and_quit_events, test_backend_factory,
},
fakes::{
@@ -266,12 +269,10 @@ fn basic_only_addresses() {
assert_snapshot!(&terminal_draw_events_mirror[0]);
}
#[test]
fn two_packets_only_processes() {
let network_frames = sample_frames();
#[rstest(sample_frames_short as frames)]
fn two_packets_only_processes(frames: Vec<Box<dyn DataLinkReceiver>>) {
let (_, terminal_draw_events, backend) = test_backend_factory(190, 50);
let os_input = os_input_output(network_frames, 2);
let os_input = os_input_output(frames, 2);
let opts = Opt {
interface: Some(String::from("interface_name")),
raw: false,
@@ -292,12 +293,10 @@ fn two_packets_only_processes() {
assert_snapshot!(&terminal_draw_events_mirror[1]);
}
#[test]
fn two_packets_only_connections() {
let network_frames = sample_frames();
#[rstest(sample_frames_short as frames)]
fn two_packets_only_connections(frames: Vec<Box<dyn DataLinkReceiver>>) {
let (_, terminal_draw_events, backend) = test_backend_factory(190, 50);
let os_input = os_input_output(network_frames, 2);
let os_input = os_input_output(frames, 2);
let opts = Opt {
interface: Some(String::from("interface_name")),
raw: false,
@@ -318,12 +317,10 @@ fn two_packets_only_connections() {
assert_snapshot!(&terminal_draw_events_mirror[1]);
}
#[test]
fn two_packets_only_addresses() {
let network_frames = sample_frames();
#[rstest(sample_frames_short as frames)]
fn two_packets_only_addresses(frames: Vec<Box<dyn DataLinkReceiver>>) {
let (_, terminal_draw_events, backend) = test_backend_factory(190, 50);
let os_input = os_input_output(network_frames, 2);
let os_input = os_input_output(frames, 2);
let opts = Opt {
interface: Some(String::from("interface_name")),
raw: false,
@@ -426,12 +423,10 @@ fn one_packet_of_traffic() {
assert_snapshot!(&terminal_draw_events_mirror[1]);
}
#[test]
fn bi_directional_traffic() {
let network_frames = sample_frames();
#[rstest(sample_frames_short as frames)]
fn bi_directional_traffic(frames: Vec<Box<dyn DataLinkReceiver>>) {
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
let os_input = os_input_output(network_frames, 2);
let os_input = os_input_output(frames, 2);
let opts = opts_ui();
start(backend, os_input, opts);
let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap();
@@ -653,29 +648,11 @@ fn multiple_connections_from_remote_address() {
assert_snapshot!(&terminal_draw_events_mirror[1]);
}
#[test]
fn sustained_traffic_from_one_process() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1",
)),
None, // sleep
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"Same here, but one second later",
)),
]) as Box<dyn DataLinkReceiver>];
#[rstest(sample_frames_sustained_one_process as frames)]
fn sustained_traffic_from_one_process(frames: Vec<Box<dyn DataLinkReceiver>>) {
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
let os_input = os_input_output(network_frames, 3);
let os_input = os_input_output(frames, 3);
let opts = opts_ui();
start(backend, os_input, opts);
let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap();
@@ -694,29 +671,11 @@ fn sustained_traffic_from_one_process() {
assert_snapshot!(&terminal_draw_events_mirror[2]);
}
#[test]
fn sustained_traffic_from_one_process_total() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1",
)),
None, // sleep
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"Same here, but one second later",
)),
]) as Box<dyn DataLinkReceiver>];
#[rstest(sample_frames_sustained_one_process as frames)]
fn sustained_traffic_from_one_process_total(frames: Vec<Box<dyn DataLinkReceiver>>) {
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
let os_input = os_input_output(network_frames, 3);
let os_input = os_input_output(frames, 3);
let mut opts = opts_ui();
opts.render_opts.total_utilization = true;
start(backend, os_input, opts);
@@ -736,43 +695,11 @@ fn sustained_traffic_from_one_process_total() {
assert_snapshot!(&terminal_draw_events_mirror[2].replace("1 \n", "2 \n"));
}
#[test]
fn sustained_traffic_from_multiple_processes() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I come from 3.3.3.3",
)),
None, // sleep
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1 one second later",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I come 3.3.3.3 one second later",
)),
]) as Box<dyn DataLinkReceiver>];
#[rstest(sample_frames_sustained_multiple_processes as frames)]
fn sustained_traffic_from_multiple_processes(frames: Vec<Box<dyn DataLinkReceiver>>) {
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
let os_input = os_input_output(network_frames, 3);
let os_input = os_input_output(frames, 3);
let opts = opts_ui();
start(backend, os_input, opts);
let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap();
@@ -791,43 +718,11 @@ fn sustained_traffic_from_multiple_processes() {
assert_snapshot!(&terminal_draw_events_mirror[2]);
}
#[test]
fn sustained_traffic_from_multiple_processes_total() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I come from 3.3.3.3",
)),
None, // sleep
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1 one second later",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I come 3.3.3.3 one second later",
)),
]) as Box<dyn DataLinkReceiver>];
#[rstest(sample_frames_sustained_multiple_processes as frames)]
fn sustained_traffic_from_multiple_processes_total(frames: Vec<Box<dyn DataLinkReceiver>>) {
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
let os_input = os_input_output(network_frames, 3);
let os_input = os_input_output(frames, 3);
let mut opts = opts_ui();
opts.render_opts.total_utilization = true;
start(backend, os_input, opts);
@@ -847,71 +742,13 @@ fn sustained_traffic_from_multiple_processes_total() {
assert_snapshot!(&terminal_draw_events_mirror[2].replace("1 \n", "2 \n"));
}
#[test]
fn sustained_traffic_from_multiple_processes_bi_directional() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"omw to 3.3.3.3",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I was just there!",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"Is it nice there? I think 1.1.1.1 is dull",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"Well, I heard 1.1.1.1 is all the rage",
)),
None, // sleep
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"Wait for me!",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"They're waiting for you...",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"1.1.1.1 forever!",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"10.0.0.2 forever!",
)),
]) as Box<dyn DataLinkReceiver>];
#[rstest(sample_frames_sustained_long as frames)]
fn sustained_traffic_from_multiple_processes_bi_directional(
frames: Vec<Box<dyn DataLinkReceiver>>,
) {
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
let os_input = os_input_output(network_frames, 3);
let os_input = os_input_output(frames, 3);
let opts = opts_ui();
start(backend, os_input, opts);
let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap();
@@ -930,71 +767,13 @@ fn sustained_traffic_from_multiple_processes_bi_directional() {
assert_snapshot!(&terminal_draw_events_mirror[2]);
}
#[test]
fn sustained_traffic_from_multiple_processes_bi_directional_total() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"omw to 3.3.3.3",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I was just there!",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"Is it nice there? I think 1.1.1.1 is dull",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"Well, I heard 1.1.1.1 is all the rage",
)),
None, // sleep
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"Wait for me!",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"They're waiting for you...",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"1.1.1.1 forever!",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"10.0.0.2 forever!",
)),
]) as Box<dyn DataLinkReceiver>];
#[rstest(sample_frames_sustained_long as frames)]
fn sustained_traffic_from_multiple_processes_bi_directional_total(
frames: Vec<Box<dyn DataLinkReceiver>>,
) {
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
let os_input = os_input_output(network_frames, 3);
let os_input = os_input_output(frames, 3);
let mut opts = opts_ui();
opts.render_opts.total_utilization = true;
start(backend, os_input, opts);
@@ -1014,68 +793,8 @@ fn sustained_traffic_from_multiple_processes_bi_directional_total() {
assert_snapshot!(&terminal_draw_events_mirror[2].replace("1 \n", "2 \n"));
}
#[test]
fn traffic_with_host_names() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"omw to 3.3.3.3",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I was just there!",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"Is it nice there? I think 1.1.1.1 is dull",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"Well, I heard 1.1.1.1 is all the rage",
)),
None, // sleep
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"Wait for me!",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"They're waiting for you...",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"1.1.1.1 forever!",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"10.0.0.2 forever!",
)),
]) as Box<dyn DataLinkReceiver>];
#[rstest(sample_frames_sustained_long as network_frames)]
fn traffic_with_host_names(network_frames: Vec<Box<dyn DataLinkReceiver>>) {
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
let mut ips_to_hostnames = HashMap::new();
@@ -1120,68 +839,8 @@ fn traffic_with_host_names() {
assert_snapshot!(&terminal_draw_events_mirror[2]);
}
#[test]
fn truncate_long_hostnames() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"omw to 3.3.3.3",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I was just there!",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"Is it nice there? I think 1.1.1.1 is dull",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"Well, I heard 1.1.1.1 is all the rage",
)),
None, // sleep
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"Wait for me!",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"They're waiting for you...",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"1.1.1.1 forever!",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"10.0.0.2 forever!",
)),
]) as Box<dyn DataLinkReceiver>];
#[rstest(sample_frames_sustained_long as network_frames)]
fn truncate_long_hostnames(network_frames: Vec<Box<dyn DataLinkReceiver>>) {
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
let mut ips_to_hostnames = HashMap::new();
@@ -1226,67 +885,8 @@ fn truncate_long_hostnames() {
assert_snapshot!(&terminal_draw_events_mirror[2]);
}
#[test]
fn no_resolve_mode() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"omw to 3.3.3.3",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"I was just there!",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"Is it nice there? I think 1.1.1.1 is dull",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"Well, I heard 1.1.1.1 is all the rage",
)),
None, // sleep
Some(build_tcp_packet(
"10.0.0.2",
"3.3.3.3",
4435,
1337,
b"Wait for me!",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"They're waiting for you...",
)),
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"1.1.1.1 forever!",
)),
Some(build_tcp_packet(
"10.0.0.2",
"1.1.1.1",
443,
12345,
b"10.0.0.2 forever!",
)),
]) as Box<dyn DataLinkReceiver>];
#[rstest(sample_frames_sustained_long as network_frames)]
fn no_resolve_mode(network_frames: Vec<Box<dyn DataLinkReceiver>>) {
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
let mut ips_to_hostnames = HashMap::new();
@@ -1373,8 +973,13 @@ fn traffic_with_winch_event() {
assert_snapshot!(&terminal_draw_events_mirror[2]);
}
#[test]
fn layout_full_width_under_30_height() {
#[rstest]
#[case("full-width-under-30-height", 190, 29)]
#[case("under-120-width-full-height", 119, 50)]
#[case("under-120-width-under-30-height", 119, 29)]
#[case("under-50-width-under-50-height", 50, 50)]
#[case("under-70-width-under-30-height", 69, 29)]
fn layout(#[case] name: &str, #[case] width: u16, #[case] height: u16) {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"1.1.1.1",
@@ -1406,7 +1011,7 @@ fn layout_full_width_under_30_height() {
)),
]) as Box<dyn DataLinkReceiver>];
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 29);
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(width, height);
let os_input = os_input_output(network_frames, 2);
let opts = opts_ui();
@@ -1422,211 +1027,6 @@ fn layout_full_width_under_30_height() {
);
assert_eq!(terminal_draw_events_mirror.len(), 2);
assert_snapshot!(&terminal_draw_events_mirror[0]);
assert_snapshot!(&terminal_draw_events_mirror[1]);
}
#[test]
fn layout_under_120_width_full_height() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"Greetings traveller, I'm from 3.3.3.3",
)),
Some(build_tcp_packet(
"2.2.2.2",
"10.0.0.2",
54321,
4434,
b"You know, 2.2.2.2 is really nice!",
)),
Some(build_tcp_packet(
"4.4.4.4",
"10.0.0.2",
1337,
4432,
b"I'm partial to 4.4.4.4",
)),
]) as Box<dyn DataLinkReceiver>];
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(119, 50);
let os_input = os_input_output(network_frames, 2);
let opts = opts_ui();
start(backend, os_input, opts);
let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap();
let expected_terminal_events = vec![
Clear, HideCursor, Draw, HideCursor, Flush, Draw, HideCursor, Flush, ShowCursor,
];
assert_eq!(
&terminal_events.lock().unwrap()[..],
&expected_terminal_events[..]
);
assert_eq!(terminal_draw_events_mirror.len(), 2);
assert_snapshot!(&terminal_draw_events_mirror[0]);
assert_snapshot!(&terminal_draw_events_mirror[1]);
}
#[test]
fn layout_under_120_width_under_30_height() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"Greetings traveller, I'm from 3.3.3.3",
)),
Some(build_tcp_packet(
"2.2.2.2",
"10.0.0.2",
54321,
4434,
b"You know, 2.2.2.2 is really nice!",
)),
Some(build_tcp_packet(
"4.4.4.4",
"10.0.0.2",
1337,
4432,
b"I'm partial to 4.4.4.4",
)),
]) as Box<dyn DataLinkReceiver>];
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(119, 29);
let os_input = os_input_output(network_frames, 2);
let opts = opts_ui();
start(backend, os_input, opts);
let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap();
let expected_terminal_events = vec![
Clear, HideCursor, Draw, HideCursor, Flush, Draw, HideCursor, Flush, ShowCursor,
];
assert_eq!(
&terminal_events.lock().unwrap()[..],
&expected_terminal_events[..]
);
assert_eq!(terminal_draw_events_mirror.len(), 2);
assert_snapshot!(&terminal_draw_events_mirror[0]);
assert_snapshot!(&terminal_draw_events_mirror[1]);
}
#[test]
fn layout_under_50_width_under_50_height() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"Greetings traveller, I'm from 3.3.3.3",
)),
Some(build_tcp_packet(
"2.2.2.2",
"10.0.0.2",
54321,
4434,
b"You know, 2.2.2.2 is really nice!",
)),
Some(build_tcp_packet(
"4.4.4.4",
"10.0.0.2",
1337,
4432,
b"I'm partial to 4.4.4.4",
)),
]) as Box<dyn DataLinkReceiver>];
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(49, 49);
let os_input = os_input_output(network_frames, 2);
let opts = opts_ui();
start(backend, os_input, opts);
let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap();
let expected_terminal_events = vec![
Clear, HideCursor, Draw, HideCursor, Flush, Draw, HideCursor, Flush, ShowCursor,
];
assert_eq!(
&terminal_events.lock().unwrap()[..],
&expected_terminal_events[..]
);
assert_eq!(terminal_draw_events_mirror.len(), 2);
assert_snapshot!(&terminal_draw_events_mirror[0]);
assert_snapshot!(&terminal_draw_events_mirror[1]);
}
#[test]
fn layout_under_70_width_under_30_height() {
let network_frames = vec![NetworkFrames::new(vec![
Some(build_tcp_packet(
"1.1.1.1",
"10.0.0.2",
12345,
443,
b"I have come from 1.1.1.1",
)),
Some(build_tcp_packet(
"3.3.3.3",
"10.0.0.2",
1337,
4435,
b"Greetings traveller, I'm from 3.3.3.3",
)),
Some(build_tcp_packet(
"2.2.2.2",
"10.0.0.2",
54321,
4434,
b"You know, 2.2.2.2 is really nice!",
)),
Some(build_tcp_packet(
"4.4.4.4",
"10.0.0.2",
1337,
4432,
b"I'm partial to 4.4.4.4",
)),
]) as Box<dyn DataLinkReceiver>];
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(69, 29);
let os_input = os_input_output(network_frames, 2);
let opts = opts_ui();
start(backend, os_input, opts);
let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap();
let expected_terminal_events = vec![
Clear, HideCursor, Draw, HideCursor, Flush, Draw, HideCursor, Flush, ShowCursor,
];
assert_eq!(
&terminal_events.lock().unwrap()[..],
&expected_terminal_events[..]
);
assert_eq!(terminal_draw_events_mirror.len(), 2);
assert_snapshot!(&terminal_draw_events_mirror[0]);
assert_snapshot!(&terminal_draw_events_mirror[1]);
assert_snapshot!(format!("{name}-0"), &terminal_draw_events_mirror[0]);
assert_snapshot!(format!("{name}-1"), &terminal_draw_events_mirror[1]);
}