@@ -10,9 +10,9 @@ import (
10
10
"bufio"
11
11
"fmt"
12
12
"io"
13
- "log"
14
13
"net"
15
14
"os"
15
+ "path/filepath"
16
16
"runtime"
17
17
"sync"
18
18
"testing"
@@ -81,28 +81,36 @@ func runStreamSyslog(l net.Listener, done chan<- string, wg *sync.WaitGroup) {
81
81
}
82
82
}
83
83
84
- func startServer (n , la string , done chan <- string ) (addr string , sock io.Closer , wg * sync.WaitGroup ) {
84
+ func startServer (t * testing. T , n , la string , done chan <- string ) (addr string , sock io.Closer , wg * sync.WaitGroup ) {
85
85
if n == "udp" || n == "tcp" {
86
86
la = "127.0.0.1:0"
87
87
} else {
88
- // unix and unixgram: choose an address if none given
88
+ // unix and unixgram: choose an address if none given.
89
89
if la == "" {
90
- // use os.CreateTemp to get a name that is unique
91
- f , err := os .CreateTemp ("" , "syslogtest" )
90
+ // The address must be short to fit in the sun_path field of the
91
+ // sockaddr_un passed to the underlying system calls, so we use
92
+ // os.MkdirTemp instead of t.TempDir: t.TempDir generally includes all or
93
+ // part of the test name in the directory, which can be much more verbose
94
+ // and risks running up against the limit.
95
+ dir , err := os .MkdirTemp ("" , "" )
92
96
if err != nil {
93
- log .Fatal ("TempFile: " , err )
97
+ t .Fatal (err )
94
98
}
95
- f .Close ()
96
- la = f .Name ()
99
+ t .Cleanup (func () {
100
+ if err := os .RemoveAll (dir ); err != nil {
101
+ t .Errorf ("failed to remove socket temp directory: %v" , err )
102
+ }
103
+ })
104
+ la = filepath .Join (dir , "sock" )
97
105
}
98
- os .Remove (la )
99
106
}
100
107
101
108
wg = new (sync.WaitGroup )
102
109
if n == "udp" || n == "unixgram" {
103
110
l , e := net .ListenPacket (n , la )
104
111
if e != nil {
105
- log .Fatalf ("startServer failed: %v" , e )
112
+ t .Helper ()
113
+ t .Fatalf ("startServer failed: %v" , e )
106
114
}
107
115
addr = l .LocalAddr ().String ()
108
116
sock = l
@@ -114,7 +122,8 @@ func startServer(n, la string, done chan<- string) (addr string, sock io.Closer,
114
122
} else {
115
123
l , e := net .Listen (n , la )
116
124
if e != nil {
117
- log .Fatalf ("startServer failed: %v" , e )
125
+ t .Helper ()
126
+ t .Fatalf ("startServer failed: %v" , e )
118
127
}
119
128
addr = l .Addr ().String ()
120
129
sock = l
@@ -129,32 +138,35 @@ func startServer(n, la string, done chan<- string) (addr string, sock io.Closer,
129
138
130
139
func TestWithSimulated (t * testing.T ) {
131
140
t .Parallel ()
141
+
132
142
msg := "Test 123"
133
- var transport []string
134
- for _ , n := range []string {"unix" , "unixgram" , "udp" , "tcp" } {
135
- if testableNetwork (n ) {
136
- transport = append (transport , n )
143
+ for _ , tr := range []string {"unix" , "unixgram" , "udp" , "tcp" } {
144
+ if ! testableNetwork (tr ) {
145
+ continue
137
146
}
138
- }
139
147
140
- for _ , tr := range transport {
141
- done := make (chan string )
142
- addr , sock , srvWG := startServer (tr , "" , done )
143
- defer srvWG .Wait ()
144
- defer sock .Close ()
145
- if tr == "unix" || tr == "unixgram" {
146
- defer os .Remove (addr )
147
- }
148
- s , err := Dial (tr , addr , LOG_INFO | LOG_USER , "syslog_test" )
149
- if err != nil {
150
- t .Fatalf ("Dial() failed: %v" , err )
151
- }
152
- err = s .Info (msg )
153
- if err != nil {
154
- t .Fatalf ("log failed: %v" , err )
155
- }
156
- check (t , msg , <- done , tr )
157
- s .Close ()
148
+ tr := tr
149
+ t .Run (tr , func (t * testing.T ) {
150
+ t .Parallel ()
151
+
152
+ done := make (chan string )
153
+ addr , sock , srvWG := startServer (t , tr , "" , done )
154
+ defer srvWG .Wait ()
155
+ defer sock .Close ()
156
+ if tr == "unix" || tr == "unixgram" {
157
+ defer os .Remove (addr )
158
+ }
159
+ s , err := Dial (tr , addr , LOG_INFO | LOG_USER , "syslog_test" )
160
+ if err != nil {
161
+ t .Fatalf ("Dial() failed: %v" , err )
162
+ }
163
+ err = s .Info (msg )
164
+ if err != nil {
165
+ t .Fatalf ("log failed: %v" , err )
166
+ }
167
+ check (t , msg , <- done , tr )
168
+ s .Close ()
169
+ })
158
170
}
159
171
}
160
172
@@ -165,7 +177,7 @@ func TestFlap(t *testing.T) {
165
177
}
166
178
167
179
done := make (chan string )
168
- addr , sock , srvWG := startServer (net , "" , done )
180
+ addr , sock , srvWG := startServer (t , net , "" , done )
169
181
defer srvWG .Wait ()
170
182
defer os .Remove (addr )
171
183
defer sock .Close ()
@@ -182,7 +194,10 @@ func TestFlap(t *testing.T) {
182
194
check (t , msg , <- done , net )
183
195
184
196
// restart the server
185
- _ , sock2 , srvWG2 := startServer (net , addr , done )
197
+ if err := os .Remove (addr ); err != nil {
198
+ t .Fatal (err )
199
+ }
200
+ _ , sock2 , srvWG2 := startServer (t , net , addr , done )
186
201
defer srvWG2 .Wait ()
187
202
defer sock2 .Close ()
188
203
@@ -282,6 +297,7 @@ func check(t *testing.T, in, out, transport string) {
282
297
283
298
func TestWrite (t * testing.T ) {
284
299
t .Parallel ()
300
+
285
301
tests := []struct {
286
302
pri Priority
287
303
pre string
@@ -299,7 +315,7 @@ func TestWrite(t *testing.T) {
299
315
} else {
300
316
for _ , test := range tests {
301
317
done := make (chan string )
302
- addr , sock , srvWG := startServer ("udp" , "" , done )
318
+ addr , sock , srvWG := startServer (t , "udp" , "" , done )
303
319
defer srvWG .Wait ()
304
320
defer sock .Close ()
305
321
l , err := Dial ("udp" , addr , test .pri , test .pre )
@@ -323,7 +339,7 @@ func TestWrite(t *testing.T) {
323
339
}
324
340
325
341
func TestConcurrentWrite (t * testing.T ) {
326
- addr , sock , srvWG := startServer ("udp" , "" , make (chan string , 1 ))
342
+ addr , sock , srvWG := startServer (t , "udp" , "" , make (chan string , 1 ))
327
343
defer srvWG .Wait ()
328
344
defer sock .Close ()
329
345
w , err := Dial ("udp" , addr , LOG_USER | LOG_ERR , "how's it going?" )
@@ -359,7 +375,7 @@ func TestConcurrentReconnect(t *testing.T) {
359
375
}
360
376
}
361
377
done := make (chan string , N * M )
362
- addr , sock , srvWG := startServer (net , "" , done )
378
+ addr , sock , srvWG := startServer (t , net , "" , done )
363
379
if net == "unix" {
364
380
defer os .Remove (addr )
365
381
}
0 commit comments