From a620ecee008cdbdd221bf5ea8c1d05d9dfeeb89e Mon Sep 17 00:00:00 2001 From: kGB <116108379+gibosio@users.noreply.github.com> Date: Mon, 16 Dec 2024 10:34:06 +0100 Subject: [PATCH 1/4] moved module tests as submodule of module drone --- src/drone.rs | 5 +++-- src/drone/tests/mod.rs | 3 +++ {tests => src/drone/tests}/test_flooding.rs | 3 +-- {tests => src/drone/tests}/test_fragment_ack_nack.rs | 3 +-- {tests => src/drone/tests}/test_handle_command.rs | 9 ++++----- src/lib.rs | 2 +- 6 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 src/drone/tests/mod.rs rename {tests => src/drone/tests}/test_flooding.rs (99%) rename {tests => src/drone/tests}/test_fragment_ack_nack.rs (99%) rename {tests => src/drone/tests}/test_handle_command.rs (94%) diff --git a/src/drone.rs b/src/drone.rs index 659f9dd..40406d7 100644 --- a/src/drone.rs +++ b/src/drone.rs @@ -11,16 +11,17 @@ use crossbeam_channel::{select_biased, Receiver, Sender}; use log::{error, info, warn}; use rand::Rng; use std::collections::{HashMap, HashSet}; - use wg_2024::{ controller::{DroneCommand, DroneEvent}, drone::Drone, network::{NodeId, SourceRoutingHeader}, packet::{FloodRequest, FloodResponse, Fragment, Nack, NackType, NodeType, Packet, PacketType}, }; - use crate::packet_buffer; +#[cfg(test)] +mod tests; + #[allow(clippy::module_name_repetitions)] #[derive(Debug, Clone)] /// A Rustastic drone entity. diff --git a/src/drone/tests/mod.rs b/src/drone/tests/mod.rs new file mode 100644 index 0000000..7606133 --- /dev/null +++ b/src/drone/tests/mod.rs @@ -0,0 +1,3 @@ +mod test_flooding; +mod test_fragment_ack_nack; +mod test_handle_command; \ No newline at end of file diff --git a/tests/test_flooding.rs b/src/drone/tests/test_flooding.rs similarity index 99% rename from tests/test_flooding.rs rename to src/drone/tests/test_flooding.rs index d59490c..7d51461 100644 --- a/tests/test_flooding.rs +++ b/src/drone/tests/test_flooding.rs @@ -11,8 +11,7 @@ use wg_2024::{ network::{NodeId, SourceRoutingHeader}, packet::{FloodRequest, FloodResponse, NodeType, Packet, PacketType}, }; - -use rustastic_drone::RustasticDrone; +use crate::RustasticDrone; struct Host { id: NodeId, diff --git a/tests/test_fragment_ack_nack.rs b/src/drone/tests/test_fragment_ack_nack.rs similarity index 99% rename from tests/test_fragment_ack_nack.rs rename to src/drone/tests/test_fragment_ack_nack.rs index 2b7754e..0afc31a 100644 --- a/tests/test_fragment_ack_nack.rs +++ b/src/drone/tests/test_fragment_ack_nack.rs @@ -1,5 +1,4 @@ -use rustastic_drone::RustasticDrone; - +use crate::RustasticDrone; use crossbeam_channel::{unbounded, Receiver, Sender}; use std::{ collections::HashMap, diff --git a/tests/test_handle_command.rs b/src/drone/tests/test_handle_command.rs similarity index 94% rename from tests/test_handle_command.rs rename to src/drone/tests/test_handle_command.rs index 2ac5ee8..df21969 100644 --- a/tests/test_handle_command.rs +++ b/src/drone/tests/test_handle_command.rs @@ -1,5 +1,3 @@ -use rustastic_drone::RustasticDrone; - use crossbeam_channel::unbounded; use std::{ collections::HashMap, @@ -8,6 +6,7 @@ use std::{ time::Duration, }; use wg_2024::{controller::DroneCommand, drone::Drone}; +use crate::RustasticDrone; #[test] fn test_add_sender() { @@ -22,7 +21,7 @@ fn test_add_sender() { HashMap::new(), 0f32, ))); - println!("{drone_thread:?}"); + // println!("{drone_thread:?}"); let drone = drone_thread.clone(); let handler = thread::spawn(move || drone_thread.lock().unwrap().run()); @@ -35,9 +34,9 @@ fn test_add_sender() { controller_to_drone.send(DroneCommand::Crash).unwrap(); handler.join().unwrap(); let drone = drone.lock().unwrap(); - println!("{drone:?}"); + // println!("{drone:?}"); //TODO cannot access private field because test is not a submodule of drone - // assert_ne!(drone.packet_send.iter().last().0, 15); + assert_ne!(*drone.packet_send.iter().last().unwrap().0, 15u8); } #[test] diff --git a/src/lib.rs b/src/lib.rs index 8d61130..d6df223 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ mod drone; mod packet_buffer; -pub use drone::*; +pub use drone::*; \ No newline at end of file From 37e0274cbb687734fbff97fed3debe06b932f1c8 Mon Sep 17 00:00:00 2001 From: kGB <116108379+gibosio@users.noreply.github.com> Date: Mon, 16 Dec 2024 10:39:38 +0100 Subject: [PATCH 2/4] refactor test set pdr --- src/drone/tests/test_handle_command.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/drone/tests/test_handle_command.rs b/src/drone/tests/test_handle_command.rs index df21969..ece8dac 100644 --- a/src/drone/tests/test_handle_command.rs +++ b/src/drone/tests/test_handle_command.rs @@ -35,7 +35,6 @@ fn test_add_sender() { handler.join().unwrap(); let drone = drone.lock().unwrap(); // println!("{drone:?}"); - //TODO cannot access private field because test is not a submodule of drone assert_ne!(*drone.packet_send.iter().last().unwrap().0, 15u8); } @@ -52,7 +51,7 @@ fn test_set_pdr() { HashMap::new(), 0f32, ))); - println!("{drone_thread:?}"); + // println!("{drone_thread:?}"); let drone = drone_thread.clone(); let handler = thread::spawn(move || drone_thread.lock().unwrap().run()); @@ -66,9 +65,11 @@ fn test_set_pdr() { handler.join().unwrap(); let drone = drone.lock().unwrap(); - println!("{drone:?}"); - //TODO cannot access private field because test is not a submodule of drone - // assert_ne!(drone.pdr, 0.05); + // println!("{drone:?}"); + #[allow(clippy::float_cmp)] + { + assert_ne!(drone.pdr, 0.05); + } } #[test] fn test_remove_sender() { From 5c5a092f6345ddce863dee9455d4cb69e19dd9b0 Mon Sep 17 00:00:00 2001 From: kGB <116108379+gibosio@users.noreply.github.com> Date: Mon, 16 Dec 2024 10:44:18 +0100 Subject: [PATCH 3/4] fix test handle command --- src/drone/tests/test_handle_command.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/drone/tests/test_handle_command.rs b/src/drone/tests/test_handle_command.rs index ece8dac..747af01 100644 --- a/src/drone/tests/test_handle_command.rs +++ b/src/drone/tests/test_handle_command.rs @@ -35,7 +35,7 @@ fn test_add_sender() { handler.join().unwrap(); let drone = drone.lock().unwrap(); // println!("{drone:?}"); - assert_ne!(*drone.packet_send.iter().last().unwrap().0, 15u8); + assert_eq!(*drone.packet_send.iter().last().unwrap().0, 15u8); } #[test] @@ -68,7 +68,7 @@ fn test_set_pdr() { // println!("{drone:?}"); #[allow(clippy::float_cmp)] { - assert_ne!(drone.pdr, 0.05); + assert_eq!(drone.pdr, 0.05); } } #[test] @@ -76,6 +76,7 @@ fn test_remove_sender() { let (drone_to_controller, _controller_from_drone) = unbounded(); let (controller_to_drone, drone_from_controller) = unbounded(); let mut sender = HashMap::new(); + sender.insert(3, unbounded().0); sender.insert(2, unbounded().0); let drone_thread = Arc::new(Mutex::new(RustasticDrone::new( 1, @@ -85,7 +86,7 @@ fn test_remove_sender() { sender, 0f32, ))); - println!("{drone_thread:?}"); + // println!("{drone_thread:?}"); let drone = drone_thread.clone(); let handler = thread::spawn(move || drone_thread.lock().unwrap().run()); @@ -98,7 +99,6 @@ fn test_remove_sender() { handler.join().unwrap(); let drone = drone.lock().unwrap(); - println!("{drone:?}"); - //TODO cannot access private field because test is not a submodule of drone - // assert_eq!( drone.packet_send.iter().last().1, 2 ) ; + // println!("{drone:?}"); + assert_ne!( *drone.packet_send.iter().last().unwrap().0, 2 ) ; } From b4e95f6c449a0cd0897e43f3b0412298da0dee0b Mon Sep 17 00:00:00 2001 From: kGB <116108379+gibosio@users.noreply.github.com> Date: Mon, 16 Dec 2024 10:48:08 +0100 Subject: [PATCH 4/4] fmt + clippy --- src/drone.rs | 2 +- src/drone/tests/mod.rs | 2 +- src/drone/tests/test_flooding.rs | 2 +- src/drone/tests/test_handle_command.rs | 4 ++-- src/lib.rs | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/drone.rs b/src/drone.rs index 40406d7..877a968 100644 --- a/src/drone.rs +++ b/src/drone.rs @@ -6,6 +6,7 @@ //! //! Author: Rustastic (Andrea Carzeri, Alessandro Busola, Andrea Denina, Giulio Bosio) +use crate::packet_buffer; use colored::Colorize; use crossbeam_channel::{select_biased, Receiver, Sender}; use log::{error, info, warn}; @@ -17,7 +18,6 @@ use wg_2024::{ network::{NodeId, SourceRoutingHeader}, packet::{FloodRequest, FloodResponse, Fragment, Nack, NackType, NodeType, Packet, PacketType}, }; -use crate::packet_buffer; #[cfg(test)] mod tests; diff --git a/src/drone/tests/mod.rs b/src/drone/tests/mod.rs index 7606133..ef94ab0 100644 --- a/src/drone/tests/mod.rs +++ b/src/drone/tests/mod.rs @@ -1,3 +1,3 @@ mod test_flooding; mod test_fragment_ack_nack; -mod test_handle_command; \ No newline at end of file +mod test_handle_command; diff --git a/src/drone/tests/test_flooding.rs b/src/drone/tests/test_flooding.rs index 7d51461..af133c7 100644 --- a/src/drone/tests/test_flooding.rs +++ b/src/drone/tests/test_flooding.rs @@ -1,3 +1,4 @@ +use crate::RustasticDrone; use crossbeam_channel::{select_biased, unbounded, Receiver, Sender}; use std::{ collections::{HashMap, HashSet}, @@ -11,7 +12,6 @@ use wg_2024::{ network::{NodeId, SourceRoutingHeader}, packet::{FloodRequest, FloodResponse, NodeType, Packet, PacketType}, }; -use crate::RustasticDrone; struct Host { id: NodeId, diff --git a/src/drone/tests/test_handle_command.rs b/src/drone/tests/test_handle_command.rs index 747af01..e197328 100644 --- a/src/drone/tests/test_handle_command.rs +++ b/src/drone/tests/test_handle_command.rs @@ -1,3 +1,4 @@ +use crate::RustasticDrone; use crossbeam_channel::unbounded; use std::{ collections::HashMap, @@ -6,7 +7,6 @@ use std::{ time::Duration, }; use wg_2024::{controller::DroneCommand, drone::Drone}; -use crate::RustasticDrone; #[test] fn test_add_sender() { @@ -100,5 +100,5 @@ fn test_remove_sender() { let drone = drone.lock().unwrap(); // println!("{drone:?}"); - assert_ne!( *drone.packet_send.iter().last().unwrap().0, 2 ) ; + assert_ne!(*drone.packet_send.iter().last().unwrap().0, 2); } diff --git a/src/lib.rs b/src/lib.rs index d6df223..8d61130 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ mod drone; mod packet_buffer; -pub use drone::*; \ No newline at end of file +pub use drone::*;