Skip to content

Commit 7250dd6

Browse files
committed
add js tests to TestMultipleReceivers
1 parent a4ab05b commit 7250dd6

File tree

1 file changed

+33
-3
lines changed

1 file changed

+33
-3
lines changed

x-pack/filebeat/fbreceiver/receiver_test.go

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func benchmarkFactoryWithLogLevel(b *testing.B, level zapcore.Level) {
159159
}
160160

161161
// multiReceiverConfig creates a Config for testing multiple receivers.
162-
// Each receiver gets a unique home path.
162+
// Each receiver gets a unique home path and a JavaScript processor that loads from its own path.config directory.
163163
func multiReceiverConfig(helper multiReceiverHelper) *Config {
164164
return &Config{
165165
Beatconfig: map[string]any{
@@ -170,6 +170,17 @@ func multiReceiverConfig(helper multiReceiverHelper) *Config {
170170
"enabled": true,
171171
"message": "test",
172172
"count": 1,
173+
// Each receiver gets a JavaScript processor that loads from its own
174+
// path.config directory, adding a unique marker field to verify isolation.
175+
"processors": []map[string]any{
176+
{
177+
"script": map[string]any{
178+
"lang": "javascript",
179+
"file": "processor.js",
180+
"tag": "js-" + helper.jsMarker,
181+
},
182+
},
183+
},
173184
},
174185
{
175186
"type": "filestream",
@@ -197,14 +208,29 @@ type multiReceiverHelper struct {
197208
name string
198209
home string
199210
ingest string
211+
jsMarker string
200212
monitorSocket string
201213
}
202214

203215
func newMultiReceiverHelper(t *testing.T, number int) multiReceiverHelper {
216+
const (
217+
scriptFormat = `function process(event) { event.Put("js_marker", %q); return event; }`
218+
)
219+
220+
ingest := filepath.Join(t.TempDir(), fmt.Sprintf("test%d.log", number))
221+
222+
home := t.TempDir()
223+
224+
// Create JavaScript processor files in each receiver's home directory.
225+
// Each script adds a unique marker field to verify path isolation.
226+
jsMarker := fmt.Sprintf("receiver%d", number)
227+
writeFile(t, filepath.Join(home, "processor.js"), fmt.Sprintf(scriptFormat, jsMarker))
228+
204229
return multiReceiverHelper{
205230
name: fmt.Sprintf("r%d", number),
206-
home: t.TempDir(),
207-
ingest: filepath.Join(t.TempDir(), fmt.Sprintf("test%d.log", number)),
231+
home: home,
232+
ingest: ingest,
233+
jsMarker: jsMarker,
208234
monitorSocket: genSocketPath(t),
209235
}
210236
}
@@ -243,6 +269,10 @@ func TestMultipleReceivers(t *testing.T) {
243269

244270
assert.Equalf(c, "test", logs[helper.name][0].Flatten()["message"], "expected %v message field to be 'test'", helper)
245271

272+
// Verify that each receiver used its own JavaScript processor script.
273+
// This demonstrates path isolation: each receiver loads processor.js from its own path.config.
274+
assert.Equalf(c, helper.jsMarker, logs[helper.name][0].Flatten()["js_marker"], "expected %v to have js_marker from its own script", helper)
275+
246276
// Make sure that each receiver has a separate logger
247277
// instance and does not interfere with others. Previously, the
248278
// logger in Beats was global, causing logger fields to be

0 commit comments

Comments
 (0)