8
8
"os"
9
9
"path/filepath"
10
10
"sort"
11
- "sync"
12
11
"testing"
13
12
"time"
14
13
@@ -72,7 +71,7 @@ func TestFileTargetSync(t *testing.T) {
72
71
path := logDir1 + "/*.log"
73
72
target , err := NewFileTarget (metrics , logger , client , ps , path , "" , nil , nil , & Config {
74
73
SyncPeriod : 1 * time .Minute , // assure the sync is not called by the ticker
75
- }, DefaultWatchConig , nil , fakeHandler , "" , nil )
74
+ }, DefaultWatchConfig , nil , fakeHandler , "" , nil )
76
75
assert .NoError (t , err )
77
76
78
77
// Start with nothing watched.
@@ -84,7 +83,7 @@ func TestFileTargetSync(t *testing.T) {
84
83
}
85
84
86
85
// Create the base dir, still nothing watched.
87
- err = os .MkdirAll (logDir1 , 0750 )
86
+ err = os .MkdirAll (logDir1 , 0o750 )
88
87
assert .NoError (t , err )
89
88
90
89
err = target .sync ()
@@ -191,7 +190,7 @@ func TestFileTarget_StopsTailersCleanly(t *testing.T) {
191
190
registry := prometheus .NewRegistry ()
192
191
target , err := NewFileTarget (NewMetrics (registry ), logger , client , ps , pathToWatch , "" , nil , nil , & Config {
193
192
SyncPeriod : 10 * time .Millisecond ,
194
- }, DefaultWatchConig , nil , fakeHandler , "" , nil )
193
+ }, DefaultWatchConfig , nil , fakeHandler , "" , nil )
195
194
assert .NoError (t , err )
196
195
197
196
_ , err = os .Create (logFile )
@@ -247,95 +246,6 @@ func TestFileTarget_StopsTailersCleanly(t *testing.T) {
247
246
` ), "promtail_files_active_total" ))
248
247
}
249
248
250
- func TestFileTarget_StopsTailersCleanly_Parallel (t * testing.T ) {
251
- w := log .NewSyncWriter (os .Stderr )
252
- logger := log .NewLogfmtLogger (w )
253
-
254
- tempDir := t .TempDir ()
255
- positionsFileName := filepath .Join (tempDir , "positions.yml" )
256
-
257
- ps , err := positions .New (logger , positions.Config {
258
- SyncPeriod : 10 * time .Millisecond ,
259
- PositionsFile : positionsFileName ,
260
- })
261
- require .NoError (t , err )
262
-
263
- client := fake .New (func () {})
264
- defer client .Stop ()
265
-
266
- pathToWatch := filepath .Join (tempDir , "*.log" )
267
- registry := prometheus .NewRegistry ()
268
- metrics := NewMetrics (registry )
269
-
270
- // Increase this to several thousand to make the test more likely to fail when debugging a race condition
271
- iterations := 500
272
- fakeHandler := make (chan fileTargetEvent , 10 * iterations )
273
- for i := 0 ; i < iterations ; i ++ {
274
- logFile := filepath .Join (tempDir , fmt .Sprintf ("test_%d.log" , i ))
275
-
276
- target , err := NewFileTarget (metrics , logger , client , ps , pathToWatch , "" , nil , nil , & Config {
277
- SyncPeriod : 10 * time .Millisecond ,
278
- }, DefaultWatchConig , nil , fakeHandler , "" , nil )
279
- assert .NoError (t , err )
280
-
281
- file , err := os .Create (logFile )
282
- assert .NoError (t , err )
283
-
284
- // Write some data to the file
285
- for j := 0 ; j < 5 ; j ++ {
286
- _ , _ = file .WriteString (fmt .Sprintf ("test %d\n " , j ))
287
- }
288
- require .NoError (t , file .Close ())
289
-
290
- requireEventually (t , func () bool {
291
- return testutil .CollectAndCount (registry , "promtail_read_lines_total" ) == 1
292
- }, "expected 1 read_lines_total metric" )
293
-
294
- requireEventually (t , func () bool {
295
- return testutil .CollectAndCount (registry , "promtail_read_bytes_total" ) == 1
296
- }, "expected 1 read_bytes_total metric" )
297
-
298
- requireEventually (t , func () bool {
299
- return testutil .ToFloat64 (metrics .readLines ) == 5
300
- }, "expected 5 read_lines_total" )
301
-
302
- requireEventually (t , func () bool {
303
- return testutil .ToFloat64 (metrics .totalBytes ) == 35
304
- }, "expected 35 total_bytes" )
305
-
306
- requireEventually (t , func () bool {
307
- return testutil .ToFloat64 (metrics .readBytes ) == 35
308
- }, "expected 35 read_bytes" )
309
-
310
- // Concurrently stop the target and remove the file
311
- wg := sync.WaitGroup {}
312
- wg .Add (2 )
313
- go func () {
314
- sleepRandomDuration (time .Millisecond * 10 )
315
- target .Stop ()
316
- wg .Done ()
317
-
318
- }()
319
- go func () {
320
- sleepRandomDuration (time .Millisecond * 10 )
321
- _ = os .Remove (logFile )
322
- wg .Done ()
323
- }()
324
-
325
- wg .Wait ()
326
-
327
- requireEventually (t , func () bool {
328
- return testutil .CollectAndCount (registry , "promtail_read_bytes_total" ) == 0
329
- }, "expected read_bytes_total metric to be cleaned up" )
330
-
331
- requireEventually (t , func () bool {
332
- return testutil .CollectAndCount (registry , "promtail_file_bytes_total" ) == 0
333
- }, "expected file_bytes_total metric to be cleaned up" )
334
- }
335
-
336
- ps .Stop ()
337
- }
338
-
339
249
// Make sure that Stop() doesn't hang if FileTarget is waiting on a channel send.
340
250
func TestFileTarget_StopAbruptly (t * testing.T ) {
341
251
w := log .NewSyncWriter (os .Stderr )
@@ -367,11 +277,11 @@ func TestFileTarget_StopAbruptly(t *testing.T) {
367
277
registry := prometheus .NewRegistry ()
368
278
target , err := NewFileTarget (NewMetrics (registry ), logger , client , ps , pathToWatch , "" , nil , nil , & Config {
369
279
SyncPeriod : 10 * time .Millisecond ,
370
- }, DefaultWatchConig , nil , fakeHandler , "" , nil )
280
+ }, DefaultWatchConfig , nil , fakeHandler , "" , nil )
371
281
assert .NoError (t , err )
372
282
373
283
// Create a directory, still nothing is watched.
374
- err = os .MkdirAll (logDir1 , 0750 )
284
+ err = os .MkdirAll (logDir1 , 0o750 )
375
285
assert .NoError (t , err )
376
286
_ , err = os .Create (logfile1 )
377
287
assert .NoError (t , err )
@@ -392,12 +302,12 @@ func TestFileTarget_StopAbruptly(t *testing.T) {
392
302
393
303
// Create two directories - one more than the buffer of fakeHandler,
394
304
// so that the file target hands until we call Stop().
395
- err = os .MkdirAll (logDir2 , 0750 )
305
+ err = os .MkdirAll (logDir2 , 0o750 )
396
306
assert .NoError (t , err )
397
307
_ , err = os .Create (logfile2 )
398
308
assert .NoError (t , err )
399
309
400
- err = os .MkdirAll (logDir3 , 0750 )
310
+ err = os .MkdirAll (logDir3 , 0o750 )
401
311
assert .NoError (t , err )
402
312
_ , err = os .Create (logfile3 )
403
313
assert .NoError (t , err )
@@ -479,7 +389,7 @@ func TestFileTargetPathExclusion(t *testing.T) {
479
389
pathExclude := filepath .Join (dirName , "log3" , "*.log" )
480
390
target , err := NewFileTarget (metrics , logger , client , ps , path , pathExclude , nil , nil , & Config {
481
391
SyncPeriod : 1 * time .Minute , // assure the sync is not called by the ticker
482
- }, DefaultWatchConig , nil , fakeHandler , "" , nil )
392
+ }, DefaultWatchConfig , nil , fakeHandler , "" , nil )
483
393
assert .NoError (t , err )
484
394
485
395
// Start with nothing watched.
@@ -491,11 +401,11 @@ func TestFileTargetPathExclusion(t *testing.T) {
491
401
}
492
402
493
403
// Create the base directories, still nothing watched.
494
- err = os .MkdirAll (logDir1 , 0750 )
404
+ err = os .MkdirAll (logDir1 , 0o750 )
495
405
assert .NoError (t , err )
496
- err = os .MkdirAll (logDir2 , 0750 )
406
+ err = os .MkdirAll (logDir2 , 0o750 )
497
407
assert .NoError (t , err )
498
- err = os .MkdirAll (logDir3 , 0750 )
408
+ err = os .MkdirAll (logDir3 , 0o750 )
499
409
assert .NoError (t , err )
500
410
501
411
err = target .sync ()
@@ -571,7 +481,7 @@ func TestHandleFileCreationEvent(t *testing.T) {
571
481
logFile := filepath .Join (logDir , "test1.log" )
572
482
logFileIgnored := filepath .Join (logDir , "test.donot.log" )
573
483
574
- if err := os .MkdirAll (logDir , 0750 ); err != nil {
484
+ if err := os .MkdirAll (logDir , 0o750 ); err != nil {
575
485
t .Fatal (err )
576
486
}
577
487
@@ -610,7 +520,7 @@ func TestHandleFileCreationEvent(t *testing.T) {
610
520
target , err := NewFileTarget (metrics , logger , client , ps , path , pathExclude , nil , nil , & Config {
611
521
// To handle file creation event from channel, set enough long time as sync period
612
522
SyncPeriod : 10 * time .Minute ,
613
- }, DefaultWatchConig , fakeFileHandler , fakeTargetHandler , "" , nil )
523
+ }, DefaultWatchConfig , fakeFileHandler , fakeTargetHandler , "" , nil )
614
524
if err != nil {
615
525
t .Fatal (err )
616
526
}
@@ -653,7 +563,6 @@ func TestToStopTailing(t *testing.T) {
653
563
t .Error ("Results mismatch, expected" , expected [i ], "got" , st [i ])
654
564
}
655
565
}
656
-
657
566
}
658
567
659
568
func BenchmarkToStopTailing (b * testing.B ) {
@@ -717,7 +626,6 @@ func TestMissing(t *testing.T) {
717
626
if _ , ok := c ["str3" ]; ! ok {
718
627
t .Error ("Expected the set to contain str3 but it did not" )
719
628
}
720
-
721
629
}
722
630
723
631
func requireEventually (t * testing.T , f func () bool , msg string ) {
0 commit comments