From 563f4d79a311b6cf6d45eed23d0d693c4c27aeab Mon Sep 17 00:00:00 2001 From: "shiro.lee" Date: Sat, 6 Jul 2024 13:15:45 +0800 Subject: [PATCH] test: add endpoint tet --- ecstore/src/endpoint.rs | 50 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/ecstore/src/endpoint.rs b/ecstore/src/endpoint.rs index f3b72875..6a37514a 100644 --- a/ecstore/src/endpoint.rs +++ b/ecstore/src/endpoint.rs @@ -602,7 +602,7 @@ impl EndpointServerPools { drives_per_set, endpoints: eps, cmd_line, - platform: String::new(), + platform: format!("OS: {} | Arch: {}", std::env::consts::OS, std::env::consts::ARCH), }; ret.add(ep)?; @@ -1562,4 +1562,52 @@ mod test { (urls, local_flags) } + + #[test] + fn test_create_server_endpoints() { + let test_cases = [ + // Invalid input. + ("", vec![], false), + // Range cannot be negative. + ("0.0.0.0:9000", vec!["/export1{-1...1}"], false), + // Range cannot start bigger than end. + ("0.0.0.0:9000", vec!["/export1{64...1}"], false), + // Range can only be numeric. + ("0.0.0.0:9000", vec!["/export1{a...z}"], false), + // Duplicate disks not allowed. + ("0.0.0.0:9000", vec!["/export1{1...32}", "/export1{1...32}"], false), + // Same host cannot export same disk on two ports - special case localhost. + ("0.0.0.0:9001", vec!["http://localhost:900{1...2}/export{1...64}"], false), + // Valid inputs. + ("0.0.0.0:9000", vec!["/export1"], true), + ("0.0.0.0:9000", vec!["/export1", "/export2", "/export3", "/export4"], true), + ("0.0.0.0:9000", vec!["/export1{1...64}"], true), + ("0.0.0.0:9000", vec!["/export1{01...64}"], true), + ("0.0.0.0:9000", vec!["/export1{1...32}", "/export1{33...64}"], true), + ("0.0.0.0:9001", vec!["http://localhost:9001/export{1...64}"], true), + ("0.0.0.0:9001", vec!["http://localhost:9001/export{01...64}"], true), + ]; + + for (i, test_case) in test_cases.iter().enumerate() { + let disks_layout = match DisksLayout::try_from(test_case.1.as_slice()) { + Ok(v) => v, + Err(e) => { + if test_case.2 { + panic!("Test {}: unexpected error: {}", i + 1, e); + } + continue; + } + }; + + let ret = EndpointServerPools::create_server_endpoints(test_case.0, &disks_layout); + + if let Err(err) = ret { + if test_case.2 { + panic!("Test {}: Expected success but failed instead {}", i + 1, err) + } + } else if !test_case.2 { + panic!("Test {}: expected failure but passed instead", i + 1); + } + } + } }