Skip to content

Commit f916f64

Browse files
committed
fix: add tests
1 parent b0eb518 commit f916f64

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

filebeat/beater/store_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ import (
2626
"github.com/stretchr/testify/require"
2727

2828
"github.com/elastic/beats/v7/filebeat/config"
29+
"github.com/elastic/beats/v7/filebeat/features"
2930
"github.com/elastic/beats/v7/libbeat/beat"
31+
"github.com/elastic/beats/v7/libbeat/statestore/storetest"
3032
"github.com/elastic/elastic-agent-libs/logp"
3133
"github.com/elastic/elastic-agent-libs/paths"
3234
)
@@ -154,3 +156,50 @@ func TestOpenStateStore_ConcurrentOpenClose(t *testing.T) {
154156
globalMu.Unlock()
155157
assert.False(t, exists, "entry should be cleaned up after all stores are closed")
156158
}
159+
160+
func TestOpenStateStore_DifferentESExtensionsShouldNotShare(t *testing.T) {
161+
t.Setenv("AGENTLESS_ELASTICSEARCH_STATE_STORE_INPUT_TYPES", "dummy")
162+
features.ReinitForTest()
163+
t.Cleanup(func() {
164+
t.Setenv("AGENTLESS_ELASTICSEARCH_STATE_STORE_INPUT_TYPES", "")
165+
features.ReinitForTest()
166+
})
167+
168+
beatPaths := paths.New()
169+
beatPaths.Data = t.TempDir()
170+
171+
cfgWithExt := func(ext *storetest.MemoryStore) config.Registry {
172+
return config.Registry{
173+
Path: "",
174+
Permissions: 0600,
175+
CleanInterval: time.Second,
176+
ESStorageExtension: ext,
177+
}
178+
}
179+
180+
extA := storetest.NewMemoryStoreBackend()
181+
extB := storetest.NewMemoryStoreBackend()
182+
183+
s1, err := openStateStore(t.Context(), beat.Info{Beat: "testbeat"}, logp.NewNopLogger(), cfgWithExt(extA), beatPaths)
184+
require.NoError(t, err)
185+
t.Cleanup(s1.Close)
186+
187+
s2, err := openStateStore(t.Context(), beat.Info{Beat: "testbeat"}, logp.NewNopLogger(), cfgWithExt(extB), beatPaths)
188+
require.NoError(t, err)
189+
t.Cleanup(s2.Close)
190+
191+
storeA, err := s1.StoreFor("dummy")
192+
require.NoError(t, err)
193+
t.Cleanup(func() { _ = storeA.Close() })
194+
195+
storeB, err := s2.StoreFor("dummy")
196+
require.NoError(t, err)
197+
t.Cleanup(func() { _ = storeB.Close() })
198+
199+
require.NoError(t, storeA.Set("k", map[string]string{"v": "from-a"}))
200+
201+
var got map[string]string
202+
err = storeB.Get("k", &got)
203+
assert.Error(t, err, "expected independent storage extensions for stores with different ESStorageExtension instances")
204+
assert.Nil(t, got, "no state should leak between stores with different ESStorageExtension instances")
205+
}

0 commit comments

Comments
 (0)