@cryptotaxi247 / kubo / commits / b1f77e9e7

Improve error reporting and fix pin/set_test.go

License: MIT Signed-off-by: Mildred Ki'Lya <mildred-pub.git@mildred.fr>

Mildred Ki'Lya committed Mar 2, 2016 at 09:54 UTC b1f77e9e7f85786704b2316817b8b5c53883f0fe
4 files changed +30 -5
merkledag/coding.go
+1 -1
@@ -27,7 +27,7 @@ func (n *Node) unmarshal(encoded []byte) error {
27 n.Links[i] = &Link{Name: l.GetName(), Size: l.GetTsize()}
28 h, err := mh.Cast(l.GetHash())
29 if err != nil {
30 - return fmt.Errorf("Link hash is not valid multihash. %v", err)
30 + return fmt.Errorf("Link hash #%d is not valid multihash. %v", i, err)
31 }
32 n.Links[i].Hash = h
33 }
merkledag/merkledag.go
+6 -2
@@ -79,10 +79,14 @@ func (n *dagService) Get(ctx context.Context, k key.Key) (*Node, error) {
79 if err == bserv.ErrNotFound {
80 return nil, ErrNotFound
81 }
82 - return nil, err
82 + return nil, fmt.Errorf("Failed to get block for %s: %v", k.B58String(), err)
83 }
84
85 - return DecodeProtobuf(b.Data)
85 + res, err := DecodeProtobuf(b.Data)
86 + if err != nil {
87 + return nil, fmt.Errorf("Failed to decode Protocol Buffers: %v", err)
88 + }
89 + return res, nil
90 }
91
92 func (n *dagService) Remove(nd *Node) error {
pin/set.go
+2 -2
@@ -271,12 +271,12 @@ func loadSet(ctx context.Context, dag merkledag.DAGService, root *merkledag.Node
271 func loadMultiset(ctx context.Context, dag merkledag.DAGService, root *merkledag.Node, name string, internalKeys keyObserver) (map[key.Key]uint64, error) {
272 l, err := root.GetNodeLink(name)
273 if err != nil {
274 - return nil, err
274 + return nil, fmt.Errorf("Failed to get link %s: %v", name, err)
275 }
276 internalKeys(key.Key(l.Hash))
277 n, err := l.GetNode(ctx, dag)
278 if err != nil {
279 - return nil, err
279 + return nil, fmt.Errorf("Failed to get node from link %s: %v", name, err)
280 }
281
282 refcounts := make(map[key.Key]uint64)
pin/set_test.go
+21
@@ -11,6 +11,8 @@ import (
11 "github.com/ipfs/go-ipfs/blockservice"
12 "github.com/ipfs/go-ipfs/exchange/offline"
13 "github.com/ipfs/go-ipfs/merkledag"
14 + mh "gx/ipfs/QmYf7ng2hG5XBtJA3tN34DQ2GUN5HNksEw1rLDkmr6vGku/go-multihash"
15 + u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
16 "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
17 )
18
@@ -31,6 +33,14 @@ func TestMultisetRoundtrip(t *testing.T) {
33 dag := merkledag.NewDAGService(bserv)
34
35 fn := func(m map[key.Key]uint16) bool {
36 + // Convert invalid multihash from input to valid ones
37 + for k, v := range m {
38 + if _, err := mh.Cast([]byte(k)); err != nil {
39 + delete(m, k)
40 + m[key.Key(u.Hash([]byte(k)))] = v
41 + }
42 + }
43 +
44 // Generate a smaller range for refcounts than full uint64, as
45 // otherwise this just becomes overly cpu heavy, splitting it
46 // out into too many items. That means we need to convert to
@@ -43,6 +53,17 @@ func TestMultisetRoundtrip(t *testing.T) {
53 if err != nil {
54 t.Fatalf("storing multiset: %v", err)
55 }
56 +
57 + // Check that the node n is in the DAG
58 + k, err := n.Key()
59 + if err != nil {
60 + t.Fatalf("Could not get key: %v", err)
61 + }
62 + _, err = dag.Get(ctx, k)
63 + if err != nil {
64 + t.Fatalf("Could not get node: %v", err)
65 + }
66 +
67 root := &merkledag.Node{}
68 const linkName = "dummylink"
69 if err := root.AddNodeLink(linkName, n); err != nil {