in internal/beater/beatertest/server.go [82:136]
func NewUnstartedServer(t testing.TB, opts ...option) *Server {
core, observedLogs := observer.New(zapcore.DebugLevel)
logger := logptest.NewTestingLogger(t, "", zap.WrapCore(func(in zapcore.Core) zapcore.Core {
return zapcore.NewTee(in, core)
}))
options := options{
config: []*agentconfig.C{agentconfig.MustNewConfigFrom(map[string]interface{}{
"apm-server": map[string]interface{}{
"host": "localhost:0",
},
})},
meterProvider: noop.NewMeterProvider(),
}
for _, o := range opts {
o(&options)
}
cfg, err := agentconfig.MergeConfigs(options.config...)
require.NoError(t, err)
// If no output is defined, use output.null.
var outputConfig struct {
Output agentconfig.Namespace `config:"output"`
}
err = cfg.Unpack(&outputConfig)
require.NoError(t, err)
if !outputConfig.Output.IsSet() {
esCfg, _ := ElasticsearchOutputConfig(t)
err = cfg.Merge(esCfg)
require.NoError(t, err)
}
runner, err := beater.NewRunner(beater.RunnerParams{
Config: cfg,
Logger: logger,
WrapServer: options.wrapServer,
TracerProvider: options.tracerProvider,
MeterProvider: options.meterProvider,
})
require.NoError(t, err)
ctx, cancel := context.WithCancel(context.Background())
group, ctx := errgroup.WithContext(ctx)
srv := &Server{
group: group,
ctx: ctx,
cancel: cancel,
runner: runner,
Logs: observedLogs,
}
t.Cleanup(func() { srv.Close() })
return srv
}