From 6c03d738bbbf746ed1aa799e4f932eb0c2178cbc Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Thu, 23 Jun 2022 21:53:41 -0400 Subject: [PATCH 1/4] [internal-dns] Quieter tests Fixes https://github.com/oxidecomputer/omicron/issues/1260 --- internal-dns/tests/basic_test.rs | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/internal-dns/tests/basic_test.rs b/internal-dns/tests/basic_test.rs index d09e27f18c6..270000a35b3 100644 --- a/internal-dns/tests/basic_test.rs +++ b/internal-dns/tests/basic_test.rs @@ -5,11 +5,13 @@ use std::net::Ipv6Addr; use std::sync::Arc; -use anyhow::{Context, Result}; +use anyhow::Result; +use dropshot::test_util::LogContext; use internal_dns_client::{ types::{DnsKv, DnsRecord, DnsRecordKey, Srv}, Client, }; +use omicron_test_utils::dev::test_setup_log; use trust_dns_proto::op::response_code::ResponseCode; use trust_dns_resolver::config::{ NameServerConfig, Protocol, ResolverConfig, ResolverOpts, @@ -19,7 +21,7 @@ use trust_dns_resolver::TokioAsyncResolver; #[tokio::test] pub async fn aaaa_crud() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("oxide.internal".into()).await?; + let test_ctx = init_client_server("aaaa_crud", "oxide.internal".into()).await?; let client = &test_ctx.client; let resolver = &test_ctx.resolver; @@ -64,7 +66,7 @@ pub async fn aaaa_crud() -> Result<(), anyhow::Error> { #[tokio::test] pub async fn srv_crud() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("oxide.internal".into()).await?; + let test_ctx = init_client_server("srv_crud", "oxide.internal".into()).await?; let client = &test_ctx.client; let resolver = &test_ctx.resolver; @@ -116,7 +118,7 @@ pub async fn srv_crud() -> Result<(), anyhow::Error> { #[tokio::test] pub async fn multi_record_crud() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("oxide.internal".into()).await?; + let test_ctx = init_client_server("multi_record_crud", "oxide.internal".into()).await?; let client = &test_ctx.client; let resolver = &test_ctx.resolver; @@ -202,7 +204,7 @@ async fn lookup_ip_expect_nxdomain(resolver: &TokioAsyncResolver, name: &str) { #[tokio::test] pub async fn empty_record() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("oxide.internal".into()).await?; + let test_ctx = init_client_server("empty_record", "oxide.internal".into()).await?; let client = &test_ctx.client; let resolver = &test_ctx.resolver; @@ -231,7 +233,7 @@ pub async fn empty_record() -> Result<(), anyhow::Error> { #[tokio::test] pub async fn nxdomain() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("oxide.internal".into()).await?; + let test_ctx = init_client_server("nxdomain", "oxide.internal".into()).await?; let resolver = &test_ctx.resolver; // asking for a nonexistent record within the domain of the internal DNS @@ -243,7 +245,7 @@ pub async fn nxdomain() -> Result<(), anyhow::Error> { #[tokio::test] pub async fn servfail() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("oxide.internal".into()).await?; + let test_ctx = init_client_server("servfail", "oxide.internal".into()).await?; let resolver = &test_ctx.resolver; // asking for a record outside the domain of the internal DNS @@ -295,14 +297,12 @@ impl TestContext { } async fn init_client_server( + test_name: &str, zone: String, ) -> Result { // initialize dns server config - let (tmp, config) = test_config()?; - let log = config - .log - .to_logger("internal-dns") - .context("failed to create logger")?; + let (tmp, config, logctx) = test_config(test_name)?; + let log = logctx.log; // initialize dns server db let db = Arc::new(sled::open(&config.data.storage_path)?); @@ -346,7 +346,9 @@ async fn init_client_server( } fn test_config( -) -> Result<(tempdir::TempDir, internal_dns::Config), anyhow::Error> { + test_name: &str, +) -> Result<(tempdir::TempDir, internal_dns::Config, LogContext), anyhow::Error> { + let logctx = test_setup_log(test_name); let tmp_dir = tempdir::TempDir::new("internal-dns-test")?; let mut storage_path = tmp_dir.path().to_path_buf(); storage_path.push("test"); @@ -367,5 +369,5 @@ fn test_config( }, }; - Ok((tmp_dir, config)) + Ok((tmp_dir, config, logctx)) } From 6b28991e8ec5a057925ef6c6b3cc50cb58e30f1b Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Thu, 23 Jun 2022 21:55:46 -0400 Subject: [PATCH 2/4] fmt --- internal-dns/tests/basic_test.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/internal-dns/tests/basic_test.rs b/internal-dns/tests/basic_test.rs index 270000a35b3..06a3f7000ff 100644 --- a/internal-dns/tests/basic_test.rs +++ b/internal-dns/tests/basic_test.rs @@ -21,7 +21,8 @@ use trust_dns_resolver::TokioAsyncResolver; #[tokio::test] pub async fn aaaa_crud() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("aaaa_crud", "oxide.internal".into()).await?; + let test_ctx = + init_client_server("aaaa_crud", "oxide.internal".into()).await?; let client = &test_ctx.client; let resolver = &test_ctx.resolver; @@ -66,7 +67,8 @@ pub async fn aaaa_crud() -> Result<(), anyhow::Error> { #[tokio::test] pub async fn srv_crud() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("srv_crud", "oxide.internal".into()).await?; + let test_ctx = + init_client_server("srv_crud", "oxide.internal".into()).await?; let client = &test_ctx.client; let resolver = &test_ctx.resolver; @@ -118,7 +120,9 @@ pub async fn srv_crud() -> Result<(), anyhow::Error> { #[tokio::test] pub async fn multi_record_crud() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("multi_record_crud", "oxide.internal".into()).await?; + let test_ctx = + init_client_server("multi_record_crud", "oxide.internal".into()) + .await?; let client = &test_ctx.client; let resolver = &test_ctx.resolver; @@ -204,7 +208,8 @@ async fn lookup_ip_expect_nxdomain(resolver: &TokioAsyncResolver, name: &str) { #[tokio::test] pub async fn empty_record() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("empty_record", "oxide.internal".into()).await?; + let test_ctx = + init_client_server("empty_record", "oxide.internal".into()).await?; let client = &test_ctx.client; let resolver = &test_ctx.resolver; @@ -233,7 +238,8 @@ pub async fn empty_record() -> Result<(), anyhow::Error> { #[tokio::test] pub async fn nxdomain() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("nxdomain", "oxide.internal".into()).await?; + let test_ctx = + init_client_server("nxdomain", "oxide.internal".into()).await?; let resolver = &test_ctx.resolver; // asking for a nonexistent record within the domain of the internal DNS @@ -245,7 +251,8 @@ pub async fn nxdomain() -> Result<(), anyhow::Error> { #[tokio::test] pub async fn servfail() -> Result<(), anyhow::Error> { - let test_ctx = init_client_server("servfail", "oxide.internal".into()).await?; + let test_ctx = + init_client_server("servfail", "oxide.internal".into()).await?; let resolver = &test_ctx.resolver; // asking for a record outside the domain of the internal DNS @@ -347,7 +354,8 @@ async fn init_client_server( fn test_config( test_name: &str, -) -> Result<(tempdir::TempDir, internal_dns::Config, LogContext), anyhow::Error> { +) -> Result<(tempdir::TempDir, internal_dns::Config, LogContext), anyhow::Error> +{ let logctx = test_setup_log(test_name); let tmp_dir = tempdir::TempDir::new("internal-dns-test")?; let mut storage_path = tmp_dir.path().to_path_buf(); From 519da92f2c80c21aa0ce3d49bc07ba9b4e6ce63c Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Thu, 23 Jun 2022 21:58:28 -0400 Subject: [PATCH 3/4] Cleanup --- internal-dns/tests/basic_test.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/internal-dns/tests/basic_test.rs b/internal-dns/tests/basic_test.rs index 06a3f7000ff..dac9740a1b1 100644 --- a/internal-dns/tests/basic_test.rs +++ b/internal-dns/tests/basic_test.rs @@ -293,6 +293,7 @@ struct TestContext { dropshot_server: dropshot::HttpServer>, tmp: tempdir::TempDir, + logctx: LogContext, } impl TestContext { @@ -300,6 +301,7 @@ impl TestContext { drop(self.dns_server); self.dropshot_server.close().await.expect("Failed to clean up server"); self.tmp.close().expect("Failed to clean up tmp directory"); + self.logctx.cleanup_successful(); } } @@ -309,7 +311,7 @@ async fn init_client_server( ) -> Result { // initialize dns server config let (tmp, config, logctx) = test_config(test_name)?; - let log = logctx.log; + let log = logctx.log.clone(); // initialize dns server db let db = Arc::new(sled::open(&config.data.storage_path)?); @@ -349,7 +351,14 @@ async fn init_client_server( let client = Client::new(&format!("http://{}", dropshot_server.local_addr()), log); - Ok(TestContext { client, resolver, dns_server, dropshot_server, tmp }) + Ok(TestContext { + client, + resolver, + dns_server, + dropshot_server, + tmp, + logctx, + }) } fn test_config( From 4df231f1b4f2ad6f390a138c5eaadf190af22468 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Thu, 23 Jun 2022 22:54:33 -0400 Subject: [PATCH 4/4] Found two spots where cleanup should have been called --- internal-dns/tests/basic_test.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal-dns/tests/basic_test.rs b/internal-dns/tests/basic_test.rs index dac9740a1b1..5fafd69e4fd 100644 --- a/internal-dns/tests/basic_test.rs +++ b/internal-dns/tests/basic_test.rs @@ -246,6 +246,7 @@ pub async fn nxdomain() -> Result<(), anyhow::Error> { // server should result in an NXDOMAIN lookup_ip_expect_nxdomain(&resolver, "unicorn.oxide.internal").await; + test_ctx.cleanup().await; Ok(()) } @@ -283,6 +284,7 @@ pub async fn servfail() -> Result<(), anyhow::Error> { }, }; + test_ctx.cleanup().await; Ok(()) }