Skip to content

Commit f00c983

Browse files
authored
auditbeat tests: remove global paths mutation (#49875)
Delete the auditbeat/testing helper that mutated the global paths.Paths.Data. Instead, pass a local *paths.Path directly to datastore.OpenBucket in tests that need a bucket, and simply drop the setup call in tests that don't. The auditbeat/testing.SetupDataDir helper was intended to redirect beat.db to a temp directory during tests, but it was a no-op: it mutated the global paths.Paths.Data, while paths.New() (used by both the test helpers and the metricset) returns a zero-value Path{} that doesn't read from the global. As a result, beat.db has been written to the test's working directory (e.g. auditbeat/module/file_integrity/beat.db), polluting the source tree.
1 parent c37cfcf commit f00c983

9 files changed

Lines changed: 16 additions & 96 deletions

File tree

auditbeat/module/file_integrity/metricset_test.go

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,12 @@ import (
3232
"github.com/elastic/beats/v7/auditbeat/ab"
3333
"github.com/elastic/beats/v7/auditbeat/core"
3434
"github.com/elastic/beats/v7/auditbeat/datastore"
35-
abtest "github.com/elastic/beats/v7/auditbeat/testing"
3635
"github.com/elastic/beats/v7/metricbeat/mb"
3736
mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing"
3837
"github.com/elastic/elastic-agent-libs/paths"
3938
)
4039

4140
func TestData(t *testing.T) {
42-
defer abtest.SetupDataDir(t)()
43-
4441
dir := t.TempDir()
4542

4643
go func() {
@@ -69,8 +66,6 @@ func TestActions(t *testing.T) {
6966
// Can be removed after https://github.com/elastic/ingest-dev/issues/3076 is solved
7067
skipOnBuildkiteDarwinArm(t)
7168

72-
defer abtest.SetupDataDir(t)()
73-
7469
bucket, err := datastore.OpenBucket(bucketName, paths.New())
7570
if err != nil {
7671
t.Fatal(err)
@@ -145,7 +140,7 @@ func TestActions(t *testing.T) {
145140
// depending on whether the scanner or the platform-dependent
146141
// filesystem event listener reported it. The subset of actions we test
147142
// for here should be consistent across all cases though.
148-
switch path.(string) {
143+
switch path.(string) { //nolint:errcheck // err already checked above
149144
case newDir:
150145
assert.Contains(t, actions, "initial_scan")
151146
case dir:
@@ -172,8 +167,6 @@ func TestExcludedFiles(t *testing.T) {
172167
// Can be removed after https://github.com/elastic/ingest-dev/issues/3076 is solved
173168
skipOnBuildkiteDarwinArm(t)
174169

175-
defer abtest.SetupDataDir(t)()
176-
177170
bucket, err := datastore.OpenBucket(bucketName, paths.New())
178171
if err != nil {
179172
t.Fatal(err)
@@ -210,7 +203,7 @@ func TestExcludedFiles(t *testing.T) {
210203
event := e.MetricSetFields
211204
path, err := event.GetValue("file.path")
212205
if assert.NoError(t, err) {
213-
_, ok := wanted[path.(string)]
206+
_, ok := wanted[path.(string)] //nolint:errcheck // err already checked above
214207
assert.True(t, ok)
215208
}
216209
}
@@ -224,8 +217,6 @@ func TestIncludedExcludedFiles(t *testing.T) {
224217
// Can be removed after https://github.com/elastic/ingest-dev/issues/3076 is solved
225218
skipOnBuildkiteDarwinArm(t)
226219

227-
defer abtest.SetupDataDir(t)()
228-
229220
bucket, err := datastore.OpenBucket(bucketName, paths.New())
230221
if err != nil {
231222
t.Fatal(err)
@@ -270,7 +261,7 @@ func TestIncludedExcludedFiles(t *testing.T) {
270261
event := e.MetricSetFields
271262
path, err := event.GetValue("file.path")
272263
if assert.NoError(t, err, "Failed to read file.path field") {
273-
got[path.(string)] = true
264+
got[path.(string)] = true //nolint:errcheck // err already checked above
274265
}
275266
}
276267
assert.Equal(t, wanted, got)
@@ -288,8 +279,6 @@ func TestErrorReporting(t *testing.T) {
288279
// in UNIX/Linux OS.
289280
t.Skip("This test can't be run as root")
290281
}
291-
defer abtest.SetupDataDir(t)()
292-
293282
dir := t.TempDir()
294283

295284
path := filepath.Join(dir, "unreadable.txt")
@@ -483,7 +472,7 @@ func (e expectedEvents) validate(t *testing.T) {
483472
if !assert.True(t, ok) {
484473
t.Fatal("can't create metricset")
485474
}
486-
ms.bucket = bucket.(datastore.BoltBucket)
475+
ms.bucket = bucket.(datastore.BoltBucket) //nolint:errcheck // type is guaranteed by OpenBucket
487476
for _, ev := range e {
488477
ev.validate(t, ms)
489478
}
@@ -756,7 +745,7 @@ func TestEventDelete(t *testing.T) {
756745
if !assert.True(t, ok) {
757746
t.Fatal("can't create metricset")
758747
}
759-
ms.bucket = bucket.(datastore.BoltBucket)
748+
ms.bucket = bucket.(datastore.BoltBucket) //nolint:errcheck // type is guaranteed by OpenBucket
760749

761750
baseTime := time.Now()
762751
sha := Digest("22222222222222222222")

auditbeat/testing/setup.go

Lines changed: 0 additions & 36 deletions
This file was deleted.

x-pack/auditbeat/module/system/host/host_test.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,11 @@ import (
99

1010
"github.com/elastic/beats/v7/auditbeat/ab"
1111
"github.com/elastic/beats/v7/auditbeat/core"
12-
abtest "github.com/elastic/beats/v7/auditbeat/testing"
1312
mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing"
1413
"github.com/elastic/beats/v7/x-pack/auditbeat/module/system"
1514
)
1615

1716
func TestData(t *testing.T) {
18-
defer abtest.SetupDataDir(t)()
19-
2017
f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry)
2118
events, errs := mbtest.ReportingFetchV2(f)
2219
if len(errs) > 0 {

x-pack/auditbeat/module/system/login/login_linux_amd64_test.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919

2020
"github.com/elastic/beats/v7/auditbeat/ab"
2121
"github.com/elastic/beats/v7/auditbeat/core"
22-
abtest "github.com/elastic/beats/v7/auditbeat/testing"
2322
mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing"
2423
"github.com/elastic/beats/v7/x-pack/auditbeat/module/system"
2524
"github.com/elastic/elastic-agent-libs/mapstr"
@@ -30,14 +29,12 @@ func TestData(t *testing.T) {
3029
t.Skip("Test only works on little-endian systems - skipping.")
3130
}
3231

33-
defer abtest.SetupDataDir(t)()
34-
3532
config := getBaseConfig()
3633
config["login.wtmp_file_pattern"] = "./testdata/wtmp"
3734
config["login.btmp_file_pattern"] = ""
3835
f := mbtest.NewReportingMetricSetV2WithRegistry(t, config, ab.Registry)
3936
defer func() {
40-
if err := f.(*MetricSet).utmpReader.bucket.DeleteBucket(); err != nil {
37+
if err := f.(*MetricSet).utmpReader.bucket.DeleteBucket(); err != nil { //nolint:errcheck // unchecked type assertion
4138
t.Fatalf("received error: %+v", err)
4239
}
4340
}()
@@ -63,8 +60,6 @@ func TestWtmp(t *testing.T) {
6360
t.Skip("Test only works on little-endian systems - skipping.")
6461
}
6562

66-
defer abtest.SetupDataDir(t)()
67-
6863
dir := setupTestDir(t)
6964
defer os.RemoveAll(dir)
7065

@@ -75,7 +70,7 @@ func TestWtmp(t *testing.T) {
7570
config["login.btmp_file_pattern"] = ""
7671
f := mbtest.NewReportingMetricSetV2WithRegistry(t, config, ab.Registry)
7772
defer func() {
78-
if err := f.(*MetricSet).utmpReader.bucket.DeleteBucket(); err != nil {
73+
if err := f.(*MetricSet).utmpReader.bucket.DeleteBucket(); err != nil { //nolint:errcheck // unchecked type assertion
7974
t.Fatalf("received error: %+v", err)
8075
}
8176
}()
@@ -184,14 +179,12 @@ func TestBtmp(t *testing.T) {
184179
t.Skip("Test only works on little-endian systems - skipping.")
185180
}
186181

187-
defer abtest.SetupDataDir(t)()
188-
189182
config := getBaseConfig()
190183
config["login.wtmp_file_pattern"] = ""
191184
config["login.btmp_file_pattern"] = "./testdata/btmp.amd"
192185
f := mbtest.NewReportingMetricSetV2WithRegistry(t, config, ab.Registry)
193186
defer func() {
194-
if err := f.(*MetricSet).utmpReader.bucket.DeleteBucket(); err != nil {
187+
if err := f.(*MetricSet).utmpReader.bucket.DeleteBucket(); err != nil { //nolint:errcheck // unchecked type assertion
195188
t.Fatalf("received error: %+v", err)
196189
}
197190
}()

x-pack/auditbeat/module/system/login/login_linux_arm64_test.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020

2121
"github.com/elastic/beats/v7/auditbeat/ab"
2222
"github.com/elastic/beats/v7/auditbeat/core"
23-
abtest "github.com/elastic/beats/v7/auditbeat/testing"
2423
mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing"
2524
"github.com/elastic/beats/v7/x-pack/auditbeat/module/system"
2625
"github.com/elastic/elastic-agent-libs/mapstr"
@@ -31,8 +30,6 @@ func TestData(t *testing.T) {
3130
t.Skip("Test only works on little-endian systems - skipping.")
3231
}
3332

34-
defer abtest.SetupDataDir(t)()
35-
3633
config := getBaseConfig()
3734
config["login.wtmp_file_pattern"] = "./testdata/wtmp.arm"
3835
config["login.btmp_file_pattern"] = ""
@@ -60,8 +57,6 @@ func TestWtmp(t *testing.T) {
6057
t.Skip("Test only works on little-endian systems - skipping.")
6158
}
6259

63-
defer abtest.SetupDataDir(t)()
64-
6560
dir := setupTestDir(t)
6661
defer os.RemoveAll(dir)
6762

@@ -200,8 +195,6 @@ func TestBtmp(t *testing.T) {
200195
t.Skip("Test only works on little-endian systems - skipping.")
201196
}
202197

203-
defer abtest.SetupDataDir(t)()
204-
205198
config := getBaseConfig()
206199
config["login.wtmp_file_pattern"] = ""
207200
config["login.btmp_file_pattern"] = "./testdata/btmp.arm"

x-pack/auditbeat/module/system/package/package_homebrew_test.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,11 @@ import (
1515

1616
"github.com/elastic/beats/v7/auditbeat/ab"
1717
"github.com/elastic/beats/v7/auditbeat/core"
18-
abtest "github.com/elastic/beats/v7/auditbeat/testing"
1918
"github.com/elastic/beats/v7/libbeat/beat"
2019
mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing"
2120
)
2221

2322
func TestHomebrew(t *testing.T) {
24-
defer abtest.SetupDataDir(t)()
2523

2624
oldPath := homebrewCellarPath
2725
defer func() {
@@ -79,7 +77,6 @@ func checkFieldValue(t *testing.T, event beat.Event, fieldName string, fieldValu
7977
}
8078

8179
func TestHomebrewNotExist(t *testing.T) {
82-
defer abtest.SetupDataDir(t)()
8380

8481
oldPath := homebrewCellarPath
8582
defer func() {

x-pack/auditbeat/module/system/package/package_test.go

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"github.com/elastic/beats/v7/auditbeat/ab"
2121
"github.com/elastic/beats/v7/auditbeat/core"
2222
"github.com/elastic/beats/v7/auditbeat/datastore"
23-
abtest "github.com/elastic/beats/v7/auditbeat/testing"
2423

2524
"github.com/elastic/beats/v7/metricbeat/mb"
2625
mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing"
@@ -29,8 +28,6 @@ import (
2928
)
3029

3130
func TestData(t *testing.T) {
32-
defer abtest.SetupDataDir(t)()
33-
3431
f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry)
3532
defer deleteBucket(t, f)
3633

@@ -48,9 +45,7 @@ func TestData(t *testing.T) {
4845
}
4946

5047
func TestDpkg(t *testing.T) {
51-
logp.TestingSetup()
52-
53-
defer abtest.SetupDataDir(t)()
48+
logp.TestingSetup() //nolint:staticcheck // TODO: replace with logptest.NewTestingLogger once MetricSet accepts an injected logger
5449

5550
// Disable all except dpkg
5651
rpmPathOld := rpmPath
@@ -107,9 +102,7 @@ func TestDpkgInstalledSize(t *testing.T) {
107102
"python2.7-minimal": 0,
108103
}
109104

110-
logp.TestingSetup()
111-
112-
defer abtest.SetupDataDir(t)()
105+
logp.TestingSetup() //nolint:staticcheck // TODO: replace with logptest.NewTestingLogger once MetricSet accepts an injected logger
113106

114107
// Disable all except dpkg
115108
rpmPathOld := rpmPath
@@ -154,7 +147,7 @@ func TestDpkgInstalledSize(t *testing.T) {
154147
if !assert.IsType(t, uint64(0), size) {
155148
t.Fatal("uint64 expected")
156149
}
157-
got[name.(string)] = size.(uint64)
150+
got[name.(string)] = size.(uint64) //nolint:errcheck // types checked above
158151
}
159152
assert.Equal(t, expected, got)
160153
}
@@ -284,7 +277,7 @@ func copyFile(old, new string) error {
284277
// prevents test side effects. The tests should be refactored to support
285278
// true isolation with different data stores in different temp dirs.
286279
func deleteBucket(t *testing.T, metricSet mb.ReportingMetricSetV2) {
287-
if err := metricSet.(*MetricSet).bucket.DeleteBucket(); err != nil {
280+
if err := metricSet.(*MetricSet).bucket.DeleteBucket(); err != nil { //nolint:errcheck // unchecked type assertion
288281
t.Fatal(err)
289282
}
290283
}

x-pack/auditbeat/module/system/process/process_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,19 @@ import (
1414
"github.com/elastic/beats/v7/auditbeat/ab"
1515
"github.com/elastic/beats/v7/auditbeat/core"
1616
"github.com/elastic/beats/v7/auditbeat/helper/hasher"
17-
abtest "github.com/elastic/beats/v7/auditbeat/testing"
1817
mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing"
1918
"github.com/elastic/beats/v7/x-pack/auditbeat/module/system"
2019
"github.com/elastic/elastic-agent-libs/mapstr"
2120
"github.com/elastic/go-sysinfo/types"
2221
)
2322

2423
func TestData(t *testing.T) {
25-
defer abtest.SetupDataDir(t)()
26-
2724
f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry)
2825

2926
// Set lastState and add test process to cache so it will be reported as stopped.
30-
f.(*SysInfoMetricSet).lastState = time.Now()
27+
f.(*SysInfoMetricSet).lastState = time.Now() //nolint:errcheck // unchecked type assertion
3128
p := testProcess()
32-
f.(*SysInfoMetricSet).cache.DiffAndUpdateCache([]*Process{p})
29+
f.(*SysInfoMetricSet).cache.DiffAndUpdateCache([]*Process{p}) //nolint:errcheck // unchecked type assertion
3330

3431
events, errs := mbtest.ReportingFetchV2(f)
3532
if len(errs) > 0 {

x-pack/auditbeat/module/system/user/user_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,17 @@ import (
1515

1616
"github.com/elastic/beats/v7/auditbeat/ab"
1717
"github.com/elastic/beats/v7/auditbeat/core"
18-
abtest "github.com/elastic/beats/v7/auditbeat/testing"
1918
mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing"
2019
"github.com/elastic/beats/v7/x-pack/auditbeat/module/system"
2120
)
2221

2322
func TestData(t *testing.T) {
24-
defer abtest.SetupDataDir(t)()
25-
2623
f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry)
2724

2825
// Set lastState and add test process to cache so it will be reported as stopped.
29-
f.(*MetricSet).lastState = time.Now()
26+
f.(*MetricSet).lastState = time.Now() //nolint:errcheck // unchecked type assertion
3027
u := testUser()
31-
f.(*MetricSet).cache.DiffAndUpdateCache([]*User{u})
28+
f.(*MetricSet).cache.DiffAndUpdateCache([]*User{u}) //nolint:errcheck // unchecked type assertion
3229

3330
events, errs := mbtest.ReportingFetchV2(f)
3431
if len(errs) > 0 {

0 commit comments

Comments
 (0)