Skip to content

Commit 5b7ceb3

Browse files
committed
logstore: test ClearRaftTruncatedState
Epic: none Release note: none
1 parent 370dca8 commit 5b7ceb3

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

pkg/kv/kvserver/logstore/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ go_test(
5353
"logstore_bench_test.go",
5454
"logstore_test.go",
5555
"sideload_test.go",
56+
"stateloader_test.go",
5657
"sync_waiter_test.go",
5758
],
5859
data = glob(["testdata/**"]),
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Copyright 2025 The Cockroach Authors.
2+
//
3+
// Use of this software is governed by the CockroachDB Software License
4+
// included in the /LICENSE file.
5+
6+
package logstore
7+
8+
import (
9+
"context"
10+
"testing"
11+
12+
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/kvserverpb"
13+
"github.com/cockroachdb/cockroach/pkg/roachpb"
14+
"github.com/cockroachdb/cockroach/pkg/storage"
15+
"github.com/cockroachdb/cockroach/pkg/util/leaktest"
16+
"github.com/cockroachdb/cockroach/pkg/util/log"
17+
"github.com/stretchr/testify/require"
18+
)
19+
20+
// TestStateLoader tests the various methods of StateLoader.
21+
//
22+
// TODO(pav-kv): extend it to test keys other than RaftTruncatedState.
23+
func TestStateLoader(t *testing.T) {
24+
defer leaktest.AfterTest(t)()
25+
defer log.Scope(t).Close(t)
26+
27+
ctx := context.Background()
28+
eng := storage.NewDefaultInMemForTesting()
29+
defer eng.Close()
30+
31+
const rangeID = roachpb.RangeID(123)
32+
sl := NewStateLoader(rangeID)
33+
34+
// Test that RaftTruncatedState can be read after it is written.
35+
ts := kvserverpb.RaftTruncatedState{Index: 100, Term: 10}
36+
require.NoError(t, sl.SetRaftTruncatedState(ctx, eng, &ts))
37+
got, err := sl.LoadRaftTruncatedState(ctx, eng)
38+
require.NoError(t, err)
39+
require.Equal(t, ts, got)
40+
// Test that RaftTruncatedState is correctly cleared.
41+
require.NoError(t, sl.ClearRaftTruncatedState(eng))
42+
got, err = sl.LoadRaftTruncatedState(ctx, eng)
43+
require.NoError(t, err)
44+
require.Equal(t, kvserverpb.RaftTruncatedState{}, got)
45+
}

0 commit comments

Comments
 (0)