@ -32,10 +32,15 @@ var testEncoding = []Encoding{
EncSnappy ,
}
var (
testBlockSize = 256 * 1024
testTargetSize = 1500 * 1024
)
func TestBlock ( t * testing . T ) {
for _ , enc := range testEncoding {
t . Run ( enc . String ( ) , func ( t * testing . T ) {
chk := NewMemChunk ( enc )
chk := NewMemChunk ( enc , testBlockSize , testTargetSize )
cases := [ ] struct {
ts int64
str string
@ -128,7 +133,7 @@ func TestBlock(t *testing.T) {
}
func TestReadFormatV1 ( t * testing . T ) {
c := NewMemChunk ( EncGZIP )
c := NewMemChunk ( EncGZIP , testBlockSize , testTargetSize )
fillChunk ( c )
// overrides default v2 format
c . format = chunkFormatV1
@ -138,7 +143,7 @@ func TestReadFormatV1(t *testing.T) {
t . Fatal ( err )
}
r , err := NewByteChunk ( b )
r , err := NewByteChunk ( b , testBlockSize , testTargetSize )
if err != nil {
t . Fatal ( err )
}
@ -165,7 +170,7 @@ func TestReadFormatV1(t *testing.T) {
func TestRoundtripV2 ( t * testing . T ) {
for _ , enc := range testEncoding {
t . Run ( enc . String ( ) , func ( t * testing . T ) {
c := NewMemChunk ( enc )
c := NewMemChunk ( enc , testBlockSize , testTargetSize )
populated := fillChunk ( c )
assertLines := func ( c * MemChunk ) {
@ -195,7 +200,7 @@ func TestRoundtripV2(t *testing.T) {
t . Fatal ( err )
}
r , err := NewByteChunk ( b )
r , err := NewByteChunk ( b , testBlockSize , testTargetSize )
if err != nil {
t . Fatal ( err )
}
@ -205,7 +210,7 @@ func TestRoundtripV2(t *testing.T) {
rOut , err := r . Bytes ( )
require . Nil ( t , err )
loaded , err := NewByteChunk ( rOut )
loaded , err := NewByteChunk ( rOut , testBlockSize , testTargetSize )
require . Nil ( t , err )
assertLines ( loaded )
@ -218,7 +223,7 @@ func TestRoundtripV2(t *testing.T) {
func TestSerialization ( t * testing . T ) {
for _ , enc := range testEncoding {
t . Run ( enc . String ( ) , func ( t * testing . T ) {
chk := NewMemChunk ( enc )
chk := NewMemChunk ( enc , testBlockSize , testTargetSize )
numSamples := 500000
@ -229,7 +234,7 @@ func TestSerialization(t *testing.T) {
byt , err := chk . Bytes ( )
require . NoError ( t , err )
bc , err := NewByteChunk ( byt )
bc , err := NewByteChunk ( byt , testBlockSize , testTargetSize )
require . NoError ( t , err )
it , err := bc . Iterator ( context . Background ( ) , time . Unix ( 0 , 0 ) , time . Unix ( 0 , math . MaxInt64 ) , logproto . FORWARD , nil )
@ -255,7 +260,7 @@ func TestSerialization(t *testing.T) {
func TestChunkFilling ( t * testing . T ) {
for _ , enc := range testEncoding {
t . Run ( enc . String ( ) , func ( t * testing . T ) {
chk := NewMemChunk ( enc )
chk := NewMemChunk ( enc , testBlockSize , 0 )
chk . blockSize = 1024
// We should be able to append only 10KB of logs.
@ -292,8 +297,7 @@ func TestChunkFilling(t *testing.T) {
}
func TestGZIPChunkTargetSize ( t * testing . T ) {
targetSize := 1024 * 1024
chk := NewMemChunkSize ( EncGZIP , 1024 , targetSize )
chk := NewMemChunk ( EncGZIP , testBlockSize , testTargetSize )
lineSize := 512
entry := & logproto . Entry {
@ -330,8 +334,8 @@ func TestGZIPChunkTargetSize(t *testing.T) {
// Even though the seed is static above and results should be deterministic,
// we will allow +/- 10% variance
minSize := int ( float64 ( targetSize ) * 0.9 )
maxSize := int ( float64 ( targetSize ) * 1.1 )
minSize := int ( float64 ( testT argetSize ) * 0.9 )
maxSize := int ( float64 ( testT argetSize ) * 1.1 )
require . Greater ( t , chk . CompressedSize ( ) , minSize )
require . Less ( t , chk . CompressedSize ( ) , maxSize )
@ -378,7 +382,7 @@ func TestMemChunk_AppendOutOfOrder(t *testing.T) {
t . Run ( testName , func ( t * testing . T ) {
t . Parallel ( )
tester ( t , NewMemChunk ( EncGZIP ) )
tester ( t , NewMemChunk ( EncGZIP , testBlockSize , testTargetSize ) )
} )
}
}
@ -386,7 +390,7 @@ func TestMemChunk_AppendOutOfOrder(t *testing.T) {
func TestChunkSize ( t * testing . T ) {
for _ , enc := range testEncoding {
t . Run ( enc . String ( ) , func ( t * testing . T ) {
c := NewMemChunk ( enc )
c := NewMemChunk ( enc , testBlockSize , testTargetSize )
inserted := fillChunk ( c )
b , err := c . Bytes ( )
if err != nil {
@ -400,7 +404,7 @@ func TestChunkSize(t *testing.T) {
}
func TestChunkStats ( t * testing . T ) {
c := NewMemChunk ( EncSnappy )
c := NewMemChunk ( EncSnappy , testBlockSize , 0 )
first := time . Now ( )
entry := & logproto . Entry {
Timestamp : first ,
@ -445,7 +449,7 @@ func TestChunkStats(t *testing.T) {
}
// test on a new chunk.
cb , err := NewByteChunk ( b )
cb , err := NewByteChunk ( b , testBlockSize , testTargetSize )
if err != nil {
t . Fatal ( err )
}
@ -496,7 +500,7 @@ func TestIteratorClose(t *testing.T) {
}
} ,
} {
c := NewMemChunk ( enc )
c := NewMemChunk ( enc , testBlockSize , testTargetSize )
inserted := fillChunk ( c )
iter , err := c . Iterator ( context . Background ( ) , time . Unix ( 0 , 0 ) , time . Unix ( 0 , inserted ) , logproto . BACKWARD , nil )
if err != nil {
@ -523,7 +527,7 @@ func BenchmarkWrite(b *testing.B) {
for _ , enc := range testEncoding {
b . Run ( enc . String ( ) , func ( b * testing . B ) {
for n := 0 ; n < b . N ; n ++ {
c := NewMemChunk ( enc )
c := NewMemChunk ( enc , testBlockSize , testTargetSize )
// adds until full so we trigger cut which serialize using gzip
for c . SpaceFor ( entry ) {
_ = c . Append ( entry )