import (
"os"
+ "strings"
"sync"
"time"
)
mode: 0755 | os.ModeDir,
},
},
- create: fs.mountCollection,
+ create: fs.mountByID,
}, nil
})
}
return nil, ErrInvalidOperation
}
+func (fs *customFileSystem) mountByID(parent inode, id string) inode {
+ if strings.Contains(id, "-4zz18-") || pdhRegexp.MatchString(id) {
+ return fs.mountCollection(parent, id)
+ } else if strings.Contains(id, "-j7d0g-") {
+ return fs.newProjectNode(fs.root, id, id)
+ } else {
+ return nil
+ }
+}
+
func (fs *customFileSystem) mountCollection(parent inode, id string) inode {
var coll Collection
err := fs.RequestAndDecode(&coll, "GET", "arvados/v1/collections/"+id, nil, nil)
c.Check(len(fis), check.Equals, 0)
}
-func (s *SiteFSSuite) TestByUUID(c *check.C) {
+func (s *SiteFSSuite) TestByUUIDAndPDH(c *check.C) {
f, err := s.fs.Open("/by_id")
c.Assert(err, check.IsNil)
fis, err := f.Readdir(-1)
f, err = s.fs.Open("/by_id/" + arvadostest.NonexistentCollection)
c.Assert(err, check.Equals, os.ErrNotExist)
- f, err = s.fs.Open("/by_id/" + arvadostest.FooCollection)
+ for _, path := range []string{
+ arvadostest.FooCollection,
+ arvadostest.FooPdh,
+ arvadostest.AProjectUUID + "/" + arvadostest.FooCollectionName,
+ } {
+ f, err = s.fs.Open("/by_id/" + path)
+ c.Assert(err, check.IsNil)
+ fis, err = f.Readdir(-1)
+ var names []string
+ for _, fi := range fis {
+ names = append(names, fi.Name())
+ }
+ c.Check(names, check.DeepEquals, []string{"foo"})
+ }
+
+ f, err = s.fs.Open("/by_id/" + arvadostest.AProjectUUID + "/A Subproject/baz_file")
c.Assert(err, check.IsNil)
fis, err = f.Readdir(-1)
var names []string
for _, fi := range fis {
names = append(names, fi.Name())
}
- c.Check(names, check.DeepEquals, []string{"foo"})
+ c.Check(names, check.DeepEquals, []string{"baz"})
_, err = s.fs.OpenFile("/by_id/"+arvadostest.NonexistentCollection, os.O_RDWR|os.O_CREATE, 0755)
c.Check(err, check.Equals, ErrInvalidOperation)
FederatedActiveUserUUID = "zbbbb-tpzed-xurymjxw79nv3jz"
SpectatorUserUUID = "zzzzz-tpzed-l1s2piq4t4mps8r"
UserAgreementCollection = "zzzzz-4zz18-uukreo9rbgwsujr" // user_agreement_in_anonymously_accessible_project
+ FooCollectionName = "zzzzz-4zz18-fy296fx3hot09f7 added sometime"
FooCollection = "zzzzz-4zz18-fy296fx3hot09f7"
FooCollectionPDH = "1f4b0bc7583c2a7f9102c395f4ffc5e3+45"
NonexistentCollection = "zzzzz-4zz18-totallynotexist"