Skip to content

Commit b9ab55f

Browse files
committed
kvstorage: clean up TestIterateIDPrefixKeys
Epic: none Release note: none
1 parent 4116e19 commit b9ab55f

File tree

2 files changed

+29
-69
lines changed

2 files changed

+29
-69
lines changed

pkg/kv/kvserver/kvstorage/BUILD.bazel

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ go_test(
7373
"//pkg/util/uuid",
7474
"@com_github_cockroachdb_datadriven//:datadriven",
7575
"@com_github_cockroachdb_redact//:redact",
76-
"@com_github_kr_pretty//:pretty",
7776
"@com_github_stretchr_testify//require",
7877
],
7978
)

pkg/kv/kvserver/kvstorage/init_test.go

Lines changed: 29 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ import (
2020
"github.com/cockroachdb/cockroach/pkg/util/leaktest"
2121
"github.com/cockroachdb/cockroach/pkg/util/log"
2222
"github.com/cockroachdb/cockroach/pkg/util/randutil"
23-
"github.com/cockroachdb/cockroach/pkg/util/stop"
24-
"github.com/kr/pretty"
2523
"github.com/stretchr/testify/require"
2624
)
2725

@@ -33,15 +31,11 @@ func TestIterateIDPrefixKeys(t *testing.T) {
3331
defer log.Scope(t).Close(t)
3432

3533
ctx := context.Background()
36-
stopper := stop.NewStopper()
37-
defer stopper.Stop(ctx)
38-
3934
eng := storage.NewDefaultInMemForTesting()
40-
stopper.AddCloser(eng)
35+
defer eng.Close()
4136

4237
seed := randutil.NewPseudoSeed()
43-
// const seed = -1666367124291055473
44-
t.Logf("seed is %d", seed)
38+
t.Logf("seed: %d", seed)
4539
rng := rand.New(rand.NewSource(seed))
4640

4741
ops := []func(rangeID roachpb.RangeID) roachpb.Key{
@@ -64,21 +58,16 @@ func TestIterateIDPrefixKeys(t *testing.T) {
6458
// Write a number of keys that should be irrelevant to the iteration in this test.
6559
for i := 0; i < rangeCount; i++ {
6660
rangeID := rangeIDFn()
67-
6861
// Grab between one and all ops, randomly.
6962
for _, opIdx := range rng.Perm(len(ops))[:rng.Intn(1+len(ops))] {
7063
key := ops[opIdx](rangeID)
7164
t.Logf("writing op=%d rangeID=%d", opIdx, rangeID)
72-
if _, err := storage.MVCCPut(
73-
ctx,
74-
eng,
75-
key,
76-
hlc.Timestamp{},
65+
_, err := storage.MVCCPut(
66+
ctx, eng, key, hlc.Timestamp{},
7767
roachpb.MakeValueFromString("fake value for "+key.String()),
7868
storage.MVCCWriteOptions{},
79-
); err != nil {
80-
t.Fatal(err)
81-
}
69+
)
70+
require.NoError(t, err)
8271
}
8372
}
8473

@@ -88,30 +77,22 @@ func TestIterateIDPrefixKeys(t *testing.T) {
8877
}
8978

9079
// Next, write the keys we're planning to see again.
91-
var wanted []seenT
92-
{
93-
used := make(map[roachpb.RangeID]struct{})
94-
for {
95-
rangeID := rangeIDFn()
96-
if _, ok := used[rangeID]; ok {
97-
// We already wrote this key, so roll the dice again.
98-
continue
99-
}
100-
101-
tombstone := kvserverpb.RangeTombstone{
102-
NextReplicaID: roachpb.ReplicaID(rng.Int31n(100)),
103-
}
104-
105-
used[rangeID] = struct{}{}
106-
wanted = append(wanted, seenT{rangeID: rangeID, tombstone: tombstone})
107-
108-
t.Logf("writing tombstone at rangeID=%d", rangeID)
109-
require.NoError(t, MakeStateLoader(rangeID).SetRangeTombstone(ctx, eng, tombstone))
110-
111-
if len(wanted) >= rangeCount {
112-
break
113-
}
80+
wanted := make([]seenT, 0, rangeCount)
81+
for used := make(map[roachpb.RangeID]struct{}); len(wanted) < rangeCount; {
82+
rangeID := rangeIDFn()
83+
if _, ok := used[rangeID]; ok {
84+
// We already wrote this key, so roll the dice again.
85+
continue
86+
}
87+
used[rangeID] = struct{}{}
88+
89+
tombstone := kvserverpb.RangeTombstone{
90+
NextReplicaID: roachpb.ReplicaID(rng.Int31n(100)),
11491
}
92+
wanted = append(wanted, seenT{rangeID: rangeID, tombstone: tombstone})
93+
94+
t.Logf("writing tombstone at rangeID=%d", rangeID)
95+
require.NoError(t, MakeStateLoader(rangeID).SetRangeTombstone(ctx, eng, tombstone))
11596
}
11697

11798
sort.Slice(wanted, func(i, j int) bool {
@@ -120,32 +101,12 @@ func TestIterateIDPrefixKeys(t *testing.T) {
120101

121102
var seen []seenT
122103
var tombstone kvserverpb.RangeTombstone
123-
124-
handleTombstone := func(rangeID roachpb.RangeID) error {
125-
seen = append(seen, seenT{rangeID: rangeID, tombstone: tombstone})
126-
return nil
127-
}
128-
129-
if err := IterateIDPrefixKeys(ctx, eng, keys.RangeTombstoneKey, &tombstone, handleTombstone); err != nil {
130-
t.Fatal(err)
131-
}
132-
placeholder := seenT{
133-
rangeID: roachpb.RangeID(9999),
134-
}
135-
136-
if len(wanted) != len(seen) {
137-
t.Errorf("wanted %d results, got %d", len(wanted), len(seen))
138-
}
139-
140-
for len(wanted) < len(seen) {
141-
wanted = append(wanted, placeholder)
142-
}
143-
for len(seen) < len(wanted) {
144-
seen = append(seen, placeholder)
145-
}
146-
147-
if diff := pretty.Diff(wanted, seen); len(diff) > 0 {
148-
pretty.Ldiff(t, wanted, seen)
149-
t.Fatal("diff(wanted, seen) is nonempty")
150-
}
104+
require.NoError(t, IterateIDPrefixKeys(
105+
ctx, eng, keys.RangeTombstoneKey, &tombstone,
106+
func(rangeID roachpb.RangeID) error {
107+
seen = append(seen, seenT{rangeID: rangeID, tombstone: tombstone})
108+
return nil
109+
}))
110+
111+
require.Equal(t, wanted, seen)
151112
}

0 commit comments

Comments
 (0)