Skip to content

Commit f5b44fd

Browse files
committed
Wait for server socket to close in pdns_recursor test
1 parent 2c3fa9a commit f5b44fd

File tree

1 file changed

+30
-21
lines changed

1 file changed

+30
-21
lines changed

plugins/inputs/powerdns_recursor/powerdns_recursor_test.go

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package powerdns_recursor
33
import (
44
"net"
55
"os"
6+
"sync"
67
"testing"
8+
"time"
79

810
"github.com/influxdata/telegraf/testutil"
911
"github.com/stretchr/testify/assert"
@@ -95,22 +97,6 @@ var intOverflowMetrics = "all-outqueries\t18446744073709550195\nanswers-slow\t36
9597
"x-our-latency\t19\nx-ourtime-slow\t632\nx-ourtime0-1\t3060079\nx-ourtime1-2\t3351\nx-ourtime16-32\t197\n" +
9698
"x-ourtime2-4\t302\nx-ourtime4-8\t194\nx-ourtime8-16\t24\n"
9799

98-
func (s statServer) serverSocket(l *net.UnixConn) {
99-
100-
for {
101-
go func(c *net.UnixConn) {
102-
buf := make([]byte, 1024)
103-
n, remote, _ := c.ReadFromUnix(buf)
104-
105-
data := buf[:n]
106-
if string(data) == "get-all\n" {
107-
c.WriteToUnix([]byte(metrics), remote)
108-
c.Close()
109-
}
110-
}(l)
111-
}
112-
}
113-
114100
func TestPowerdnsRecursorGeneratesMetrics(t *testing.T) {
115101
// We create a fake server to return test data
116102
controlSocket := "/tmp/pdns5724354148158589552.controlsocket"
@@ -120,14 +106,35 @@ func TestPowerdnsRecursorGeneratesMetrics(t *testing.T) {
120106
}
121107
socket, err := net.ListenUnixgram("unixgram", addr)
122108
if err != nil {
123-
t.Fatal("Cannot initialize server on port ")
109+
t.Fatal("Cannot initialize server on port")
124110
}
125111

126-
defer socket.Close()
127-
defer os.Remove(controlSocket)
112+
var wg sync.WaitGroup
113+
wg.Add(1)
114+
go func() {
115+
defer func() {
116+
socket.Close()
117+
os.Remove(controlSocket)
118+
wg.Done()
119+
}()
128120

129-
s := statServer{}
130-
go s.serverSocket(socket)
121+
for {
122+
buf := make([]byte, 1024)
123+
n, remote, err := socket.ReadFromUnix(buf)
124+
if err != nil {
125+
socket.Close()
126+
return
127+
}
128+
129+
data := buf[:n]
130+
if string(data) == "get-all\n" {
131+
socket.WriteToUnix([]byte(metrics), remote)
132+
socket.Close()
133+
}
134+
135+
time.Sleep(100 * time.Millisecond)
136+
}
137+
}()
131138

132139
p := &PowerdnsRecursor{
133140
UnixSockets: []string{controlSocket},
@@ -139,6 +146,8 @@ func TestPowerdnsRecursorGeneratesMetrics(t *testing.T) {
139146
err = acc.GatherError(p.Gather)
140147
require.NoError(t, err)
141148

149+
wg.Wait()
150+
142151
intMetrics := []string{"all-outqueries", "answers-slow", "answers0-1", "answers1-10",
143152
"answers10-100", "answers100-1000", "auth-zone-queries", "auth4-answers-slow",
144153
"auth4-answers0-1", "auth4-answers1-10", "auth4-answers10-100", "auth4-answers100-1000",

0 commit comments

Comments
 (0)