- go.mod with github.com/dailz/go-kv, Go 1.26.3, testify - config/config.go with WalConfig, Validate() with checked arithmetic - errors.go with sentinel errors (ErrCommitUnknown, ErrWriteStopped, etc.) - wal/constants.go with all WAL format constants and enums - wal/header.go with WAL File Header encode/decode (CRC32 IEEE) - wal/record.go with Physical Record codec, block boundary, SplitIntoRecords - wal/entry.go with WAL Entry codec (varint keys/values, OpType, ValueKind) - wal/sequence.go with SequenceManager (atomic, CAS, overflow-safe) - manifest/manifest.go with MANIFEST stub (Load/Save atomic) - manifest/current.go with CURRENT file (WriteCurrent/ReadCurrent) - Comprehensive tests for all modules - .golangci.yml configuration
33 lines
1.3 KiB
Go
33 lines
1.3 KiB
Go
package config
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestValidateDefaults(t *testing.T) {
|
|
cfg := WalConfig{}
|
|
err := cfg.Validate()
|
|
require.NoError(t, err, "default WalConfig should pass validation")
|
|
|
|
d := Defaults()
|
|
assert.Equal(t, d.MaxSegmentSize, cfg.MaxSegmentSize, "MaxSegmentSize should be defaulted")
|
|
assert.Equal(t, d.BlockSize, cfg.BlockSize, "BlockSize should be defaulted")
|
|
assert.Equal(t, d.SyncMode, cfg.SyncMode, "SyncMode should be defaulted")
|
|
assert.Equal(t, d.MaxBatchEntries, cfg.MaxBatchEntries, "MaxBatchEntries should be defaulted")
|
|
assert.Equal(t, d.MaxBatchSize, cfg.MaxBatchSize, "MaxBatchSize should be defaulted")
|
|
assert.Equal(t, d.MaxKeyBytes, cfg.MaxKeyBytes, "MaxKeyBytes should be defaulted")
|
|
assert.Equal(t, d.MaxInlineValue, cfg.MaxInlineValue, "MaxInlineValue should be defaulted")
|
|
assert.Equal(t, d.MemTableSize, cfg.MemTableSize, "MemTableSize should be defaulted")
|
|
assert.Equal(t, d.MaxImmutableCount, cfg.MaxImmutableCount, "MaxImmutableCount should be defaulted")
|
|
}
|
|
|
|
func TestValidateSegmentTooSmall(t *testing.T) {
|
|
cfg := WalConfig{MaxSegmentSize: 1024}
|
|
err := cfg.Validate()
|
|
require.Error(t, err, "MaxSegmentSize=1024 should fail validation")
|
|
assert.Contains(t, err.Error(), "too small")
|
|
}
|