diff --git a/cmd/healthcheck_test.go b/cmd/healthcheck_test.go index 8938d026..a346f21d 100644 --- a/cmd/healthcheck_test.go +++ b/cmd/healthcheck_test.go @@ -29,7 +29,6 @@ var _ = Describe("Healthcheck command", func() { err := srv.ListenAndServe() Expect(err).Should(Succeed()) }() - DeferCleanup(srv.Shutdown) Eventually(func() error { c := NewHealthcheckCommand() @@ -61,5 +60,7 @@ func createMockServer(port string) *dns.Server { Expect(err).Should(Succeed()) }) + DeferCleanup(res.Shutdown) + return res } diff --git a/cmd/root_test.go b/cmd/root_test.go index 73c06589..49379648 100644 --- a/cmd/root_test.go +++ b/cmd/root_test.go @@ -34,7 +34,6 @@ var _ = Describe("root command", func() { tmpDir = NewTmpFolder("RootCommand") Expect(tmpDir.Error).Should(Succeed()) - DeferCleanup(tmpDir.Clean) tmpFile = tmpDir.CreateStringFile("config", "upstreams:", diff --git a/cmd/serve_test.go b/cmd/serve_test.go index 7ca130b4..95fd14cb 100644 --- a/cmd/serve_test.go +++ b/cmd/serve_test.go @@ -25,7 +25,6 @@ var _ = Describe("Serve command", func() { port = helpertest.GetStringPort(basePort) tmpDir = helpertest.NewTmpFolder("config") Expect(tmpDir.Error).Should(Succeed()) - DeferCleanup(tmpDir.Clean) configPath = defaultConfigPath }) diff --git a/config/config_test.go b/config/config_test.go index ebe052c5..f26d1d7b 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -31,7 +31,6 @@ var _ = Describe("Config", func() { BeforeEach(func() { tmpDir = helpertest.NewTmpFolder("config") Expect(tmpDir.Error).Should(Succeed()) - DeferCleanup(tmpDir.Clean) }) Describe("Deprecated parameters are converted", func() { diff --git a/e2e/basic_test.go b/e2e/basic_test.go index e080cf3f..2ada1d20 100644 --- a/e2e/basic_test.go +++ b/e2e/basic_test.go @@ -14,15 +14,14 @@ import ( ) var _ = Describe("Basic functional tests", func() { - var blocky, moka testcontainers.Container + var blocky testcontainers.Container var err error Describe("Container start", func() { BeforeEach(func(ctx context.Context) { - moka, err = createDNSMokkaContainer(ctx, "moka1", `A google/NOERROR("A 1.2.3.4 123")`) + _, err = createDNSMokkaContainer(ctx, "moka1", `A google/NOERROR("A 1.2.3.4 123")`) Expect(err).Should(Succeed()) - DeferCleanup(moka.Terminate) }) When("wrong port configuration is provided", func() { BeforeEach(func(ctx context.Context) { @@ -41,8 +40,6 @@ var _ = Describe("Basic functional tests", func() { state, err := blocky.State(ctx) Expect(err).Should(Succeed()) Expect(state.ExitCode).Should(Equal(1)) - - DeferCleanup(blocky.Terminate) }) It("should fail to start", func(ctx context.Context) { Eventually(blocky.IsRunning, "5s", "2ms").Should(BeFalse()) @@ -61,7 +58,6 @@ var _ = Describe("Basic functional tests", func() { ) Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) }) It("Should start and answer DNS queries", func(ctx context.Context) { msg := util.NewMsgWithQuestion("google.de.", A) @@ -93,7 +89,6 @@ var _ = Describe("Basic functional tests", func() { ) Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) }) It("should not open http port", func(ctx context.Context) { @@ -116,7 +111,6 @@ var _ = Describe("Basic functional tests", func() { ) Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) }) It("should serve http content", func(ctx context.Context) { host, port, err := getContainerHostPort(ctx, blocky, "4000/tcp") @@ -143,10 +137,8 @@ var _ = Describe("Basic functional tests", func() { Describe("Logging", func() { BeforeEach(func(ctx context.Context) { - moka, err = createDNSMokkaContainer(ctx, "moka1", `A google/NOERROR("A 1.2.3.4 123")`) - + _, err = createDNSMokkaContainer(ctx, "moka1", `A google/NOERROR("A 1.2.3.4 123")`) Expect(err).Should(Succeed()) - DeferCleanup(moka.Terminate) }) When("log privacy is enabled", func() { BeforeEach(func(ctx context.Context) { @@ -160,7 +152,6 @@ var _ = Describe("Basic functional tests", func() { " privacy: true", ) Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) }) It("should not log answers and questions", func(ctx context.Context) { msg := util.NewMsgWithQuestion("google.com.", A) diff --git a/e2e/blocking_test.go b/e2e/blocking_test.go index 90745c3f..9af1edbe 100644 --- a/e2e/blocking_test.go +++ b/e2e/blocking_test.go @@ -11,13 +11,11 @@ import ( ) var _ = Describe("External lists and query blocking", func() { - var blocky, httpServer, moka testcontainers.Container + var blocky testcontainers.Container var err error BeforeEach(func(ctx context.Context) { - moka, err = createDNSMokkaContainer(ctx, "moka", `A google/NOERROR("A 1.2.3.4 123")`) - + _, err = createDNSMokkaContainer(ctx, "moka", `A google/NOERROR("A 1.2.3.4 123")`) Expect(err).Should(Succeed()) - DeferCleanup(moka.Terminate) }) Describe("List download on startup", func() { When("external blacklist ist not available", func() { @@ -40,9 +38,7 @@ var _ = Describe("External lists and query blocking", func() { " default:", " - ads", ) - Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) }) It("should start with warning in log work without errors", func(ctx context.Context) { @@ -77,15 +73,12 @@ var _ = Describe("External lists and query blocking", func() { " default:", " - ads", ) - Expect(err).Should(HaveOccurred()) // check container exit status state, err := blocky.State(ctx) Expect(err).Should(Succeed()) Expect(state.ExitCode).Should(Equal(1)) - - DeferCleanup(blocky.Terminate) }) It("should fail to start", func(ctx context.Context) { @@ -100,10 +93,8 @@ var _ = Describe("External lists and query blocking", func() { Describe("Query blocking against external blacklists", func() { When("external blacklists are defined and available", func() { BeforeEach(func(ctx context.Context) { - httpServer, err = createHTTPServerContainer(ctx, "httpserver", tmpDir, "list.txt", "blockeddomain.com") - + _, err = createHTTPServerContainer(ctx, "httpserver", tmpDir, "list.txt", "blockeddomain.com") Expect(err).Should(Succeed()) - DeferCleanup(httpServer.Terminate) blocky, err = createBlockyContainer(ctx, tmpDir, "log:", @@ -122,7 +113,6 @@ var _ = Describe("External lists and query blocking", func() { ) Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) }) It("should download external list on startup and block queries", func(ctx context.Context) { msg := util.NewMsgWithQuestion("blockeddomain.com.", A) diff --git a/e2e/containers.go b/e2e/containers.go index 73cfaea7..37e0390f 100644 --- a/e2e/containers.go +++ b/e2e/containers.go @@ -39,6 +39,18 @@ const ( blockyImage = "blocky-e2e" ) +func deferTerminate[T testcontainers.Container](container T, err error) (T, error) { + ginkgo.DeferCleanup(func(ctx context.Context) error { + if container.IsRunning() { + return container.Terminate(ctx) + } + + return nil + }) + + return container, err +} + func createDNSMokkaContainer(ctx context.Context, alias string, rules ...string) (testcontainers.Container, error) { mokaRules := make(map[string]string) @@ -55,10 +67,10 @@ func createDNSMokkaContainer(ctx context.Context, alias string, rules ...string) Env: mokaRules, } - return testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ + return deferTerminate(testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ ContainerRequest: req, Started: true, - }) + })) } func createHTTPServerContainer(ctx context.Context, alias string, tmpDir *helpertest.TmpFolder, @@ -89,10 +101,10 @@ func createHTTPServerContainer(ctx context.Context, alias string, tmpDir *helper }, } - return testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ + return deferTerminate(testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ ContainerRequest: req, Started: true, - }) + })) } func WithNetwork(network string) testcontainers.CustomizeRequestOption { @@ -103,17 +115,17 @@ func WithNetwork(network string) testcontainers.CustomizeRequestOption { } func createRedisContainer(ctx context.Context) (*redis.RedisContainer, error) { - return redis.RunContainer(ctx, + return deferTerminate(redis.RunContainer(ctx, testcontainers.WithImage(redisImage), redis.WithLogLevel(redis.LogLevelVerbose), WithNetwork("redis"), - ) + )) } func createPostgresContainer(ctx context.Context) (*postgres.PostgresContainer, error) { const waitLogOccurrence = 2 - return postgres.RunContainer(ctx, + return deferTerminate(postgres.RunContainer(ctx, testcontainers.WithImage(postgresImage), postgres.WithDatabase("user"), @@ -124,17 +136,17 @@ func createPostgresContainer(ctx context.Context) (*postgres.PostgresContainer, WithOccurrence(waitLogOccurrence). WithStartupTimeout(startupTimeout)), WithNetwork("postgres"), - ) + )) } func createMariaDBContainer(ctx context.Context) (*mariadb.MariaDBContainer, error) { - return mariadb.RunContainer(ctx, + return deferTerminate(mariadb.RunContainer(ctx, testcontainers.WithImage(mariaDBImage), mariadb.WithDatabase("user"), mariadb.WithUsername("user"), mariadb.WithPassword("user"), WithNetwork("mariaDB"), - ) + )) } const ( @@ -178,10 +190,10 @@ func createBlockyContainer(ctx context.Context, tmpDir *helpertest.TmpFolder, WaitingFor: wait.ForHealthCheck().WithStartupTimeout(startupTimeout), } - container, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ + container, err := deferTerminate(testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ ContainerRequest: req, Started: true, - }) + })) if err != nil { // attach container log if error occurs if r, err := container.Logs(ctx); err == nil { @@ -196,7 +208,6 @@ func createBlockyContainer(ctx context.Context, tmpDir *helpertest.TmpFolder, // check if DNS/HTTP interface is working. // Sometimes the internal health check returns OK, but the container port is not mapped yet err = checkBlockyReadiness(ctx, cfg, container) - if err != nil { return container, fmt.Errorf("container not ready: %w", err) } diff --git a/e2e/e2e_suite_test.go b/e2e/e2e_suite_test.go index dca3d22f..d804a51a 100644 --- a/e2e/e2e_suite_test.go +++ b/e2e/e2e_suite_test.go @@ -54,6 +54,6 @@ var _ = BeforeSuite(func(ctx context.Context) { tmpDir = helpertest.NewTmpFolder("config") Expect(tmpDir.Error).Should(Succeed()) - DeferCleanup(tmpDir.Clean) + SetDefaultEventuallyTimeout(5 * time.Second) }) diff --git a/e2e/metrics_test.go b/e2e/metrics_test.go index 710a46d8..d0316922 100644 --- a/e2e/metrics_test.go +++ b/e2e/metrics_test.go @@ -16,27 +16,24 @@ import ( ) var _ = Describe("Metrics functional tests", func() { - var blocky, moka, httpServer1, httpServer2 testcontainers.Container + var blocky testcontainers.Container var err error var metricsURL string Describe("Metrics", func() { BeforeEach(func(ctx context.Context) { - moka, err = createDNSMokkaContainer(ctx, "moka1", `A google/NOERROR("A 1.2.3.4 123")`) - + _, err = createDNSMokkaContainer(ctx, "moka1", `A google/NOERROR("A 1.2.3.4 123")`) Expect(err).Should(Succeed()) - DeferCleanup(moka.Terminate) - - httpServer1, err = createHTTPServerContainer(ctx, "httpserver1", tmpDir, "list1.txt", "domain1.com") + _, err = createHTTPServerContainer(ctx, "httpserver1", tmpDir, "list1.txt", "domain1.com") Expect(err).Should(Succeed()) - DeferCleanup(httpServer1.Terminate) - httpServer2, err = createHTTPServerContainer(ctx, "httpserver2", tmpDir, "list2.txt", + _, err = createHTTPServerContainer(ctx, "httpserver2", tmpDir, "list2.txt", "domain1.com", "domain2", "domain3") - Expect(err).Should(Succeed()) - DeferCleanup(httpServer2.Terminate) + + _, err = createHTTPServerContainer(ctx, "httpserver2", tmpDir, "list2.txt", "domain1.com", "domain2", "domain3") + Expect(err).Should(Succeed()) blocky, err = createBlockyContainer(ctx, tmpDir, "upstreams:", @@ -54,9 +51,7 @@ var _ = Describe("Metrics functional tests", func() { "prometheus:", " enable: true", ) - Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) host, port, err := getContainerHostPort(ctx, blocky, "4000/tcp") Expect(err).Should(Succeed()) diff --git a/e2e/querylog_test.go b/e2e/querylog_test.go index c69ed31e..2678966e 100644 --- a/e2e/querylog_test.go +++ b/e2e/querylog_test.go @@ -16,24 +16,21 @@ import ( ) var _ = Describe("Query logs functional tests", func() { - var blocky, moka testcontainers.Container + var blocky testcontainers.Container var postgresDB *postgres.PostgresContainer var mariaDB *mariadb.MariaDBContainer var db *gorm.DB var err error BeforeEach(func(ctx context.Context) { - moka, err = createDNSMokkaContainer(ctx, "moka1", `A google/NOERROR("A 1.2.3.4 123")`, `A unknown/NXDOMAIN()`) - + _, err = createDNSMokkaContainer(ctx, "moka1", `A google/NOERROR("A 1.2.3.4 123")`, `A unknown/NXDOMAIN()`) Expect(err).Should(Succeed()) - DeferCleanup(moka.Terminate) }) Describe("Query logging into the mariaDB database", func() { BeforeEach(func(ctx context.Context) { mariaDB, err = createMariaDBContainer(ctx) Expect(err).Should(Succeed()) - DeferCleanup(mariaDB.Terminate) blocky, err = createBlockyContainer(ctx, tmpDir, "log:", @@ -47,10 +44,6 @@ var _ = Describe("Query logs functional tests", func() { " target: user:user@tcp(mariaDB:3306)/user?charset=utf8mb4&parseTime=True&loc=Local", " flushInterval: 1s", ) - - Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) - Expect(err).Should(Succeed()) connectionString, err := mariaDB.ConnectionString(ctx, @@ -113,7 +106,6 @@ var _ = Describe("Query logs functional tests", func() { BeforeEach(func(ctx context.Context) { postgresDB, err = createPostgresContainer(ctx) Expect(err).Should(Succeed()) - DeferCleanup(postgresDB.Terminate) blocky, err = createBlockyContainer(ctx, tmpDir, "log:", @@ -127,9 +119,7 @@ var _ = Describe("Query logs functional tests", func() { " target: postgres://user:user@postgres:5432/user", " flushInterval: 1s", ) - Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) connectionString, err := postgresDB.ConnectionString(ctx, "sslmode=disable") Expect(err).Should(Succeed()) diff --git a/e2e/redis_test.go b/e2e/redis_test.go index 218587e4..4453710f 100644 --- a/e2e/redis_test.go +++ b/e2e/redis_test.go @@ -10,20 +10,16 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "github.com/testcontainers/testcontainers-go" - redisTc "github.com/testcontainers/testcontainers-go/modules/redis" ) var _ = Describe("Redis configuration tests", func() { - var blocky1, blocky2, moka testcontainers.Container - var redisDB *redisTc.RedisContainer + var blocky1, blocky2, mokka testcontainers.Container var redisClient *redis.Client var err error BeforeEach(func(ctx context.Context) { - redisDB, err = createRedisContainer(ctx) - + redisDB, err := createRedisContainer(ctx) Expect(err).Should(Succeed()) - DeferCleanup(redisDB.Terminate) redisConnectionString, err := redisDB.ConnectionString(ctx) Expect(err).Should(Succeed()) @@ -36,12 +32,8 @@ var _ = Describe("Redis configuration tests", func() { Expect(dbSize(ctx, redisClient)).Should(BeNumerically("==", 0)) - moka, err = createDNSMokkaContainer(ctx, "moka1", `A google/NOERROR("A 1.2.3.4 123")`) - + mokka, err = createDNSMokkaContainer(ctx, "moka1", `A google/NOERROR("A 1.2.3.4 123")`) Expect(err).Should(Succeed()) - DeferCleanup(func(ctx context.Context) { - _ = moka.Terminate(ctx) - }) }) Describe("Cache sharing between blocky instances", func() { @@ -57,9 +49,7 @@ var _ = Describe("Redis configuration tests", func() { "redis:", " address: redis:6379", ) - Expect(err).Should(Succeed()) - DeferCleanup(blocky1.Terminate) blocky2, err = createBlockyContainer(ctx, tmpDir, "log:", @@ -71,9 +61,7 @@ var _ = Describe("Redis configuration tests", func() { "redis:", " address: redis:6379", ) - Expect(err).Should(Succeed()) - DeferCleanup(blocky2.Terminate) }) It("2nd instance of blocky should use cache from redis", func(ctx context.Context) { msg := util.NewMsgWithQuestion("google.de.", A) @@ -91,7 +79,7 @@ var _ = Describe("Redis configuration tests", func() { }) By("Shutdown the upstream DNS server", func() { - Expect(moka.Terminate(ctx)).Should(Succeed()) + Expect(mokka.Terminate(ctx)).Should(Succeed()) }) By("Query second blocky instance, should use cache from redis", func() { @@ -124,9 +112,7 @@ var _ = Describe("Redis configuration tests", func() { "redis:", " address: redis:6379", ) - Expect(err).Should(Succeed()) - DeferCleanup(blocky1.Terminate) }) It("should load cache from redis after start", func(ctx context.Context) { msg := util.NewMsgWithQuestion("google.de.", A) @@ -154,13 +140,11 @@ var _ = Describe("Redis configuration tests", func() { "redis:", " address: redis:6379", ) - Expect(err).Should(Succeed()) - DeferCleanup(blocky2.Terminate) }) By("Shutdown the upstream DNS server", func() { - Expect(moka.Terminate(ctx)).Should(Succeed()) + Expect(mokka.Terminate(ctx)).Should(Succeed()) }) By("Query second blocky instance", func() { diff --git a/e2e/upstream_test.go b/e2e/upstream_test.go index 43ea3a03..6f4e5887 100644 --- a/e2e/upstream_test.go +++ b/e2e/upstream_test.go @@ -27,9 +27,7 @@ var _ = Describe("Upstream resolver configuration tests", func() { " - 192.192.192.192", " startVerify: false", ) - Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) }) It("should start even if upstream server is not reachable", func(ctx context.Context) { Expect(blocky.IsRunning()).Should(BeTrue()) @@ -47,9 +45,7 @@ var _ = Describe("Upstream resolver configuration tests", func() { " - some.wrong.host", " startVerify: false", ) - Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) }) It("should start even if upstream server is not reachable", func(ctx context.Context) { Expect(blocky.IsRunning()).Should(BeTrue()) @@ -65,9 +61,7 @@ var _ = Describe("Upstream resolver configuration tests", func() { " - 192.192.192.192", " startVerify: true", ) - Expect(err).Should(HaveOccurred()) - DeferCleanup(blocky.Terminate) }) It("should not start", func(ctx context.Context) { Expect(blocky.IsRunning()).Should(BeFalse()) @@ -84,9 +78,7 @@ var _ = Describe("Upstream resolver configuration tests", func() { " - some.wrong.host", " startVerify: true", ) - Expect(err).Should(HaveOccurred()) - DeferCleanup(blocky.Terminate) }) It("should not start", func(ctx context.Context) { Expect(blocky.IsRunning()).Should(BeFalse()) @@ -96,14 +88,11 @@ var _ = Describe("Upstream resolver configuration tests", func() { }) }) Describe("'upstreams.timeout' parameter handling", func() { - var moka testcontainers.Container BeforeEach(func(ctx context.Context) { - moka, err = createDNSMokkaContainer(ctx, "moka1", + _, err = createDNSMokkaContainer(ctx, "moka1", `A example.com/NOERROR("A 1.2.3.4 123")`, `A delay.com/delay(NOERROR("A 1.1.1.1 100"), "300ms")`) - Expect(err).Should(Succeed()) - DeferCleanup(moka.Terminate) blocky, err = createBlockyContainer(ctx, tmpDir, "upstreams:", @@ -112,9 +101,7 @@ var _ = Describe("Upstream resolver configuration tests", func() { " - moka1", " timeout: 200ms", ) - Expect(err).Should(Succeed()) - DeferCleanup(blocky.Terminate) }) It("should consider the timeout parameter", func(ctx context.Context) { By("query without timeout", func() { diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000..cd7fa94a --- /dev/null +++ b/flake.lock @@ -0,0 +1,25 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1700794826, + "narHash": "sha256-RyJTnTNKhO0yqRpDISk03I/4A67/dp96YRxc86YOPgU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5a09cb4b393d58f9ed0d9ca1555016a8543c2ac8", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000..2a23976f --- /dev/null +++ b/flake.nix @@ -0,0 +1,31 @@ +{ + outputs = { self, nixpkgs }: + let pkgs = nixpkgs.legacyPackages.x86_64-linux; + in + { + packages.x86_64-linux = rec { + default = blocky; + + blocky = pkgs.hello; + }; + + devShells.x86_64-linux.default = pkgs.mkShell { + buildInputs = with pkgs; [ + # TODO: trim + # delve + # clang + # gcc + ginkgo + go + # go-outline + # golangci-lint + # gofumpt + # gomodifytags + # gopls + # gopkgs + # gotests + # impl + ]; + }; + }; +} diff --git a/helpertest/helper.go b/helpertest/helper.go index e244855e..97caa50e 100644 --- a/helpertest/helper.go +++ b/helpertest/helper.go @@ -60,12 +60,16 @@ func TempFile(data string) *os.File { // TestServer creates temp http server with passed data func TestServer(data string) *httptest.Server { - return httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { + srv := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { _, err := rw.Write([]byte(data)) if err != nil { log.Log().Fatal("can't write to buffer:", err) } })) + + ginkgo.DeferCleanup(srv.Close) + + return srv } // DoGetRequest performs a GET request diff --git a/helpertest/tmpdata.go b/helpertest/tmpdata.go index 53eb9a54..bc3d4ed1 100644 --- a/helpertest/tmpdata.go +++ b/helpertest/tmpdata.go @@ -5,6 +5,8 @@ import ( "io/fs" "os" "path/filepath" + + "github.com/onsi/ginkgo/v2" ) type TmpFolder struct { @@ -34,6 +36,8 @@ func NewTmpFolder(prefix string) *TmpFolder { prefix: ipref, } + ginkgo.DeferCleanup(res.Clean) + return res } diff --git a/lists/downloader_test.go b/lists/downloader_test.go index f7879102..f3a91438 100644 --- a/lists/downloader_test.go +++ b/lists/downloader_test.go @@ -77,8 +77,6 @@ var _ = Describe("Downloader", func() { When("Download was successful", func() { BeforeEach(func() { server = TestServer("line.one\nline.two") - DeferCleanup(server.Close) - sut = newDownloader(sutConfig, nil) }) It("Should return all lines from the file", func(ctx context.Context) { @@ -98,7 +96,6 @@ var _ = Describe("Downloader", func() { server = httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(http.StatusNotFound) })) - DeferCleanup(server.Close) sutConfig.Attempts = 3 }) @@ -148,7 +145,6 @@ var _ = Describe("Downloader", func() { Expect(err).Should(Succeed()) } })) - DeferCleanup(server.Close) }) It("Should perform a retry and return file content", func(ctx context.Context) { reader, err := sut.DownloadFile(ctx, server.URL) @@ -179,7 +175,6 @@ var _ = Describe("Downloader", func() { server = httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { time.Sleep(20 * time.Millisecond) })) - DeferCleanup(server.Close) }) It("Should perform a retry until max retry attempt count is reached and return TransientError", func(ctx context.Context) { diff --git a/lists/list_cache_test.go b/lists/list_cache_test.go index 3d920919..208c1006 100644 --- a/lists/list_cache_test.go +++ b/lists/list_cache_test.go @@ -57,11 +57,8 @@ var _ = Describe("ListCache", func() { mockDownloader = nil server1 = TestServer("blocked1.com\nblocked1a.com\n192.168.178.55") - DeferCleanup(server1.Close) server2 = TestServer("blocked2.com") - DeferCleanup(server2.Close) server3 = TestServer("blocked3.com\nblocked1a.com") - DeferCleanup(server3.Close) tmpDir = NewTmpFolder("ListCache") Expect(tmpDir.Error).Should(Succeed()) diff --git a/querylog/file_writer_test.go b/querylog/file_writer_test.go index 2aac8d28..8c01418c 100644 --- a/querylog/file_writer_test.go +++ b/querylog/file_writer_test.go @@ -26,7 +26,6 @@ var _ = Describe("FileWriter", func() { JustBeforeEach(func() { tmpDir = helpertest.NewTmpFolder("fileWriter") Expect(tmpDir.Error).Should(Succeed()) - DeferCleanup(tmpDir.Clean) }) Describe("CSV writer", func() { diff --git a/resolver/blocking_resolver_test.go b/resolver/blocking_resolver_test.go index 0b7e772b..a0c725b5 100644 --- a/resolver/blocking_resolver_test.go +++ b/resolver/blocking_resolver_test.go @@ -29,7 +29,6 @@ var ( var _ = BeforeSuite(func() { tmpDir = NewTmpFolder("BlockingResolver") Expect(tmpDir.Error).Should(Succeed()) - DeferCleanup(tmpDir.Clean) group1File = tmpDir.CreateStringFile("group1File", "DOMAIN1.com") Expect(group1File.Error).Should(Succeed()) diff --git a/resolver/bootstrap_test.go b/resolver/bootstrap_test.go index 4dcf972d..fb9647a8 100644 --- a/resolver/bootstrap_test.go +++ b/resolver/bootstrap_test.go @@ -313,7 +313,6 @@ var _ = Describe("Bootstrap", Label("bootstrap"), func() { } mockUpstreamServer := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstreamServer.Close) upstream := mockUpstreamServer.Start() upstreamIP := upstream.Host @@ -571,10 +570,7 @@ var _ = Describe("Bootstrap", Label("bootstrap"), func() { BeforeEach(func() { mockUpstream1 = NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstream1.Close) - mockUpstream2 = NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstream1.Close) sutConfig.BootstrapDNS = []config.BootstrappedUpstreamConfig{ {Upstream: mockUpstream1.Start()}, diff --git a/resolver/client_names_resolver_test.go b/resolver/client_names_resolver_test.go index dd4748a0..0c819758 100644 --- a/resolver/client_names_resolver_test.go +++ b/resolver/client_names_resolver_test.go @@ -161,7 +161,7 @@ var _ = Describe("ClientResolver", Label("clientNamesResolver"), func() { BeforeEach(func() { testUpstream = NewMockUDPUpstreamServer(). WithAnswerRR("25.178.168.192.in-addr.arpa. 600 IN PTR host1") - DeferCleanup(testUpstream.Close) + sutConfig = config.ClientLookup{ Upstream: testUpstream.Start(), } @@ -217,7 +217,7 @@ var _ = Describe("ClientResolver", Label("clientNamesResolver"), func() { BeforeEach(func() { testUpstream = NewMockUDPUpstreamServer(). WithAnswerRR("25.178.168.192.in-addr.arpa. 600 IN PTR myhost1", "25.178.168.192.in-addr.arpa. 600 IN PTR myhost2") - DeferCleanup(testUpstream.Close) + sutConfig = config.ClientLookup{ Upstream: testUpstream.Start(), } @@ -247,7 +247,7 @@ var _ = Describe("ClientResolver", Label("clientNamesResolver"), func() { BeforeEach(func() { testUpstream = NewMockUDPUpstreamServer(). WithAnswerRR("25.178.168.192.in-addr.arpa. 600 IN PTR host1") - DeferCleanup(testUpstream.Close) + sutConfig.Upstream = testUpstream.Start() }) @@ -268,7 +268,7 @@ var _ = Describe("ClientResolver", Label("clientNamesResolver"), func() { BeforeEach(func() { testUpstream = NewMockUDPUpstreamServer(). WithAnswerRR("25.178.168.192.in-addr.arpa. 600 IN PTR myhost1", "25.178.168.192.in-addr.arpa. 600 IN PTR myhost2") - DeferCleanup(testUpstream.Close) + sutConfig.Upstream = testUpstream.Start() }) @@ -292,7 +292,7 @@ var _ = Describe("ClientResolver", Label("clientNamesResolver"), func() { BeforeEach(func() { testUpstream = NewMockUDPUpstreamServer(). WithAnswerError(dns.RcodeNameError) - DeferCleanup(testUpstream.Close) + sutConfig = config.ClientLookup{ Upstream: testUpstream.Start(), } diff --git a/resolver/conditional_upstream_resolver_test.go b/resolver/conditional_upstream_resolver_test.go index 2780f02d..451932c0 100644 --- a/resolver/conditional_upstream_resolver_test.go +++ b/resolver/conditional_upstream_resolver_test.go @@ -41,21 +41,18 @@ var _ = Describe("ConditionalUpstreamResolver", Label("conditionalResolver"), fu return response }) - DeferCleanup(fbTestUpstream.Close) otherTestUpstream := NewMockUDPUpstreamServer().WithAnswerFn(func(request *dns.Msg) (response *dns.Msg) { response, _ = util.NewMsgWithAnswer(request.Question[0].Name, 250, A, "192.192.192.192") return response }) - DeferCleanup(otherTestUpstream.Close) dotTestUpstream := NewMockUDPUpstreamServer().WithAnswerFn(func(request *dns.Msg) (response *dns.Msg) { response, _ = util.NewMsgWithAnswer(request.Question[0].Name, 223, A, "168.168.168.168") return response }) - DeferCleanup(dotTestUpstream.Close) refuseTestUpstream := NewMockUDPUpstreamServer().WithAnswerFn(func(request *dns.Msg) (response *dns.Msg) { response = new(dns.Msg) @@ -65,7 +62,6 @@ var _ = Describe("ConditionalUpstreamResolver", Label("conditionalResolver"), fu return response }) - DeferCleanup(refuseTestUpstream.Close) sutConfig = config.ConditionalUpstream{ Mapping: config.ConditionalUpstreamMapping{ diff --git a/resolver/hosts_file_resolver_test.go b/resolver/hosts_file_resolver_test.go index 197c75dc..75330618 100644 --- a/resolver/hosts_file_resolver_test.go +++ b/resolver/hosts_file_resolver_test.go @@ -42,7 +42,6 @@ var _ = Describe("HostsFileResolver", func() { tmpDir = NewTmpFolder("HostsFileResolver") Expect(tmpDir.Error).Should(Succeed()) - DeferCleanup(tmpDir.Clean) tmpFile = writeHostFile(tmpDir) Expect(tmpFile.Error).Should(Succeed()) diff --git a/resolver/mock_udp_upstream_server.go b/resolver/mock_udp_upstream_server.go index fcdbce71..ce8f1a63 100644 --- a/resolver/mock_udp_upstream_server.go +++ b/resolver/mock_udp_upstream_server.go @@ -9,6 +9,7 @@ import ( "github.com/0xERR0R/blocky/config" "github.com/0xERR0R/blocky/util" "github.com/miekg/dns" + "github.com/onsi/ginkgo/v2" ) type MockUDPUpstreamServer struct { @@ -18,7 +19,11 @@ type MockUDPUpstreamServer struct { } func NewMockUDPUpstreamServer() *MockUDPUpstreamServer { - return &MockUDPUpstreamServer{} + srv := &MockUDPUpstreamServer{} + + ginkgo.DeferCleanup(srv.Close) + + return srv } func (t *MockUDPUpstreamServer) WithAnswerRR(answers ...string) *MockUDPUpstreamServer { diff --git a/resolver/parallel_best_resolver_test.go b/resolver/parallel_best_resolver_test.go index 9a99e78e..91d3d809 100644 --- a/resolver/parallel_best_resolver_test.go +++ b/resolver/parallel_best_resolver_test.go @@ -130,7 +130,6 @@ var _ = Describe("ParallelBestResolver", Label("parallelBestResolver"), func() { timeoutUpstream := NewMockUDPUpstreamServer(). WithAnswerRR("example.com 123 IN A 123.124.122.1"). WithDelay(2 * timeout) - DeferCleanup(timeoutUpstream.Close) upstreams = []config.Upstream{timeoutUpstream.Start()} }) @@ -167,12 +166,10 @@ var _ = Describe("ParallelBestResolver", Label("parallelBestResolver"), func() { When("one resolver is fast and another is slow", func() { BeforeEach(func() { fastTestUpstream := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(fastTestUpstream.Close) slowTestUpstream := NewMockUDPUpstreamServer(). WithAnswerRR("example.com 123 IN A 123.124.122.123"). WithDelay(timeout / 2) - DeferCleanup(slowTestUpstream.Close) upstreams = []config.Upstream{fastTestUpstream.Start(), slowTestUpstream.Start()} }) @@ -194,7 +191,6 @@ var _ = Describe("ParallelBestResolver", Label("parallelBestResolver"), func() { slowTestUpstream = NewMockUDPUpstreamServer(). WithAnswerRR("example.com 123 IN A 123.124.122.123"). WithDelay(timeout / 2) - DeferCleanup(slowTestUpstream.Close) upstreams = []config.Upstream{{Host: "wrong"}, slowTestUpstream.Start()} }) It("Should use result from successful resolver", func() { @@ -228,7 +224,6 @@ var _ = Describe("ParallelBestResolver", Label("parallelBestResolver"), func() { When("only 1 upstream resolvers is defined", func() { BeforeEach(func() { mockUpstream := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstream.Close) upstreams = []config.Upstream{mockUpstream.Start()} }) @@ -254,10 +249,7 @@ var _ = Describe("ParallelBestResolver", Label("parallelBestResolver"), func() { withError2 := config.Upstream{Host: "wrong2"} mockUpstream1 := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstream1.Close) - mockUpstream2 := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstream2.Close) upstreams = []config.Upstream{withError1, mockUpstream1.Start(), mockUpstream2.Start(), withError2} }) @@ -346,10 +338,7 @@ var _ = Describe("ParallelBestResolver", Label("parallelBestResolver"), func() { When("Both respond in time", func() { BeforeEach(func() { testUpstream1 := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(testUpstream1.Close) - testUpstream2 := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.123") - DeferCleanup(testUpstream2.Close) upstreams = []config.Upstream{testUpstream1.Start(), testUpstream2.Start()} }) @@ -372,10 +361,8 @@ var _ = Describe("ParallelBestResolver", Label("parallelBestResolver"), func() { timeoutUpstream := NewMockUDPUpstreamServer(). WithAnswerRR("example.com 123 IN A 123.124.122.1"). WithDelay(2 * timeout) - DeferCleanup(timeoutUpstream.Close) testUpstream2 := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.2") - DeferCleanup(testUpstream2.Close) upstreams = []config.Upstream{timeoutUpstream.Start(), testUpstream2.Start()} }) @@ -395,12 +382,10 @@ var _ = Describe("ParallelBestResolver", Label("parallelBestResolver"), func() { testUpstream1 := NewMockUDPUpstreamServer(). WithAnswerRR("example.com 123 IN A 123.124.122.1"). WithDelay(2 * timeout) - DeferCleanup(testUpstream1.Close) testUpstream2 := NewMockUDPUpstreamServer(). WithAnswerRR("example.com 123 IN A 123.124.122.2"). WithDelay(2 * timeout) - DeferCleanup(testUpstream2.Close) upstreams = []config.Upstream{testUpstream1.Start(), testUpstream2.Start()} }) @@ -430,7 +415,6 @@ var _ = Describe("ParallelBestResolver", Label("parallelBestResolver"), func() { When("only 1 upstream resolvers is defined", func() { BeforeEach(func() { mockUpstream := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstream.Close) upstreams = []config.Upstream{mockUpstream.Start()} }) @@ -451,19 +435,13 @@ var _ = Describe("ParallelBestResolver", Label("parallelBestResolver"), func() { Describe("Weighted random on resolver selection", func() { When("4 upstream resolvers are defined", func() { - var ( - mockUpstream1 *MockUDPUpstreamServer - mockUpstream2 *MockUDPUpstreamServer - ) BeforeEach(func() { withError1 := config.Upstream{Host: "wrong1"} withError2 := config.Upstream{Host: "wrong2"} - mockUpstream1 = NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstream1.Close) + mockUpstream1 := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - mockUpstream2 = NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstream2.Close) + mockUpstream2 := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") upstreams = []config.Upstream{withError1, mockUpstream1.Start(), mockUpstream2.Start(), withError2} }) diff --git a/resolver/query_logging_resolver_test.go b/resolver/query_logging_resolver_test.go index 428fd8f3..e7190278 100644 --- a/resolver/query_logging_resolver_test.go +++ b/resolver/query_logging_resolver_test.go @@ -62,7 +62,6 @@ var _ = Describe("QueryLoggingResolver", func() { mockAnswer = new(dns.Msg) tmpDir = NewTmpFolder("queryLoggingResolver") Expect(tmpDir.Error).Should(Succeed()) - DeferCleanup(tmpDir.Clean) }) JustBeforeEach(func() { diff --git a/resolver/strict_resolver_test.go b/resolver/strict_resolver_test.go index 67147155..4b784c30 100644 --- a/resolver/strict_resolver_test.go +++ b/resolver/strict_resolver_test.go @@ -103,7 +103,6 @@ var _ = Describe("StrictResolver", Label("strictResolver"), func() { return }) - DeferCleanup(mockUpstream.Close) upstreams = []config.Upstream{ {Host: "wrong"}, @@ -148,11 +147,8 @@ var _ = Describe("StrictResolver", Label("strictResolver"), func() { When("Both are responding", func() { When("they respond in time", func() { BeforeEach(func() { - testUpstream1 = NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(testUpstream1.Close) - - testUpstream2 = NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.123") - DeferCleanup(testUpstream2.Close) + testUpstream1 := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") + testUpstream2 := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.123") upstreams = []config.Upstream{testUpstream1.Start(), testUpstream2.Start()} }) @@ -178,10 +174,8 @@ var _ = Describe("StrictResolver", Label("strictResolver"), func() { return response }) - DeferCleanup(testUpstream1.Close) - testUpstream2 = NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.2") - DeferCleanup(testUpstream2.Close) + testUpstream2 := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.2") upstreams = []config.Upstream{testUpstream1.Start(), testUpstream2.Start()} }) @@ -206,7 +200,6 @@ var _ = Describe("StrictResolver", Label("strictResolver"), func() { return response }) - DeferCleanup(testUpstream1.Close) testUpstream2 = NewMockUDPUpstreamServer().WithAnswerFn(func(request *dns.Msg) (response *dns.Msg) { response, err := util.NewMsgWithAnswer("example.com", 123, A, "123.124.122.2") @@ -216,7 +209,7 @@ var _ = Describe("StrictResolver", Label("strictResolver"), func() { return response }) - DeferCleanup(testUpstream2.Close) + upstreams = []config.Upstream{testUpstream1.Start(), testUpstream2.Start()} }) It("should return error", func() { @@ -228,8 +221,7 @@ var _ = Describe("StrictResolver", Label("strictResolver"), func() { }) When("Only second is working", func() { BeforeEach(func() { - testUpstream2 = NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.123") - DeferCleanup(testUpstream2.Close) + testUpstream2 := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.123") upstreams = []config.Upstream{{Host: "wrong"}, testUpstream2.Start()} }) @@ -260,7 +252,6 @@ var _ = Describe("StrictResolver", Label("strictResolver"), func() { When("only 1 upstream resolvers is defined", func() { BeforeEach(func() { mockUpstream := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstream.Close) upstreams = []config.Upstream{mockUpstream.Start()} }) diff --git a/resolver/upstream_resolver_test.go b/resolver/upstream_resolver_test.go index 0216c36a..a8468338 100644 --- a/resolver/upstream_resolver_test.go +++ b/resolver/upstream_resolver_test.go @@ -64,7 +64,6 @@ var _ = Describe("UpstreamResolver", Label("upstreamResolver"), func() { When("Configured DNS resolver can resolve query", func() { It("should return answer from DNS upstream", func() { mockUpstream := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstream.Close) sutConfig.Upstream = mockUpstream.Start() sut := newUpstreamResolverUnchecked(sutConfig, nil) @@ -83,7 +82,6 @@ var _ = Describe("UpstreamResolver", Label("upstreamResolver"), func() { When("Configured DNS resolver can't resolve query", func() { It("should return response code from DNS upstream", func() { mockUpstream := NewMockUDPUpstreamServer().WithAnswerError(dns.RcodeNameError) - DeferCleanup(mockUpstream.Close) sutConfig.Upstream = mockUpstream.Start() sut := newUpstreamResolverUnchecked(sutConfig, nil) @@ -103,7 +101,7 @@ var _ = Describe("UpstreamResolver", Label("upstreamResolver"), func() { mockUpstream := NewMockUDPUpstreamServer().WithAnswerFn(func(request *dns.Msg) (response *dns.Msg) { return nil }) - DeferCleanup(mockUpstream.Close) + sutConfig.Upstream = mockUpstream.Start() sut := newUpstreamResolverUnchecked(sutConfig, nil) @@ -130,7 +128,6 @@ var _ = Describe("UpstreamResolver", Label("upstreamResolver"), func() { } mockUpstream := NewMockUDPUpstreamServer().WithAnswerFn(resolveFn) - DeferCleanup(mockUpstream.Close) sutConfig.Upstream = mockUpstream.Start() }) @@ -164,7 +161,6 @@ var _ = Describe("UpstreamResolver", Label("upstreamResolver"), func() { When("TCP upstream connection fails", func() { BeforeEach(func() { mockUpstream := NewMockUDPUpstreamServer().WithAnswerRR("example.com 123 IN A 123.124.122.122") - DeferCleanup(mockUpstream.Close) sutConfig.Upstream = mockUpstream.Start() }) diff --git a/resolver/upstream_tree_resolver_test.go b/resolver/upstream_tree_resolver_test.go index 57ef91bf..6424fc22 100644 --- a/resolver/upstream_tree_resolver_test.go +++ b/resolver/upstream_tree_resolver_test.go @@ -164,8 +164,6 @@ var _ = Describe("UpstreamTreeResolver", Label("upstreamTreeResolver"), func() { server := NewMockUDPUpstreamServer().WithAnswerRR(fmt.Sprintf("example.com 123 IN A %s", ip)) sutConfig.Groups[group] = []config.Upstream{server.Start()} - - DeferCleanup(server.Close) } }) diff --git a/server/server_test.go b/server/server_test.go index 8ce4a7df..4ebcc4fc 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -61,7 +61,6 @@ var _ = BeforeSuite(func() { return response }) - DeferCleanup(googleMockUpstream.Close) fritzboxMockUpstream = resolver.NewMockUDPUpstreamServer().WithAnswerFn(func(request *dns.Msg) (response *dns.Msg) { response, err := util.NewMsgWithAnswer( @@ -72,7 +71,6 @@ var _ = BeforeSuite(func() { return response }) - DeferCleanup(fritzboxMockUpstream.Close) clientMockUpstream = resolver.NewMockUDPUpstreamServer().WithAnswerFn(func(request *dns.Msg) (response *dns.Msg) { var clientName string @@ -89,7 +87,6 @@ var _ = BeforeSuite(func() { return response }) - DeferCleanup(clientMockUpstream.Close) upstreamClient = clientMockUpstream.Start() upstreamFritzbox = fritzboxMockUpstream.Start() @@ -97,7 +94,6 @@ var _ = BeforeSuite(func() { tmpDir := NewTmpFolder("server") Expect(tmpDir.Error).Should(Succeed()) - DeferCleanup(tmpDir.Clean) certPem := writeCertPem(tmpDir) Expect(certPem.Error).Should(Succeed()) diff --git a/util/hostname_test.go b/util/hostname_test.go index c27103d2..9d3f0db1 100644 --- a/util/hostname_test.go +++ b/util/hostname_test.go @@ -16,7 +16,6 @@ var _ = Describe("Hostname function tests", func() { BeforeEach(func() { tmpDir = helpertest.NewTmpFolder("hostname") Expect(tmpDir.Error).Should(Succeed()) - DeferCleanup(tmpDir.Clean) }) It("should be used", func() {