Skip to content

Commit e7a4989

Browse files
authored
Merge pull request #142 from ipfs/fix/logds-async
LogDatastore fulfills the Datastore interface again
2 parents e392c15 + 03c16a7 commit e7a4989

File tree

11 files changed

+138
-56
lines changed

11 files changed

+138
-56
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
version: 2.1
22
orbs:
3-
ci-go: ipfs/ci-go@0.1
3+
ci-go: ipfs/ci-go@0.2.0
44

55
workflows:
66
version: 2

basic_ds.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,12 @@ func (d *LogDatastore) Put(key Key, value []byte) (err error) {
171171
return d.child.Put(key, value)
172172
}
173173

174+
// Sync implements Datastore.Sync
175+
func (d *LogDatastore) Sync(prefix Key) error {
176+
log.Printf("%s: Sync %s\n", d.Name, prefix)
177+
return d.child.Sync(prefix)
178+
}
179+
174180
// Get implements Datastore.Get
175181
func (d *LogDatastore) Get(key Key) (value []byte, err error) {
176182
log.Printf("%s: Get %s\n", d.Name, key)

basic_ds_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package datastore_test
22

33
import (
4+
"io/ioutil"
5+
"log"
46
"testing"
57

68
dstore "github.com/ipfs/go-datastore"
@@ -17,3 +19,10 @@ func TestNullDatastore(t *testing.T) {
1719
// The only test that passes. Nothing should be found.
1820
dstest.SubtestNotFounds(t, ds)
1921
}
22+
23+
func TestLogDatastore(t *testing.T) {
24+
defer log.SetOutput(log.Writer())
25+
log.SetOutput(ioutil.Discard)
26+
ds := dstore.NewLogDatastore(dstore.NewMapDatastore(), "")
27+
dstest.SubtestAll(t, ds)
28+
}

key.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ func (k Key) List() []string {
125125
// NewKey("/Actor:JohnCleese/MontyPython/Comedy")
126126
func (k Key) Reverse() Key {
127127
l := k.List()
128-
r := make([]string, len(l), len(l))
128+
r := make([]string, len(l))
129129
for i, e := range l {
130130
r[len(l)-i-1] = e
131131
}

key_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func (ks *KeySuite) SubtestKey(s string, c *C) {
2929
kname := lnparts[len(lnparts)-1]
3030

3131
kchild := path.Clean(fixed + "/cchildd")
32-
kparent := "/" + strings.Join(append(namespaces[:len(namespaces)-1]), "/")
32+
kparent := "/" + strings.Join(namespaces[:len(namespaces)-1], "/")
3333
kpath := path.Clean(kparent + "/" + ktype)
3434
kinstance := fixed + ":" + "inst"
3535

keytransform/keytransform_test.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ type DSSuite struct{}
2020

2121
var _ = Suite(&DSSuite{})
2222

23-
func testDatastore() {
24-
}
25-
2623
var pair = &kt.Pair{
2724
Convert: func(k ds.Key) ds.Key {
2825
return ds.NewKey("/abc").Child(k)

mount/mount.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@ type Mount struct {
2626
func New(mounts []Mount) *Datastore {
2727
// make a copy so we're sure it doesn't mutate
2828
m := make([]Mount, len(mounts))
29-
for i, v := range mounts {
30-
m[i] = v
31-
}
29+
copy(m, mounts)
3230
sort.Slice(m, func(i, j int) bool { return m[i].Prefix.String() > m[j].Prefix.String() })
3331
return &Datastore{mounts: m}
3432
}

mount/mount_test.go

Lines changed: 114 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -252,11 +252,21 @@ func TestQueryAcrossMounts(t *testing.T) {
252252
{Prefix: datastore.NewKey("/"), Datastore: mapds0},
253253
})
254254

255-
m.Put(datastore.NewKey("/foo/lorem"), []byte("123"))
256-
m.Put(datastore.NewKey("/bar/ipsum"), []byte("234"))
257-
m.Put(datastore.NewKey("/bar/dolor"), []byte("345"))
258-
m.Put(datastore.NewKey("/baz/sit"), []byte("456"))
259-
m.Put(datastore.NewKey("/banana"), []byte("567"))
255+
if err := m.Put(datastore.NewKey("/foo/lorem"), []byte("123")); err != nil {
256+
t.Fatal(err)
257+
}
258+
if err := m.Put(datastore.NewKey("/bar/ipsum"), []byte("234")); err != nil {
259+
t.Fatal(err)
260+
}
261+
if err := m.Put(datastore.NewKey("/bar/dolor"), []byte("345")); err != nil {
262+
t.Fatal(err)
263+
}
264+
if err := m.Put(datastore.NewKey("/baz/sit"), []byte("456")); err != nil {
265+
t.Fatal(err)
266+
}
267+
if err := m.Put(datastore.NewKey("/banana"), []byte("567")); err != nil {
268+
t.Fatal(err)
269+
}
260270

261271
res, err := m.Query(query.Query{Prefix: "/ba"})
262272
if err != nil {
@@ -313,11 +323,21 @@ func TestQueryAcrossMountsWithSort(t *testing.T) {
313323
{Prefix: datastore.NewKey("/boo"), Datastore: mapds0},
314324
})
315325

316-
m.Put(datastore.NewKey("/zoo/0"), []byte("123"))
317-
m.Put(datastore.NewKey("/zoo/1"), []byte("234"))
318-
m.Put(datastore.NewKey("/boo/9"), []byte("345"))
319-
m.Put(datastore.NewKey("/boo/3"), []byte("456"))
320-
m.Put(datastore.NewKey("/boo/5/hello"), []byte("789"))
326+
if err := m.Put(datastore.NewKey("/zoo/0"), []byte("123")); err != nil {
327+
t.Fatal(err)
328+
}
329+
if err := m.Put(datastore.NewKey("/zoo/1"), []byte("234")); err != nil {
330+
t.Fatal(err)
331+
}
332+
if err := m.Put(datastore.NewKey("/boo/9"), []byte("345")); err != nil {
333+
t.Fatal(err)
334+
}
335+
if err := m.Put(datastore.NewKey("/boo/3"), []byte("456")); err != nil {
336+
t.Fatal(err)
337+
}
338+
if err := m.Put(datastore.NewKey("/boo/5/hello"), []byte("789")); err != nil {
339+
t.Fatal(err)
340+
}
321341

322342
res, err := m.Query(query.Query{Orders: []query.Order{query.OrderByKey{}}})
323343
if err != nil {
@@ -362,13 +382,27 @@ func TestQueryLimitAcrossMountsWithSort(t *testing.T) {
362382
{Prefix: datastore.NewKey("/noop"), Datastore: mapds3},
363383
})
364384

365-
m.Put(datastore.NewKey("/rok/0"), []byte("ghi"))
366-
m.Put(datastore.NewKey("/zoo/0"), []byte("123"))
367-
m.Put(datastore.NewKey("/rok/1"), []byte("def"))
368-
m.Put(datastore.NewKey("/zoo/1"), []byte("167"))
369-
m.Put(datastore.NewKey("/zoo/2"), []byte("345"))
370-
m.Put(datastore.NewKey("/rok/3"), []byte("abc"))
371-
m.Put(datastore.NewKey("/zoo/3"), []byte("456"))
385+
if err := m.Put(datastore.NewKey("/rok/0"), []byte("ghi")); err != nil {
386+
t.Fatal(err)
387+
}
388+
if err := m.Put(datastore.NewKey("/zoo/0"), []byte("123")); err != nil {
389+
t.Fatal(err)
390+
}
391+
if err := m.Put(datastore.NewKey("/rok/1"), []byte("def")); err != nil {
392+
t.Fatal(err)
393+
}
394+
if err := m.Put(datastore.NewKey("/zoo/1"), []byte("167")); err != nil {
395+
t.Fatal(err)
396+
}
397+
if err := m.Put(datastore.NewKey("/zoo/2"), []byte("345")); err != nil {
398+
t.Fatal(err)
399+
}
400+
if err := m.Put(datastore.NewKey("/rok/3"), []byte("abc")); err != nil {
401+
t.Fatal(err)
402+
}
403+
if err := m.Put(datastore.NewKey("/zoo/3"), []byte("456")); err != nil {
404+
t.Fatal(err)
405+
}
372406

373407
q := query.Query{Limit: 2, Orders: []query.Order{query.OrderByKeyDescending{}}}
374408
res, err := m.Query(q)
@@ -412,13 +446,27 @@ func TestQueryLimitAndOffsetAcrossMountsWithSort(t *testing.T) {
412446
{Prefix: datastore.NewKey("/noop"), Datastore: mapds3},
413447
})
414448

415-
m.Put(datastore.NewKey("/rok/0"), []byte("ghi"))
416-
m.Put(datastore.NewKey("/zoo/0"), []byte("123"))
417-
m.Put(datastore.NewKey("/rok/1"), []byte("def"))
418-
m.Put(datastore.NewKey("/zoo/1"), []byte("167"))
419-
m.Put(datastore.NewKey("/zoo/2"), []byte("345"))
420-
m.Put(datastore.NewKey("/rok/3"), []byte("abc"))
421-
m.Put(datastore.NewKey("/zoo/3"), []byte("456"))
449+
if err := m.Put(datastore.NewKey("/rok/0"), []byte("ghi")); err != nil {
450+
t.Fatal(err)
451+
}
452+
if err := m.Put(datastore.NewKey("/zoo/0"), []byte("123")); err != nil {
453+
t.Fatal(err)
454+
}
455+
if err := m.Put(datastore.NewKey("/rok/1"), []byte("def")); err != nil {
456+
t.Fatal(err)
457+
}
458+
if err := m.Put(datastore.NewKey("/zoo/1"), []byte("167")); err != nil {
459+
t.Fatal(err)
460+
}
461+
if err := m.Put(datastore.NewKey("/zoo/2"), []byte("345")); err != nil {
462+
t.Fatal(err)
463+
}
464+
if err := m.Put(datastore.NewKey("/rok/3"), []byte("abc")); err != nil {
465+
t.Fatal(err)
466+
}
467+
if err := m.Put(datastore.NewKey("/zoo/3"), []byte("456")); err != nil {
468+
t.Fatal(err)
469+
}
422470

423471
q := query.Query{Limit: 3, Offset: 2, Orders: []query.Order{query.OrderByKey{}}}
424472
res, err := m.Query(q)
@@ -463,13 +511,27 @@ func TestQueryFilterAcrossMountsWithSort(t *testing.T) {
463511
{Prefix: datastore.NewKey("/noop"), Datastore: mapds3},
464512
})
465513

466-
m.Put(datastore.NewKey("/rok/0"), []byte("ghi"))
467-
m.Put(datastore.NewKey("/zoo/0"), []byte("123"))
468-
m.Put(datastore.NewKey("/rok/1"), []byte("def"))
469-
m.Put(datastore.NewKey("/zoo/1"), []byte("167"))
470-
m.Put(datastore.NewKey("/zoo/2"), []byte("345"))
471-
m.Put(datastore.NewKey("/rok/3"), []byte("abc"))
472-
m.Put(datastore.NewKey("/zoo/3"), []byte("456"))
514+
if err := m.Put(datastore.NewKey("/rok/0"), []byte("ghi")); err != nil {
515+
t.Fatal(err)
516+
}
517+
if err := m.Put(datastore.NewKey("/zoo/0"), []byte("123")); err != nil {
518+
t.Fatal(err)
519+
}
520+
if err := m.Put(datastore.NewKey("/rok/1"), []byte("def")); err != nil {
521+
t.Fatal(err)
522+
}
523+
if err := m.Put(datastore.NewKey("/zoo/1"), []byte("167")); err != nil {
524+
t.Fatal(err)
525+
}
526+
if err := m.Put(datastore.NewKey("/zoo/2"), []byte("345")); err != nil {
527+
t.Fatal(err)
528+
}
529+
if err := m.Put(datastore.NewKey("/rok/3"), []byte("abc")); err != nil {
530+
t.Fatal(err)
531+
}
532+
if err := m.Put(datastore.NewKey("/zoo/3"), []byte("456")); err != nil {
533+
t.Fatal(err)
534+
}
473535

474536
f := &query.FilterKeyCompare{Op: query.Equal, Key: "/rok/3"}
475537
q := query.Query{Filters: []query.Filter{f}}
@@ -542,8 +604,12 @@ func TestQueryLimitWithNotEnoughData(t *testing.T) {
542604
{Prefix: datastore.NewKey("/zoo"), Datastore: mapds2},
543605
})
544606

545-
m.Put(datastore.NewKey("/zoo/0"), []byte("123"))
546-
m.Put(datastore.NewKey("/rok/1"), []byte("167"))
607+
if err := m.Put(datastore.NewKey("/zoo/0"), []byte("123")); err != nil {
608+
t.Fatal(err)
609+
}
610+
if err := m.Put(datastore.NewKey("/rok/1"), []byte("167")); err != nil {
611+
t.Fatal(err)
612+
}
547613

548614
q := query.Query{Limit: 4}
549615
res, err := m.Query(q)
@@ -579,8 +645,12 @@ func TestQueryOffsetWithNotEnoughData(t *testing.T) {
579645
{Prefix: datastore.NewKey("/zoo"), Datastore: mapds2},
580646
})
581647

582-
m.Put(datastore.NewKey("/zoo/0"), []byte("123"))
583-
m.Put(datastore.NewKey("/rok/1"), []byte("167"))
648+
if err := m.Put(datastore.NewKey("/zoo/0"), []byte("123")); err != nil {
649+
t.Fatal(err)
650+
}
651+
if err := m.Put(datastore.NewKey("/rok/1"), []byte("167")); err != nil {
652+
t.Fatal(err)
653+
}
584654

585655
q := query.Query{Offset: 4}
586656
res, err := m.Query(q)
@@ -614,8 +684,12 @@ func TestLookupPrio(t *testing.T) {
614684
{Prefix: datastore.NewKey("/foo"), Datastore: mapds1},
615685
})
616686

617-
m.Put(datastore.NewKey("/foo/bar"), []byte("123"))
618-
m.Put(datastore.NewKey("/baz"), []byte("234"))
687+
if err := m.Put(datastore.NewKey("/foo/bar"), []byte("123")); err != nil {
688+
t.Fatal(err)
689+
}
690+
if err := m.Put(datastore.NewKey("/baz"), []byte("234")); err != nil {
691+
t.Fatal(err)
692+
}
619693

620694
found, err := mapds0.Has(datastore.NewKey("/baz"))
621695
if err != nil {
@@ -723,7 +797,9 @@ func TestErrQueryClose(t *testing.T) {
723797
{Prefix: datastore.NewKey("/foo"), Datastore: eqds},
724798
})
725799

726-
m.Put(datastore.NewKey("/baz"), []byte("123"))
800+
if err := m.Put(datastore.NewKey("/baz"), []byte("123")); err != nil {
801+
t.Fatal(err)
802+
}
727803

728804
_, err := m.Query(query.Query{})
729805
if err == nil {

namespace/example_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ func Example() {
1414
k := ds.NewKey("/beep")
1515
v := "boop"
1616

17-
ns.Put(k, []byte(v))
17+
if err := ns.Put(k, []byte(v)); err != nil {
18+
panic(err)
19+
}
1820
fmt.Printf("ns.Put %s %s\n", k, v)
1921

2022
v2, _ := ns.Get(k)

query/query.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ func ResultsWithProcess(q Query, proc func(goprocess.Process, chan<- Result)) Re
289289
proc(worker, b.Output)
290290
})
291291

292-
go b.Process.CloseAfterChildren()
292+
go b.Process.CloseAfterChildren() //nolint
293293
return b.Results()
294294
}
295295

@@ -427,10 +427,9 @@ func (r *resultsIter) useLegacyResults() {
427427
return
428428
}
429429
}
430-
return
431430
})
432431

433-
go b.Process.CloseAfterChildren()
432+
go b.Process.CloseAfterChildren() //nolint
434433

435434
r.legacyResults = b.Results().(*results)
436435
}

0 commit comments

Comments
 (0)