Skip to content

Commit 44e923d

Browse files
authored
chore: fix tests that fail on windows (#4878)
* Iterate on tests that fail on windows * Update windows converter tests for promtail conversion * only start loki wal writer after passing all error cases on NewManager * Fix change lost in merge * Fix some more tests * Ensure writer is not started twice and remove unnecessary variable scoping * skip integration tests in windows test workflow * Try different quotes to fix windows test action * support windows line endings for mimir test * Revert "support windows line endings for mimir test" This reverts commit 81446a8.
1 parent b43864b commit 44e923d

File tree

7 files changed

+33
-24
lines changed

7 files changed

+33
-24
lines changed

.github/workflows/test_windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ jobs:
3232
cache: false
3333
- name: Test
3434
run: '& "C:/Program Files/git/bin/bash.exe" -c ''go test -tags="nodocker,nonetwork,slicelabels"
35-
$(go list ./... | grep -v /integration-tests/)'''
35+
$(go list ./... | grep -v -E "/integration-tests/|/integration-tests-k8s/")'''

internal/component/common/loki/client/batch_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@ func TestBatch_add(t *testing.T) {
7272
}
7373

7474
for testName, testData := range tests {
75-
testData := testData
76-
7775
t.Run(testName, func(t *testing.T) {
7876
b := newBatch(0)
7977

@@ -122,8 +120,6 @@ func TestBatch_encode(t *testing.T) {
122120
}
123121

124122
for testName, testData := range tests {
125-
testData := testData
126-
127123
t.Run(testName, func(t *testing.T) {
128124
t.Parallel()
129125

internal/component/common/loki/client/consumer_wal.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ func NewWALConsumer(logger log.Logger, reg prometheus.Registerer, walCfg wal.Con
9393
})
9494
}
9595

96+
writer.Start(walCfg.MaxSegmentAge)
97+
9698
return m, nil
9799
}
98100

internal/component/common/loki/wal/writer.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,10 @@ func NewWriter(walCfg Config, logger log.Logger, reg prometheus.Registerer) (*Wr
109109
_ = reg.Register(wrt.lastWrittenTimestamp)
110110
}
111111

112-
wrt.start(walCfg.MaxSegmentAge)
113112
return wrt, nil
114113
}
115114

116-
func (wrt *Writer) start(maxSegmentAge time.Duration) {
115+
func (wrt *Writer) Start(maxSegmentAge time.Duration) {
117116
// main WAL writer routine
118117
wrt.wg.Go(func() {
119118
for e := range wrt.entries {

internal/component/common/loki/wal/writer_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"os"
66
"path/filepath"
7+
"sync"
78
"testing"
89
"time"
910

@@ -31,6 +32,7 @@ func TestWriter_EntriesAreWrittenToWAL(t *testing.T) {
3132
writer.Stop()
3233
}()
3334
// write entries to wal and sync
35+
writer.Start(time.Minute)
3436

3537
var testLabels = model.LabelSet{
3638
"testing": "log",
@@ -84,15 +86,21 @@ func TestWriter_OldSegmentsAreCleanedUp(t *testing.T) {
8486
MaxSegmentAge: maxSegmentAge,
8587
}, logger, prometheus.NewRegistry())
8688
require.NoError(t, err)
89+
writer.Start(maxSegmentAge)
8790
defer func() {
8891
writer.Stop()
8992
}()
9093

94+
notificationMutex := sync.Mutex{}
9195
// add writer events subscriber. Add multiple to test fanout
9296
writer.SubscribeCleanup(notifySegmentsCleanedFunc(func(num int) {
97+
notificationMutex.Lock()
98+
defer notificationMutex.Unlock()
9399
subscriber1 = append(subscriber1, num)
94100
}))
95101
writer.SubscribeCleanup(notifySegmentsCleanedFunc(func(num int) {
102+
notificationMutex.Lock()
103+
defer notificationMutex.Unlock()
96104
subscriber2 = append(subscriber2, num)
97105
}))
98106

@@ -144,12 +152,14 @@ func TestWriter_OldSegmentsAreCleanedUp(t *testing.T) {
144152
require.Error(t, err)
145153
require.ErrorIs(t, err, os.ErrNotExist, "expected file not exists error")
146154

155+
notificationMutex.Lock()
147156
// assert all subscribers were notified
148157
require.Len(t, subscriber1, 1, "expected one segment reclaimed notification in subscriber1")
149158
require.Equal(t, 0, subscriber1[0])
150159

151160
require.Len(t, subscriber2, 1, "expected one segment reclaimed notification in subscriber2")
152161
require.Equal(t, 0, subscriber2[0])
162+
notificationMutex.Unlock()
153163

154164
// Expect last, or "head" segment to still be alive
155165
_, err = os.Stat(filepath.Join(dir, "00000001"))
@@ -170,6 +180,7 @@ func TestWriter_NoSegmentIsCleanedUpIfTheresOnlyOne(t *testing.T) {
170180
MaxSegmentAge: maxSegmentAge,
171181
}, logger, prometheus.NewRegistry())
172182
require.NoError(t, err)
183+
writer.Start(maxSegmentAge)
173184
defer func() {
174185
writer.Stop()
175186
}()
@@ -299,6 +310,7 @@ func benchWriteEntries(b *testing.B, lines, labelSetCount int) {
299310
MaxSegmentAge: time.Minute,
300311
}, logger, prometheus.NewRegistry())
301312
require.NoError(b, err)
313+
writer.Start(time.Minute)
302314
defer func() {
303315
writer.Stop()
304316
}()

internal/component/loki/source/file/file_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -513,10 +513,9 @@ func TestDeleteRecreateFile(t *testing.T) {
513513
defer cancel()
514514

515515
// Create file to log to.
516-
f, err := os.Create("example")
516+
dir := t.TempDir()
517+
f, err := os.Create(filepath.Join(dir, "example"))
517518
require.NoError(t, err)
518-
defer os.Remove(f.Name())
519-
defer f.Close()
520519

521520
ctrl, err := componenttest.NewControllerFromID(logging.NewNop(), "loki.source.file")
522521
require.NoError(t, err)
@@ -542,9 +541,7 @@ func TestDeleteRecreateFile(t *testing.T) {
542541

543542
filename := model.LabelValue(f.Name())
544543
if match.Enabled {
545-
dir, err := os.Getwd()
546-
require.NoError(t, err)
547-
filename = model.LabelValue(filepath.Join(dir, f.Name()))
544+
filename = model.LabelValue(filepath.Join(dir, "example"))
548545
}
549546

550547
wantLabelSet := model.LabelSet{
@@ -559,10 +556,13 @@ func TestDeleteRecreateFile(t *testing.T) {
559556

560557
// Create a file with the same name. Use eventually because of Windows FS can deny access if this test runs too fast.
561558
require.EventuallyWithT(t, func(collect *assert.CollectT) {
562-
f, err = os.Create("example")
559+
f, err = os.Create(filepath.Join(dir, "example"))
563560
assert.NoError(collect, err)
564561
}, 30*time.Second, 100*time.Millisecond)
565562

563+
defer os.Remove(f.Name())
564+
defer f.Close()
565+
566566
_, err = f.Write([]byte("writing some new text\n"))
567567
require.NoError(t, err)
568568

internal/converter/internal/staticconvert/testdata_windows/promtail_prom.alloy

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,18 @@ discovery.relabel "logs_name_jobName" {
5757
}
5858
}
5959

60-
local.file_match "logs_name_jobName" {
61-
path_targets = discovery.relabel.logs_name_jobName.output
62-
}
63-
6460
loki.source.file "logs_name_jobName" {
65-
targets = local.file_match.logs_name_jobName.targets
61+
targets = discovery.relabel.logs_name_jobName.output
6662
forward_to = [loki.write.logs_name.receiver]
6763

6864
file_watch {
6965
min_poll_frequency = "1s"
7066
max_poll_frequency = "5s"
7167
}
68+
69+
file_match {
70+
enabled = true
71+
}
7272
legacy_positions_file = "\\path\\name.yml"
7373
}
7474

@@ -109,18 +109,18 @@ discovery.relabel "logs_name2_jobName" {
109109
}
110110
}
111111

112-
local.file_match "logs_name2_jobName" {
113-
path_targets = discovery.relabel.logs_name2_jobName.output
114-
}
115-
116112
loki.source.file "logs_name2_jobName" {
117-
targets = local.file_match.logs_name2_jobName.targets
113+
targets = discovery.relabel.logs_name2_jobName.output
118114
forward_to = [loki.write.logs_name2.receiver]
119115

120116
file_watch {
121117
min_poll_frequency = "1s"
122118
max_poll_frequency = "5s"
123119
}
120+
121+
file_match {
122+
enabled = true
123+
}
124124
legacy_positions_file = "\\path\\name2.yml"
125125
}
126126

0 commit comments

Comments
 (0)