From 80079e4fd706a68cceeb3cffed942a6edfc165ff Mon Sep 17 00:00:00 2001 From: Martin Angers Date: Wed, 16 Feb 2022 09:23:27 -0500 Subject: [PATCH] Fix race in mock datastore for recent_vulns test (#4230) --- server/vulnerabilities/cve_test.go | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/server/vulnerabilities/cve_test.go b/server/vulnerabilities/cve_test.go index 419d6aebdd..0c0d21843c 100644 --- a/server/vulnerabilities/cve_test.go +++ b/server/vulnerabilities/cve_test.go @@ -43,6 +43,23 @@ func bToMb(b uint64) uint64 { return b / 1024 / 1024 } +type threadSafeDSMock struct { + mu sync.Mutex + *mock.Store +} + +func (d *threadSafeDSMock) AllCPEs(ctx context.Context) ([]string, error) { + d.mu.Lock() + defer d.mu.Unlock() + return d.Store.AllCPEs(ctx) +} + +func (d *threadSafeDSMock) InsertCVEForCPE(ctx context.Context, cve string, cpes []string) (int64, error) { + d.mu.Lock() + defer d.mu.Unlock() + return d.Store.InsertCVEForCPE(ctx, cve, cpes) +} + func TestTranslateCPEToCVE(t *testing.T) { if os.Getenv("NETWORK_TEST") == "" { t.Skip("set environment variable NETWORK_TEST=1 to run") @@ -97,6 +114,8 @@ func TestTranslateCPEToCVE(t *testing.T) { recentVulnMaxAge = 365 * 24 * time.Hour defer func() { recentVulnMaxAge = oldMaxAge; theClock = clock.C }() + safeDS := &threadSafeDSMock{Store: ds} + ds.AllCPEsFunc = func(ctx context.Context) ([]string, error) { return []string{googleChromeCPE, mozillaFirefoxCPE, curlCPE}, nil } @@ -104,7 +123,7 @@ func TestTranslateCPEToCVE(t *testing.T) { ds.InsertCVEForCPEFunc = func(ctx context.Context, cve string, cpes []string) (int64, error) { return 1, nil } - recent, err := TranslateCPEToCVE(ctx, ds, tempDir, kitlog.NewNopLogger(), cfg, true) + recent, err := TranslateCPEToCVE(ctx, safeDS, tempDir, kitlog.NewNopLogger(), cfg, true) require.NoError(t, err) byCPE := make(map[string]int) @@ -126,7 +145,7 @@ func TestTranslateCPEToCVE(t *testing.T) { ds.InsertCVEForCPEFunc = func(ctx context.Context, cve string, cpes []string) (int64, error) { return 0, nil } - recent, err = TranslateCPEToCVE(ctx, ds, tempDir, kitlog.NewNopLogger(), cfg, true) + recent, err = TranslateCPEToCVE(ctx, safeDS, tempDir, kitlog.NewNopLogger(), cfg, true) require.NoError(t, err) // no recent vulnerability should be reported