From 07c272b8098b6cefa17280f65b4079e99a18a6c2 Mon Sep 17 00:00:00 2001 From: Elizabeth Date: Tue, 2 Apr 2024 16:32:03 -0600 Subject: add test step to ci --- .drone.yml | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to '.drone.yml') diff --git a/.drone.yml b/.drone.yml index 8f459a1..38ed21d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,9 +1,15 @@ --- kind: pipeline type: docker -name: build, publish docker image, deploy +name: deployment steps: + - name: run tests + image: golang + commands: + - go build + - go test -v ./... + - name: docker image: plugins/docker settings: @@ -13,9 +19,10 @@ steps: from_secret: gitea_packpub_password registry: git.hatecomputers.club repo: git.hatecomputers.club/hatecomputers/hatecomputers.club - tags: - - latest - - main + when: + branch: + - main + - name: ssh image: appleboy/drone-ssh settings: @@ -27,6 +34,10 @@ steps: command_timeout: 2m script: - systemctl restart docker-compose@hatecomputers-club + when: + branch: + - main + trigger: branch: - - main + - main -- cgit v1.2.3-70-g09d2 From 14b450b9c87f391909a80383041844a48b5d77ea Mon Sep 17 00:00:00 2001 From: Elizabeth Date: Tue, 2 Apr 2024 16:36:54 -0600 Subject: update parallelism in ci --- .drone.yml | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to '.drone.yml') diff --git a/.drone.yml b/.drone.yml index 38ed21d..52f3ffa 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,15 +1,26 @@ --- kind: pipeline type: docker -name: deployment +name: build steps: - name: run tests image: golang commands: - go build - - go test -v ./... + - go test -p 1 -v ./... +trigger: + event: + - pull_request + - push + +--- +kind: pipeline +type: docker +name: build + +steps: - name: docker image: plugins/docker settings: @@ -19,10 +30,6 @@ steps: from_secret: gitea_packpub_password registry: git.hatecomputers.club repo: git.hatecomputers.club/hatecomputers/hatecomputers.club - when: - branch: - - main - - name: ssh image: appleboy/drone-ssh settings: @@ -34,10 +41,9 @@ steps: command_timeout: 2m script: - systemctl restart docker-compose@hatecomputers-club - when: - branch: - - main trigger: branch: - main + event: + - push -- cgit v1.2.3-70-g09d2 From 52d061e7cc309bdb1a73b3c2c0eda4c089770e9f Mon Sep 17 00:00:00 2001 From: Elizabeth Date: Tue, 2 Apr 2024 16:38:48 -0600 Subject: rename target in ci/cd --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '.drone.yml') diff --git a/.drone.yml b/.drone.yml index 52f3ffa..94716d5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -18,7 +18,7 @@ trigger: --- kind: pipeline type: docker -name: build +name: deploy steps: - name: docker -- cgit v1.2.3-70-g09d2 From ce393a5ac1dedaa04a885b5400d66bcbbf794855 Mon Sep 17 00:00:00 2001 From: Elizabeth Date: Tue, 2 Apr 2024 16:52:07 -0600 Subject: only run tests on push --- .drone.yml | 1 - 1 file changed, 1 deletion(-) (limited to '.drone.yml') diff --git a/.drone.yml b/.drone.yml index 94716d5..b96d25e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -12,7 +12,6 @@ steps: trigger: event: - - pull_request - push --- -- cgit v1.2.3-70-g09d2 From 385d4a84eb813ce6f777b6ab10642ad447f93321 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Tue, 2 Apr 2024 20:26:24 -0600 Subject: fix dns race condition --- .drone.yml | 7 ++++++- test/dns_test.go | 49 ++++++++++++++++++++++++++++--------------------- 2 files changed, 34 insertions(+), 22 deletions(-) (limited to '.drone.yml') diff --git a/.drone.yml b/.drone.yml index b96d25e..d056e69 100644 --- a/.drone.yml +++ b/.drone.yml @@ -12,7 +12,7 @@ steps: trigger: event: - - push + - pull_request --- kind: pipeline @@ -20,6 +20,11 @@ type: docker name: deploy steps: + - name: run tests + image: golang + commands: + - go build + - go test -p 1 -v ./... - name: docker image: plugins/docker settings: diff --git a/test/dns_test.go b/test/dns_test.go index 55bb060..2caabe4 100644 --- a/test/dns_test.go +++ b/test/dns_test.go @@ -21,10 +21,10 @@ func destroy(conn *sql.DB, path string) { } func randomPort() int { - return rand.Intn(3000) + 10000 + return rand.Intn(3000) + 1024 } -func setup() (*sql.DB, *dns.Server, int, *string, func()) { +func setup() (*sql.DB, *dns.Server, *string, *sync.Mutex, func()) { randomDb := utils.RandomId() dnsPort := randomPort() @@ -35,32 +35,35 @@ func setup() (*sql.DB, *dns.Server, int, *string, func()) { } database.FindOrSaveUser(testDb, testUser) + waitLock := &sync.Mutex{} server := hcdns.MakeServer(&args.Arguments{ DnsPort: dnsPort, }, testDb) + server.NotifyStartedFunc = func() { + waitLock.Unlock() + } + waitLock.Lock() - waitGroup := sync.WaitGroup{} - waitGroup.Add(1) go func() { server.ListenAndServe() - waitGroup.Done() }() + waitLock.Lock() address := fmt.Sprintf("127.0.0.1:%d", dnsPort) - return testDb, server, dnsPort, &address, func() { + return testDb, server, &address, waitLock, func() { + server.Shutdown() + testDb.Close() os.Remove(randomDb) - - server.Shutdown() - waitGroup.Wait() } } func TestWhenCNAMEIsResolved(t *testing.T) { t.Log("TestWhenCNAMEIsResolved") - testDb, _, _, addr, cleanup := setup() + testDb, _, addr, lock, cleanup := setup() defer cleanup() + defer lock.Unlock() cname := &database.DNSRecord{ ID: "1", @@ -85,8 +88,8 @@ func TestWhenCNAMEIsResolved(t *testing.T) { qtype := dns.TypeA domain := dns.Fqdn(cname.Name) - client := new(dns.Client) - message := new(dns.Msg) + client := &dns.Client{} + message := &dns.Msg{} message.SetQuestion(domain, qtype) in, _, err := client.Exchange(message, *addr) @@ -135,13 +138,14 @@ func TestWhenCNAMEIsResolved(t *testing.T) { func TestWhenNoRecordNxDomain(t *testing.T) { t.Log("TestWhenNoRecordNxDomain") - _, _, _, addr, cleanup := setup() + _, _, addr, lock, cleanup := setup() defer cleanup() + defer lock.Unlock() qtype := dns.TypeA domain := dns.Fqdn("nonexistant.example.com.") - client := new(dns.Client) - message := new(dns.Msg) + client := &dns.Client{} + message := &dns.Msg{} message.SetQuestion(domain, qtype) in, _, err := client.Exchange(message, *addr) @@ -162,8 +166,9 @@ func TestWhenNoRecordNxDomain(t *testing.T) { func TestWhenUnresolvingCNAME(t *testing.T) { t.Log("TestWhenUnresolvingCNAME") - testDb, _, _, addr, cleanup := setup() + testDb, _, addr, lock, cleanup := setup() defer cleanup() + defer lock.Unlock() cname := &database.DNSRecord{ ID: "1", @@ -178,8 +183,8 @@ func TestWhenUnresolvingCNAME(t *testing.T) { qtype := dns.TypeA domain := dns.Fqdn(cname.Name) - client := new(dns.Client) - message := new(dns.Msg) + client := &dns.Client{} + message := &dns.Msg{} message.SetQuestion(domain, qtype) in, _, err := client.Exchange(message, *addr) @@ -216,8 +221,9 @@ func TestWhenUnresolvingCNAME(t *testing.T) { func TestWhenUnresolvingCNAMEWithMaxDepth(t *testing.T) { t.Log("TestWhenUnresolvingCNAMEWithMaxDepth") - testDb, _, _, addr, cleanup := setup() + testDb, _, addr, lock, cleanup := setup() defer cleanup() + defer lock.Unlock() cname := &database.DNSRecord{ ID: "1", @@ -232,8 +238,8 @@ func TestWhenUnresolvingCNAMEWithMaxDepth(t *testing.T) { qtype := dns.TypeA domain := dns.Fqdn(cname.Name) - client := new(dns.Client) - message := new(dns.Msg) + client := &dns.Client{} + message := &dns.Msg{} message.SetQuestion(domain, qtype) in, _, err := client.Exchange(message, *addr) @@ -245,6 +251,7 @@ func TestWhenUnresolvingCNAMEWithMaxDepth(t *testing.T) { if len(in.Answer) > 0 { t.Fatalf("expected 0 answers, got %d", len(in.Answer)) } + if in.Rcode != dns.RcodeServerFailure { t.Fatalf("expected SERVFAIL, got %d", in.Rcode) } -- cgit v1.2.3-70-g09d2