From 49b2abc6bea1bb1694c11b97b2c7c85304bacb5f Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Mon, 26 Feb 2024 12:09:12 +0100 Subject: [PATCH] take Impl by ref in NameServer::new this eliminates the need for cloning in tests that use more than one name server, making the code more succint / less noisy --- .../src/resolver/dns/scenarios.rs | 16 ++++++++-------- .../dnssec/rfc4035/section_4/section_4_1.rs | 2 +- .../src/resolver/dnssec/scenarios/bogus.rs | 6 +++--- .../src/resolver/dnssec/scenarios/secure.rs | 8 ++++---- packages/dns-test/examples/explore.rs | 6 +++--- packages/dns-test/src/name_server.rs | 12 ++++++------ packages/dns-test/src/resolver.rs | 2 +- packages/dns-test/src/tshark.rs | 8 ++++---- 8 files changed, 30 insertions(+), 30 deletions(-) diff --git a/packages/conformance-tests/src/resolver/dns/scenarios.rs b/packages/conformance-tests/src/resolver/dns/scenarios.rs index 39470b83..f43e0018 100644 --- a/packages/conformance-tests/src/resolver/dns/scenarios.rs +++ b/packages/conformance-tests/src/resolver/dns/scenarios.rs @@ -12,11 +12,11 @@ fn can_resolve() -> Result<()> { let needle_fqdn = FQDN("example.nameservers.com.")?; let network = Network::new()?; - let mut root_ns = NameServer::new(dns_test::peer(), FQDN::ROOT, &network)?; - let mut com_ns = NameServer::new(dns_test::peer(), FQDN::COM, &network)?; + let peer = dns_test::peer(); + let mut root_ns = NameServer::new(&peer, FQDN::ROOT, &network)?; + let mut com_ns = NameServer::new(&peer, FQDN::COM, &network)?; - let mut nameservers_ns = - NameServer::new(dns_test::peer(), FQDN("nameservers.com.")?, &network)?; + let mut nameservers_ns = NameServer::new(&peer, FQDN("nameservers.com.")?, &network)?; nameservers_ns .add(Record::a(root_ns.fqdn().clone(), root_ns.ipv4_addr())) .add(Record::a(com_ns.fqdn().clone(), com_ns.ipv4_addr())) @@ -65,11 +65,11 @@ fn nxdomain() -> Result<()> { let needle_fqdn = FQDN("unicorn.nameservers.com.")?; let network = Network::new()?; - let mut root_ns = NameServer::new(dns_test::peer(), FQDN::ROOT, &network)?; - let mut com_ns = NameServer::new(dns_test::peer(), FQDN::COM, &network)?; + let peer = dns_test::peer(); + let mut root_ns = NameServer::new(&peer, FQDN::ROOT, &network)?; + let mut com_ns = NameServer::new(&peer, FQDN::COM, &network)?; - let mut nameservers_ns = - NameServer::new(dns_test::peer(), FQDN("nameservers.com.")?, &network)?; + let mut nameservers_ns = NameServer::new(&peer, FQDN("nameservers.com.")?, &network)?; nameservers_ns .add(Record::a(root_ns.fqdn().clone(), root_ns.ipv4_addr())) .add(Record::a(com_ns.fqdn().clone(), com_ns.ipv4_addr())); diff --git a/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_4/section_4_1.rs b/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_4/section_4_1.rs index 233ea95c..e4a1c393 100644 --- a/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_4/section_4_1.rs +++ b/packages/conformance-tests/src/resolver/dnssec/rfc4035/section_4/section_4_1.rs @@ -9,7 +9,7 @@ use dns_test::{Network, Resolver, Result, TrustAnchor, FQDN}; #[ignore] fn edns_support() -> Result<()> { let network = &Network::new()?; - let ns = NameServer::new(dns_test::peer(), FQDN::ROOT, network)?.start()?; + let ns = NameServer::new(&dns_test::peer(), FQDN::ROOT, network)?.start()?; let resolver = Resolver::start( dns_test::subject(), &[Root::new(ns.fqdn().clone(), ns.ipv4_addr())], diff --git a/packages/conformance-tests/src/resolver/dnssec/scenarios/bogus.rs b/packages/conformance-tests/src/resolver/dnssec/scenarios/bogus.rs index 40011547..869fca6b 100644 --- a/packages/conformance-tests/src/resolver/dnssec/scenarios/bogus.rs +++ b/packages/conformance-tests/src/resolver/dnssec/scenarios/bogus.rs @@ -15,10 +15,10 @@ fn bad_signature_in_leaf_nameserver() -> Result<()> { let network = Network::new()?; let peer = dns_test::peer(); - let mut root_ns = NameServer::new(peer.clone(), FQDN::ROOT, &network)?; - let mut com_ns = NameServer::new(peer.clone(), FQDN::COM, &network)?; + let mut root_ns = NameServer::new(&peer, FQDN::ROOT, &network)?; + let mut com_ns = NameServer::new(&peer, FQDN::COM, &network)?; - let mut nameservers_ns = NameServer::new(peer, FQDN("nameservers.com.")?, &network)?; + let mut nameservers_ns = NameServer::new(&peer, FQDN("nameservers.com.")?, &network)?; nameservers_ns .add(Record::a(root_ns.fqdn().clone(), root_ns.ipv4_addr())) .add(Record::a(com_ns.fqdn().clone(), com_ns.ipv4_addr())) diff --git a/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs b/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs index b3571ce2..7a74b176 100644 --- a/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs +++ b/packages/conformance-tests/src/resolver/dnssec/scenarios/secure.rs @@ -11,7 +11,7 @@ use dns_test::{Network, Resolver, Result, TrustAnchor, FQDN}; #[test] fn can_validate_without_delegation() -> Result<()> { let network = Network::new()?; - let mut ns = NameServer::new(dns_test::peer(), FQDN::ROOT, &network)?; + let mut ns = NameServer::new(&dns_test::peer(), FQDN::ROOT, &network)?; ns.add(Record::a(ns.fqdn().clone(), ns.ipv4_addr())); let ns = ns.sign()?; @@ -51,10 +51,10 @@ fn can_validate_with_delegation() -> Result<()> { let peer = dns_test::peer(); let network = Network::new()?; - let mut root_ns = NameServer::new(peer.clone(), FQDN::ROOT, &network)?; - let mut com_ns = NameServer::new(peer.clone(), FQDN::COM, &network)?; + let mut root_ns = NameServer::new(&peer, FQDN::ROOT, &network)?; + let mut com_ns = NameServer::new(&peer, FQDN::COM, &network)?; - let mut nameservers_ns = NameServer::new(peer, FQDN("nameservers.com.")?, &network)?; + let mut nameservers_ns = NameServer::new(&peer, FQDN("nameservers.com.")?, &network)?; nameservers_ns .add(Record::a(root_ns.fqdn().clone(), root_ns.ipv4_addr())) .add(Record::a(com_ns.fqdn().clone(), com_ns.ipv4_addr())) diff --git a/packages/dns-test/examples/explore.rs b/packages/dns-test/examples/explore.rs index e6d9919e..54da47b8 100644 --- a/packages/dns-test/examples/explore.rs +++ b/packages/dns-test/examples/explore.rs @@ -11,13 +11,13 @@ fn main() -> Result<()> { let peer = dns_test::peer(); println!("building docker image..."); - let mut root_ns = NameServer::new(peer.clone(), FQDN::ROOT, &network)?; + let mut root_ns = NameServer::new(&peer, FQDN::ROOT, &network)?; println!("DONE"); println!("setting up name servers..."); - let mut com_ns = NameServer::new(peer.clone(), FQDN::COM, &network)?; + let mut com_ns = NameServer::new(&peer, FQDN::COM, &network)?; - let mut nameservers_ns = NameServer::new(peer.clone(), FQDN("nameservers.com.")?, &network)?; + let mut nameservers_ns = NameServer::new(&peer, FQDN("nameservers.com.")?, &network)?; nameservers_ns .add(Record::a(root_ns.fqdn().clone(), root_ns.ipv4_addr())) .add(Record::a(com_ns.fqdn().clone(), com_ns.ipv4_addr())); diff --git a/packages/dns-test/src/name_server.rs b/packages/dns-test/src/name_server.rs index 5015ab74..e5732c2b 100644 --- a/packages/dns-test/src/name_server.rs +++ b/packages/dns-test/src/name_server.rs @@ -26,7 +26,7 @@ impl NameServer { /// - one SOA record, with the primary name server field set to this name server's FQDN /// - one NS record, with this name server's FQDN set as the only available name server for /// the zone - pub fn new(implementation: Implementation, zone: FQDN, network: &Network) -> Result { + pub fn new(implementation: &Implementation, zone: FQDN, network: &Network) -> Result { assert!( matches!(implementation, Implementation::Unbound), "currently only `unbound` (`nsd`) can be used as a `NameServer`" @@ -46,7 +46,7 @@ impl NameServer { zone_file.add(Record::ns(zone, nameserver.clone())); - let image = implementation.into(); + let image = implementation.clone().into(); Ok(Self { container: Container::run(&image, network)?, zone_file, @@ -303,7 +303,7 @@ mod tests { #[test] fn simplest() -> Result<()> { let network = Network::new()?; - let tld_ns = NameServer::new(Implementation::Unbound, FQDN::COM, &network)?.start()?; + let tld_ns = NameServer::new(&Implementation::Unbound, FQDN::COM, &network)?.start()?; let ip_addr = tld_ns.ipv4_addr(); let client = Client::new(&network)?; @@ -318,7 +318,7 @@ mod tests { fn with_referral() -> Result<()> { let network = Network::new()?; let expected_ip_addr = Ipv4Addr::new(172, 17, 200, 1); - let mut root_ns = NameServer::new(Implementation::Unbound, FQDN::ROOT, &network)?; + let mut root_ns = NameServer::new(&Implementation::Unbound, FQDN::ROOT, &network)?; root_ns.referral( FQDN::COM, FQDN("primary.tld-server.com.")?, @@ -346,7 +346,7 @@ mod tests { #[test] fn signed() -> Result<()> { let network = Network::new()?; - let ns = NameServer::new(Implementation::Unbound, FQDN::ROOT, &network)?.sign()?; + let ns = NameServer::new(&Implementation::Unbound, FQDN::ROOT, &network)?.sign()?; eprintln!("KSK:\n{}", ns.key_signing_key()); eprintln!("ZSK:\n{}", ns.zone_signing_key()); @@ -377,7 +377,7 @@ mod tests { #[test] fn terminate_works() -> Result<()> { let network = Network::new()?; - let ns = NameServer::new(Implementation::Unbound, FQDN::ROOT, &network)?.start()?; + let ns = NameServer::new(&Implementation::Unbound, FQDN::ROOT, &network)?.start()?; let logs = ns.terminate()?; assert!(logs.contains("nsd starting")); diff --git a/packages/dns-test/src/resolver.rs b/packages/dns-test/src/resolver.rs index 22c5e55a..d26062ed 100644 --- a/packages/dns-test/src/resolver.rs +++ b/packages/dns-test/src/resolver.rs @@ -125,7 +125,7 @@ mod tests { #[test] fn terminate_works() -> Result<()> { let network = Network::new()?; - let ns = NameServer::new(Implementation::Unbound, FQDN::ROOT, &network)?.start()?; + let ns = NameServer::new(&Implementation::Unbound, FQDN::ROOT, &network)?.start()?; let resolver = Resolver::start( Implementation::Unbound, &[Root::new(ns.fqdn().clone(), ns.ipv4_addr())], diff --git a/packages/dns-test/src/tshark.rs b/packages/dns-test/src/tshark.rs index 0aef4397..762d7591 100644 --- a/packages/dns-test/src/tshark.rs +++ b/packages/dns-test/src/tshark.rs @@ -255,7 +255,7 @@ mod tests { #[test] fn nameserver() -> Result<()> { let network = &Network::new()?; - let ns = NameServer::new(Implementation::Unbound, FQDN::ROOT, network)?.start()?; + let ns = NameServer::new(&Implementation::Unbound, FQDN::ROOT, network)?.start()?; let mut tshark = ns.eavesdrop()?; let client = Client::new(network)?; @@ -290,11 +290,11 @@ mod tests { #[test] fn resolver() -> Result<()> { let network = &Network::new()?; - let mut root_ns = NameServer::new(Implementation::Unbound, FQDN::ROOT, network)?; - let mut com_ns = NameServer::new(Implementation::Unbound, FQDN::COM, network)?; + let mut root_ns = NameServer::new(&Implementation::Unbound, FQDN::ROOT, network)?; + let mut com_ns = NameServer::new(&Implementation::Unbound, FQDN::COM, network)?; let mut nameservers_ns = - NameServer::new(Implementation::Unbound, FQDN("nameservers.com.")?, network)?; + NameServer::new(&Implementation::Unbound, FQDN("nameservers.com.")?, network)?; nameservers_ns .add(Record::a(root_ns.fqdn().clone(), root_ns.ipv4_addr())) .add(Record::a(com_ns.fqdn().clone(), com_ns.ipv4_addr()));