mirror of
https://github.com/grafana/loki.git
synced 2026-03-13 09:33:58 +08:00
66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package logs
|
|
|
|
import (
|
|
"context"
|
|
"slices"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/grafana/loki/v3/pkg/dataobj"
|
|
)
|
|
|
|
func TestRowReader_NoPredicates(t *testing.T) {
|
|
logsSection := buildSection(t)
|
|
|
|
readBuf := make([]Record, 3)
|
|
rowReader := NewRowReader(logsSection)
|
|
n, err := rowReader.Read(context.Background(), readBuf)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 2, n)
|
|
}
|
|
|
|
func TestRowReader_StreamIDPredicate(t *testing.T) {
|
|
logsSection := buildSection(t)
|
|
|
|
readBuf := make([]Record, 3)
|
|
rowReader := NewRowReader(logsSection)
|
|
|
|
err := rowReader.MatchStreams(slices.Values([]int64{1}))
|
|
require.NoError(t, err)
|
|
n, err := rowReader.Read(context.Background(), readBuf)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 1, n)
|
|
}
|
|
|
|
func buildSection(t *testing.T) *Section {
|
|
logsBuilder := NewBuilder(nil, BuilderOptions{
|
|
StripeMergeLimit: 2,
|
|
})
|
|
logsBuilder.Append(Record{
|
|
StreamID: 1,
|
|
Timestamp: time.Now(),
|
|
Line: []byte("test"),
|
|
})
|
|
logsBuilder.Append(Record{
|
|
StreamID: 2,
|
|
Timestamp: time.Now(),
|
|
Line: []byte("test2"),
|
|
})
|
|
|
|
b := dataobj.NewBuilder(nil)
|
|
require.NoError(t, b.Append(logsBuilder))
|
|
|
|
obj, closer, err := b.Flush()
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() { closer.Close() })
|
|
|
|
var logsSection *Section
|
|
for _, section := range obj.Sections() {
|
|
logsSection, err = Open(context.Background(), section)
|
|
require.NoError(t, err)
|
|
}
|
|
return logsSection
|
|
}
|