func TestFetchFailure(t *testing.T) { ds := dstest.Mock() ds_bad := dstest.Mock() top := new(Node) for i := 0; i < 10; i++ { nd := NodeWithData([]byte{byte('a' + i)}) _, err := ds.Add(nd) if err != nil { t.Fatal(err) } err = top.AddNodeLinkClean(fmt.Sprintf("AA%d", i), nd) if err != nil { t.Fatal(err) } } for i := 0; i < 10; i++ { nd := NodeWithData([]byte{'f', 'a' + byte(i)}) _, err := ds_bad.Add(nd) if err != nil { t.Fatal(err) } err = top.AddNodeLinkClean(fmt.Sprintf("BB%d", i), nd) if err != nil { t.Fatal(err) } } getters := GetDAG(context.Background(), ds, top) for i, getter := range getters { _, err := getter.Get(context.Background()) if err != nil && i < 10 { t.Fatal(err) } if err == nil && i >= 10 { t.Fatal("should have failed request") } } }
func TestDirectoryLoadFromDag(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() ds, rt := setupRoot(ctx, t) rootdir := rt.GetValue().(*Directory) nd := getRandFile(t, ds, 1000) _, err := ds.Add(nd) if err != nil { t.Fatal(err) } fihash, err := nd.Multihash() if err != nil { t.Fatal(err) } dir := emptyDirNode() _, err = ds.Add(dir) if err != nil { t.Fatal(err) } dirhash, err := dir.Multihash() if err != nil { t.Fatal(err) } top := emptyDirNode() top.Links = []*dag.Link{ &dag.Link{ Name: "a", Hash: fihash, }, &dag.Link{ Name: "b", Hash: dirhash, }, } err = rootdir.AddChild("foo", top) if err != nil { t.Fatal(err) } // get this dir topi, err := rootdir.Child("foo") if err != nil { t.Fatal(err) } topd := topi.(*Directory) // mkdir over existing but unloaded child file should fail _, err = topd.Mkdir("a") if err == nil { t.Fatal("expected to fail!") } // mkdir over existing but unloaded child dir should fail _, err = topd.Mkdir("b") if err == nil { t.Fatal("expected to fail!") } // adding a child over an existing path fails err = topd.AddChild("b", nd) if err == nil { t.Fatal("expected to fail!") } err = assertFileAtPath(ds, rootdir, nd, "foo/a") if err != nil { t.Fatal(err) } err = assertDirAtPath(rootdir, "foo/b", nil) if err != nil { t.Fatal(err) } err = rootdir.Unlink("foo") if err != nil { t.Fatal(err) } err = assertDirAtPath(rootdir, "", nil) if err != nil { t.Fatal(err) } }