Path: blob/main/component/loki/source/journal/journal_test.go
4096 views
//go:build linux && cgo && promtail_journal_enabled12package journal34import (5"context"6"strings"7"testing"8"time"910"github.com/coreos/go-systemd/v22/journal"11"github.com/grafana/agent/component"12"github.com/grafana/agent/component/common/loki"13"github.com/grafana/agent/pkg/util"14"github.com/prometheus/client_golang/prometheus"15"github.com/stretchr/testify/require"16)1718func TestJournal(t *testing.T) {19// Create opts for component20tmp := t.TempDir()21lr := make(loki.LogsReceiver)22c, err := New(component.Options{23ID: "loki.source.journal.test",24Logger: util.TestFlowLogger(t),25DataPath: tmp,26Registerer: prometheus.DefaultRegisterer,27}, Arguments{28FormatAsJson: false,29MaxAge: 7 * time.Hour,30Path: "",31Receivers: []loki.LogsReceiver{lr},32})33require.NoError(t, err)34ctx := context.Background()35ctx, cnc := context.WithTimeout(ctx, 5*time.Second)36defer cnc()37go c.Run(ctx)38ts := time.Now().String()39err = journal.Send(ts, journal.PriInfo, nil)40require.NoError(t, err)41found := false42for !found {43select {44case <-ctx.Done():45found = true46// Timed out getting message47require.True(t, false)48case msg := <-lr:49if strings.Contains(msg.Line, ts) {50found = true51break52}53}54}55require.True(t, found)56}575859