Path: blob/main/component/loki/source/windowsevent/component_test.go
5304 views
//go:build windows12package windowsevent34import (5"context"6"strings"7"testing"8"time"910"github.com/grafana/agent/component"11"github.com/grafana/agent/component/common/loki"12"github.com/grafana/agent/pkg/util"13"github.com/prometheus/client_golang/prometheus"14"github.com/stretchr/testify/require"15"golang.org/x/sys/windows/svc/eventlog"16)1718func TestEventLogger(t *testing.T) {19var loggerName = "agent_test"20//Setup Windows Event log with the log source name and logging levels21_ = eventlog.InstallAsEventCreate(loggerName, eventlog.Info|eventlog.Warning|eventlog.Error)22wlog, err := eventlog.Open(loggerName)23require.NoError(t, err)24dataPath := t.TempDir()25rec := make(loki.LogsReceiver)26c, err := New(component.Options{27ID: "loki.source.windowsevent.test",28Logger: util.TestFlowLogger(t),29DataPath: dataPath,30OnStateChange: func(e component.Exports) {3132},33Registerer: prometheus.DefaultRegisterer,34Tracer: nil,35HTTPListenAddr: "",36HTTPPath: "",37}, Arguments{38Locale: 0,39EventLogName: "Application",40XPathQuery: "*",41BookmarkPath: "",42PollInterval: 10 * time.Millisecond,43ExcludeEventData: false,44ExcludeUserdata: false,45UseIncomingTimestamp: false,46ForwardTo: []loki.LogsReceiver{rec},47})48require.NoError(t, err)49ctx := context.Background()50ctx, cancelFunc := context.WithTimeout(ctx, 10*time.Second)51found := false52go c.Run(ctx)53tm := time.Now().Format(time.RFC3339Nano)54err = wlog.Info(2, tm)55require.NoError(t, err)56select {57case <-ctx.Done():58// Fail!59require.True(t, false)60case e := <-rec:61if strings.Contains(e.Line, tm) {62found = true63break64}65}66cancelFunc()67require.True(t, found)68}697071