refactor(tests): move `DeferCleanup` into helper functions

This commit is contained in:
ThinkChaos 2023-11-29 16:33:03 -05:00
parent f371857150
commit 891d0fba74
32 changed files with 132 additions and 179 deletions

View File

@ -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
}

View File

@ -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:",

View File

@ -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
})

View File

@ -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() {

View File

@ -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)

View File

@ -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)

View File

@ -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)
}

View File

@ -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)
})

View File

@ -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())

View File

@ -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())

View File

@ -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() {

View File

@ -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() {

25
flake.lock Normal file
View File

@ -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
}

31
flake.nix Normal file
View File

@ -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
];
};
};
}

View File

@ -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

View File

@ -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
}

View File

@ -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) {

View File

@ -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())

View File

@ -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() {

View File

@ -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())

View File

@ -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()},

View File

@ -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(),
}

View File

@ -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{

View File

@ -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())

View File

@ -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 {

View File

@ -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}
})

View File

@ -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() {

View File

@ -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()}
})

View File

@ -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()
})

View File

@ -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)
}
})

View File

@ -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())

View File

@ -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() {