diff options
author | Aram Drevekenin <aram@poor.dev> | 2019-10-06 17:03:28 +0200 |
---|---|---|
committer | Aram Drevekenin <aram@poor.dev> | 2019-10-06 17:03:28 +0200 |
commit | 3af49b6f3356534000298f75f430289d30d70347 (patch) | |
tree | d4fcfacf78f1e16a4bd2a3a7fb788f188523bbe0 | |
parent | 6421ad4005dc7bfd782c1765cbcea17886e81970 (diff) |
test(ui): SIGWINCH
-rw-r--r-- | src/tests/fakes/fake_input.rs | 14 | ||||
-rw-r--r-- | src/tests/mod.rs | 73 | ||||
-rw-r--r-- | src/tests/snapshots/tests__traffic_with_winch_event-2.snap | 55 | ||||
-rw-r--r-- | src/tests/snapshots/tests__traffic_with_winch_event-3.snap | 55 | ||||
-rw-r--r-- | src/tests/snapshots/tests__traffic_with_winch_event.snap | 55 |
5 files changed, 251 insertions, 1 deletions
diff --git a/src/tests/fakes/fake_input.rs b/src/tests/fakes/fake_input.rs index 6007b71..b854c3b 100644 --- a/src/tests/fakes/fake_input.rs +++ b/src/tests/fakes/fake_input.rs @@ -6,6 +6,9 @@ use ::std::net::{IpAddr, Ipv4Addr, SocketAddr}; use ::std::{thread, time}; use ::termion::event::Event; +use ::std::sync::Arc; +use ::std::sync::atomic::{AtomicBool, Ordering}; + use crate::network::{Connection, Protocol}; pub struct KeyboardEvents { @@ -151,3 +154,14 @@ pub fn create_fake_lookup_addr( None => None, }) } + +pub fn create_fake_receive_winch( + should_send_winch_event: bool +) -> Box<Fn(&Arc<AtomicBool>)> { + Box::new(move |winch| { + if should_send_winch_event { + thread::sleep(time::Duration::from_secs(1)); + winch.store(true, Ordering::Relaxed); + } + }) +} diff --git a/src/tests/mod.rs b/src/tests/mod.rs index b3a5d9d..1ee3af9 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -3,7 +3,7 @@ mod fakes; use fakes::TerminalEvent::*; use fakes::{ create_fake_lookup_addr, get_interface, get_open_sockets, KeyboardEvents, NetworkFrames, - TestBackend, + TestBackend, create_fake_receive_winch }; use ::insta::assert_snapshot; @@ -65,6 +65,7 @@ fn basic_startup() { let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); let network_interface = get_interface(); let lookup_addr = create_fake_lookup_addr(HashMap::new()); + let receive_winch = Box::new(create_fake_receive_winch(false)); let os_input = crate::OsInput { network_interface, @@ -72,6 +73,7 @@ fn basic_startup() { get_open_sockets, keyboard_events, lookup_addr, + receive_winch, }; crate::start(backend, os_input); @@ -106,6 +108,7 @@ fn one_packet_of_traffic() { let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); let network_interface = get_interface(); let lookup_addr = create_fake_lookup_addr(HashMap::new()); + let receive_winch = Box::new(create_fake_receive_winch(false)); let os_input = crate::OsInput { network_interface, @@ -113,6 +116,7 @@ fn one_packet_of_traffic() { get_open_sockets, keyboard_events, lookup_addr, + receive_winch, }; crate::start(backend, os_input); @@ -159,6 +163,7 @@ fn bi_directional_traffic() { let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); let network_interface = get_interface(); let lookup_addr = create_fake_lookup_addr(HashMap::new()); + let receive_winch = Box::new(create_fake_receive_winch(false)); let os_input = crate::OsInput { network_interface, @@ -166,6 +171,7 @@ fn bi_directional_traffic() { get_open_sockets, keyboard_events, lookup_addr, + receive_winch, }; crate::start(backend, os_input); @@ -210,6 +216,7 @@ fn multiple_packets_of_traffic_from_different_connections() { let terminal_draw_events = LogWithMirror::new(Vec::new()); let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); + let receive_winch = Box::new(create_fake_receive_winch(false)); let network_interface = get_interface(); let lookup_addr = create_fake_lookup_addr(HashMap::new()); @@ -217,6 +224,7 @@ fn multiple_packets_of_traffic_from_different_connections() { network_interface, network_frames, get_open_sockets, + receive_winch, keyboard_events, lookup_addr, }; @@ -265,6 +273,7 @@ fn multiple_packets_of_traffic_from_single_connection() { let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); let network_interface = get_interface(); let lookup_addr = create_fake_lookup_addr(HashMap::new()); + let receive_winch = Box::new(create_fake_receive_winch(false)); let os_input = crate::OsInput { network_interface, @@ -272,6 +281,7 @@ fn multiple_packets_of_traffic_from_single_connection() { get_open_sockets, keyboard_events, lookup_addr, + receive_winch, }; crate::start(backend, os_input); @@ -318,6 +328,7 @@ fn one_process_with_multiple_connections() { let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); let network_interface = get_interface(); let lookup_addr = create_fake_lookup_addr(HashMap::new()); + let receive_winch = Box::new(create_fake_receive_winch(false)); let os_input = crate::OsInput { network_interface, @@ -325,6 +336,7 @@ fn one_process_with_multiple_connections() { get_open_sockets, keyboard_events, lookup_addr, + receive_winch, }; crate::start(backend, os_input); @@ -385,6 +397,7 @@ fn multiple_processes_with_multiple_connections() { let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); let network_interface = get_interface(); let lookup_addr = create_fake_lookup_addr(HashMap::new()); + let receive_winch = Box::new(create_fake_receive_winch(false)); let os_input = crate::OsInput { network_interface, @@ -392,6 +405,7 @@ fn multiple_processes_with_multiple_connections() { get_open_sockets, keyboard_events, lookup_addr, + receive_winch, }; crate::start(backend, os_input); @@ -438,6 +452,7 @@ fn multiple_connections_from_remote_ip() { let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); let network_interface = get_interface(); let lookup_addr = create_fake_lookup_addr(HashMap::new()); + let receive_winch = Box::new(create_fake_receive_winch(false)); let os_input = crate::OsInput { network_interface, @@ -445,6 +460,7 @@ fn multiple_connections_from_remote_ip() { get_open_sockets, keyboard_events, lookup_addr, + receive_winch, }; crate::start(backend, os_input); @@ -493,6 +509,7 @@ fn sustained_traffic_from_one_process() { let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); let network_interface = get_interface(); let lookup_addr = create_fake_lookup_addr(HashMap::new()); + let receive_winch = Box::new(create_fake_receive_winch(false)); let os_input = crate::OsInput { network_interface, @@ -500,6 +517,7 @@ fn sustained_traffic_from_one_process() { get_open_sockets, keyboard_events, lookup_addr, + receive_winch, }; crate::start(backend, os_input); @@ -562,6 +580,7 @@ fn sustained_traffic_from_multiple_processes() { let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); let network_interface = get_interface(); let lookup_addr = create_fake_lookup_addr(HashMap::new()); + let receive_winch = Box::new(create_fake_receive_winch(false)); let os_input = crate::OsInput { network_interface, @@ -569,6 +588,7 @@ fn sustained_traffic_from_multiple_processes() { get_open_sockets, keyboard_events, lookup_addr, + receive_winch, }; crate::start(backend, os_input); @@ -659,6 +679,7 @@ fn sustained_traffic_from_multiple_processes_bi_directional() { let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); let network_interface = get_interface(); let lookup_addr = create_fake_lookup_addr(HashMap::new()); + let receive_winch = Box::new(create_fake_receive_winch(false)); let os_input = crate::OsInput { network_interface, @@ -666,6 +687,7 @@ fn sustained_traffic_from_multiple_processes_bi_directional() { get_open_sockets, keyboard_events, lookup_addr, + receive_winch, }; crate::start(backend, os_input); @@ -769,6 +791,7 @@ fn traffic_with_host_names() { String::from("i-like-cheese.com"), ); let lookup_addr = create_fake_lookup_addr(ips_to_hostnames); + let receive_winch = Box::new(create_fake_receive_winch(false)); let os_input = crate::OsInput { network_interface, @@ -776,6 +799,7 @@ fn traffic_with_host_names() { get_open_sockets, keyboard_events, lookup_addr, + receive_winch, }; crate::start(backend, os_input); @@ -791,3 +815,50 @@ fn traffic_with_host_names() { assert_snapshot!(&terminal_draw_events_mirror[1]); assert_snapshot!(&terminal_draw_events_mirror[2]); } + +#[test] +fn traffic_with_winch_event () { + let keyboard_events = Box::new(KeyboardEvents::new(vec![ + None, // sleep + None, // sleep + Some(Event::Key(Key::Ctrl('c'))), + ])); + let network_frames = NetworkFrames::new(vec![Some(build_tcp_packet( + "10.0.0.2", + "1.1.1.1", + 443, + 12345, + b"I am a fake tcp packet", + ))]); + + let terminal_events = LogWithMirror::new(Vec::new()); + let terminal_draw_events = LogWithMirror::new(Vec::new()); + + let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write); + let network_interface = get_interface(); + let lookup_addr = create_fake_lookup_addr(HashMap::new()); + let receive_winch = Box::new(create_fake_receive_winch(true)); + + let os_input = crate::OsInput { + network_interface, + network_frames, + get_open_sockets, + keyboard_events, + lookup_addr, + receive_winch, + }; + crate::start(backend, os_input); + + let terminal_events_mirror = terminal_events.mirror.lock().unwrap(); + let terminal_draw_events_mirror = terminal_draw_events.mirror.lock().unwrap(); + + let expected_terminal_events = vec![ + Clear, HideCursor, Draw, Flush, Draw, Flush, Draw, Flush, Clear, ShowCursor + ]; + assert_eq!(&terminal_events_mirror[..], &expected_terminal_events[..]); + + assert_eq!(terminal_draw_events_mirror.len(), 3); + assert_snapshot!(&terminal_draw_events_mirror[0]); + assert_snapshot!(&terminal_draw_events_mirror[1]); + assert_snapshot!(&terminal_draw_events_mirror[2]); +} diff --git a/src/tests/snapshots/tests__traffic_with_winch_event-2.snap b/src/tests/snapshots/tests__traffic_with_winch_event-2.snap new file mode 100644 index 0000000..ef3dfea --- /dev/null +++ b/src/tests/snapshots/tests__traffic_with_winch_event-2.snap @@ -0,0 +1,55 @@ +--- +source: src/tests/mod.rs +expression: "&terminal_draw_events_mirror[1]" +--- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/tests/snapshots/tests__traffic_with_winch_event-3.snap b/src/tests/snapshots/tests__traffic_with_winch_event-3.snap new file mode 100644 index 0000000..4875fe3 --- /dev/null +++ b/src/tests/snapshots/tests__traffic_with_winch_event-3.snap @@ -0,0 +1,55 @@ +--- +source: src/tests/mod.rs +expression: "&terminal_draw_events_mirror[2]" +--- + + + + 10.0.0.2:443 => 1.1.1.1:12345 (tcp) 1 22Bps/0Bps 1 1 22Bps/0Bps + + + + + + + + + + + + + + + + + + + + + + + + + 1.1.1.1 1 22Bps/0Bps + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/tests/snapshots/tests__traffic_with_winch_event.snap b/src/tests/snapshots/tests__traffic_with_winch_event.snap new file mode 100644 index 0000000..eb86141 --- /dev/null +++ b/src/tests/snapshots/tests__traffic_with_winch_event.snap @@ -0,0 +1,55 @@ +--- +source: src/tests/mod.rs +expression: "&terminal_draw_events_mirror[0]" +--- +┌Utilization by connection────────────────────────────────────────────────────────────────────┐┌Utilization by process name──────────────────────────────────────────────────────────────────┐ +│Connection Processes Total Bytes Up/Down ││Process Connection Count Total Bytes │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ │└─────────────────────────────────────────────────────────────────────────────────────────────┘ +│ │┌Utilization by remote ip─────────────────────────────────────────────────────────────────────┐ +│ ││Remote Address Connection Count Total Bytes │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +│ ││ │ +└─────────────────────────────────────────────────────────────────────────────────────────────┘└─────────────────────────────────────────────────────────────────────────────────────────────┘ + |