1 use super::*; 2 3 const DEMO_IP: &str = "1.2.3.4"; 4 5 #[tokio::test] 6 async fn test_resolver_standalone() -> Result<()> { 7 let mut r = Resolver::new(); 8 9 // should have localhost by default 10 let name = "localhost"; 11 let ip_addr = "127.0.0.1"; 12 let ip = IpAddr::from_str(ip_addr)?; 13 14 if let Some(resolved) = r.lookup(name.to_owned()).await { 15 assert_eq!(resolved, ip, "should match"); 16 } else { 17 assert!(false, "should Some, but got None"); 18 } 19 20 let name = "abc.com"; 21 let ip_addr = DEMO_IP; 22 let ip = IpAddr::from_str(ip_addr)?; 23 log::debug!("adding {} {}", name, ip_addr); 24 25 r.add_host(name.to_owned(), ip_addr.to_owned())?; 26 27 if let Some(resolved) = r.lookup(name.to_owned()).await { 28 assert_eq!(resolved, ip, "should match"); 29 } else { 30 assert!(false, "should Some, but got None"); 31 } 32 33 Ok(()) 34 } 35 36 #[tokio::test] 37 async fn test_resolver_cascaded() -> Result<()> { 38 let mut r0 = Resolver::new(); 39 40 let name0 = "abc.com"; 41 let ip_addr0 = DEMO_IP; 42 let ip0 = IpAddr::from_str(ip_addr0)?; 43 r0.add_host(name0.to_owned(), ip_addr0.to_owned())?; 44 45 let mut r1 = Resolver::new(); 46 47 let name1 = "myserver.local"; 48 let ip_addr1 = "10.1.2.5"; 49 let ip1 = IpAddr::from_str(ip_addr1)?; 50 r1.add_host(name1.to_owned(), ip_addr1.to_owned())?; 51 52 r1.set_parent(Arc::new(Mutex::new(r0))); 53 54 if let Some(resolved) = r1.lookup(name0.to_owned()).await { 55 assert_eq!(resolved, ip0, "should match"); 56 } else { 57 assert!(false, "should Some, but got None"); 58 } 59 60 if let Some(resolved) = r1.lookup(name1.to_owned()).await { 61 assert_eq!(resolved, ip1, "should match"); 62 } else { 63 assert!(false, "should Some, but got None"); 64 } 65 66 // should fail if the name does not exist 67 let result = r1.lookup("bad.com".to_owned()).await; 68 assert!(result.is_none(), "should fail"); 69 70 Ok(()) 71 } 72