Skip to content

Commit f2327ba

Browse files
committed
test(suite): add a bunch of prefix tests for the new behavior
1 parent 83f9a95 commit f2327ba

File tree

4 files changed

+63
-10
lines changed

4 files changed

+63
-10
lines changed

go.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8 h1:bspPhN+oKYFk5f
66
github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY=
77
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
88
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
9+
github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=
910
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
1011
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
1112
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=

mount/mount_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -841,9 +841,9 @@ func TestSuite(t *testing.T) {
841841
mapds2 := datastore.NewMapDatastore()
842842
mapds3 := datastore.NewMapDatastore()
843843
m := mount.New([]mount.Mount{
844-
{Prefix: datastore.NewKey("/foo"), Datastore: mapds1},
845-
{Prefix: datastore.NewKey("/bar"), Datastore: mapds2},
846-
{Prefix: datastore.NewKey("/baz"), Datastore: mapds3},
844+
{Prefix: datastore.NewKey("/prefix"), Datastore: mapds1},
845+
{Prefix: datastore.NewKey("/prefix/sub"), Datastore: mapds2},
846+
{Prefix: datastore.NewKey("/0"), Datastore: mapds3},
847847
{Prefix: datastore.NewKey("/"), Datastore: mapds0},
848848
})
849849
dstest.SubtestAll(t, m)

test/basic_tests.go

Lines changed: 58 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -177,27 +177,27 @@ func SubtestManyKeysAndQuery(t *testing.T, ds dstore.Datastore) {
177177
}
178178

179179
func SubtestBasicSync(t *testing.T, ds dstore.Datastore) {
180-
if err := ds.Sync(dstore.NewKey("foo")); err != nil {
180+
if err := ds.Sync(dstore.NewKey("prefix")); err != nil {
181181
t.Fatal(err)
182182
}
183183

184-
if err := ds.Put(dstore.NewKey("/foo"), []byte("foo")); err != nil {
184+
if err := ds.Put(dstore.NewKey("/prefix"), []byte("foo")); err != nil {
185185
t.Fatal(err)
186186
}
187187

188-
if err := ds.Sync(dstore.NewKey("/foo")); err != nil {
188+
if err := ds.Sync(dstore.NewKey("/prefix")); err != nil {
189189
t.Fatal(err)
190190
}
191191

192-
if err := ds.Put(dstore.NewKey("/foo/bar"), []byte("bar")); err != nil {
192+
if err := ds.Put(dstore.NewKey("/prefix/sub"), []byte("bar")); err != nil {
193193
t.Fatal(err)
194194
}
195195

196-
if err := ds.Sync(dstore.NewKey("/foo")); err != nil {
196+
if err := ds.Sync(dstore.NewKey("/prefix")); err != nil {
197197
t.Fatal(err)
198198
}
199199

200-
if err := ds.Sync(dstore.NewKey("/foo/bar")); err != nil {
200+
if err := ds.Sync(dstore.NewKey("/prefix/sub")); err != nil {
201201
t.Fatal(err)
202202
}
203203

@@ -237,6 +237,11 @@ func SubtestCombinations(t *testing.T, ds dstore.Datastore) {
237237
Key: "/2",
238238
}},
239239
}
240+
prefixes := []string{
241+
"",
242+
"/prefix",
243+
"/0", // keys exist under this prefix but they shouldn't match.
244+
}
240245
orders := [][]dsq.Order{
241246
{dsq.OrderByKey{}},
242247
{dsq.OrderByKeyDescending{}},
@@ -255,8 +260,9 @@ func SubtestCombinations(t *testing.T, ds dstore.Datastore) {
255260
Limit: limits[perm[1]],
256261
Filters: filters[perm[2]],
257262
Orders: orders[perm[3]],
263+
Prefix: prefixes[perm[4]],
258264
}
259-
length := lengths[perm[4]]
265+
length := lengths[perm[5]]
260266

261267
t.Run(strings.ReplaceAll(fmt.Sprintf("%d/{%s}", length, q), " ", "·"), func(t *testing.T) {
262268
subtestQuery(t, ds, q, length)
@@ -266,6 +272,7 @@ func SubtestCombinations(t *testing.T, ds dstore.Datastore) {
266272
len(limits),
267273
len(filters),
268274
len(orders),
275+
len(prefixes),
269276
len(lengths),
270277
)
271278
}
@@ -335,6 +342,28 @@ func SubtestReturnSizes(t *testing.T, ds dstore.Datastore) {
335342
subtestQuery(t, ds, dsq.Query{ReturnsSizes: true}, 100)
336343
}
337344

345+
func SubtestPrefix(t *testing.T, ds dstore.Datastore) {
346+
test := func(prefix string) {
347+
t.Run(prefix, func(t *testing.T) {
348+
subtestQuery(t, ds, dsq.Query{
349+
Prefix: prefix,
350+
}, 100)
351+
})
352+
}
353+
test("")
354+
test("/")
355+
test("/./")
356+
test("/.././/")
357+
test("/prefix/../")
358+
359+
test("/prefix")
360+
test("/prefix/")
361+
test("/prefix/sub/")
362+
363+
test("/0/")
364+
test("/bad/")
365+
}
366+
338367
func randValue() []byte {
339368
value := make([]byte, 64)
340369
rand.Read(value)
@@ -354,6 +383,28 @@ func subtestQuery(t *testing.T, ds dstore.Datastore, q dsq.Query, count int) {
354383
})
355384
}
356385

386+
for i := 0; i < count; i++ {
387+
s := fmt.Sprintf("/prefix/%dkey%d", i, i)
388+
key := dstore.NewKey(s).String()
389+
value := randValue()
390+
input = append(input, dsq.Entry{
391+
Key: key,
392+
Size: len(value),
393+
Value: value,
394+
})
395+
}
396+
397+
for i := 0; i < count; i++ {
398+
s := fmt.Sprintf("/prefix/sub/%dkey%d", i, i)
399+
key := dstore.NewKey(s).String()
400+
value := randValue()
401+
input = append(input, dsq.Entry{
402+
Key: key,
403+
Size: len(value),
404+
Value: value,
405+
})
406+
}
407+
357408
t.Logf("putting %d values", count)
358409
for i, e := range input {
359410
err := ds.Put(dstore.RawKey(e.Key), e.Value)

test/suite.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var BasicSubtests = []func(t *testing.T, ds dstore.Datastore){
1414
SubtestBasicPutGet,
1515
SubtestNotFounds,
1616
SubtestCombinations,
17+
SubtestPrefix,
1718
SubtestOrder,
1819
SubtestLimit,
1920
SubtestFilter,

0 commit comments

Comments
 (0)