func NewUnstartedServer()

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
}