예제 #1
0
    def test_create_folder(self):
        empty = self.getFileName("empty")
        empty_path = self.getPathFromDomain(empty)

        print("empty_path", empty_path)

        f = h5py.File(empty_path, mode='a')
        self.assertTrue(f.id.id is not None)
        if config.get("use_h5py"):
            # Folders not supported for h5py
            f.close()
            return

        if isinstance(f.id.id, str) and not f.id.id.startswith("g-"):
            # HSDS currently supports folders, but h5serv does not
            f.close()
            return
        f.close()

        folder_test = self.getFileName("create_folder_test")
        folder_path = self.getPathFromDomain(folder_test) + '/'

        print("folder_path", folder_path)
        dir = h5py.Folder(folder_path, mode='w')  # create a new folder
        dir.close()
        # re-open
        dir = h5py.Folder(folder_path)
        self.assertTrue(dir.is_folder)
        dir.close()
예제 #2
0
    def test_create_folder(self):
        folder_test = self.getFileName("create_folder_test")
        folder_path = self.getPathFromDomain(folder_test) + '/'

        print("folder_path", folder_path)
        dir = h5py.Folder(folder_path, mode='w')  # create a new folder
        dir.close()
        # re-open
        dir = h5py.Folder(folder_path)
        self.assertTrue(dir.is_folder)
        dir.close()
예제 #3
0
    def test_root_folder(self):
        test_domain = self.getFileName("folder_test")

        filepath = self.getPathFromDomain(test_domain)
        print(filepath)
        f = h5py.File(filepath, mode='a')
        self.assertTrue(f.id.id is not None)
        if config.get("use_h5py"):
            # Folders not supported for h5py
            f.close()
            return
        if isinstance(f.id.id, str) and not f.id.id.startswith("g-"):
            # HSDS currently supports folders, but h5serv does not
            f.close()
            return
        f.close()

        path_components = filepath.split('/')
        top_level_domain = path_components[1]

        dir = h5py.Folder('/')  # get folder object for root
        found = False
        self.assertTrue(len(dir) > 0)
        self.assertTrue(dir.is_folder)
        for name in dir:
            # we should come across the given domain
            if top_level_domain == name:
                found = True
        dir.close()
        self.assertTrue(found)
예제 #4
0
    def test_root_folder(self):
        test_domain = self.getFileName("folder_test")

        filepath = self.getPathFromDomain(test_domain)
        path_components = filepath.split('/')
        top_level_domain = path_components[1]

        dir = h5py.Folder('/')  # get folder object for root
        found = False
        self.assertTrue(len(dir) > 0)
        self.assertTrue(dir.is_folder)
        for name in dir:
            # we should come across the given domain
            if top_level_domain == name:
                found = True
        dir.close()
        self.assertTrue(found)
예제 #5
0
    def test_list(self):
        #loglevel = logging.DEBUG
        #logging.basicConfig( format='%(asctime)s %(message)s', level=loglevel)
        test_domain = self.getFileName("folder_test")

        filepath = self.getPathFromDomain(test_domain)
        print("test_domain:", filepath)
        # create test file if not present.
        # on first run, this may take a minute before it is visible as a folder item
        f = h5py.File(filepath, mode='a')
        if config.get("use_h5py"):
            # Folders not supported for h5py
            f.close()
            return

        self.assertTrue(f.id.id is not None)
        if isinstance(f.id.id, str) and not f.id.id.startswith("g-"):
            # HSDS currently supports folders, but h5serv does not
            f.close()
            return
        f.close()

        folder_name = op.dirname(filepath) + '/'

        dir = h5py.Folder(folder_name)  # get folder object

        self.assertEqual(dir.domain, folder_name)
        self.assertTrue(dir.modified)
        self.assertTrue(dir.created)
        self.assertEqual(str(dir), folder_name)
        self.assertEqual(dir.owner, self.test_user1["name"])

        dir_parent = dir.parent
        self.assertEqual(dir_parent[:-1], op.dirname(folder_name[:-1]))

        # get ACL for dir
        dir_acl = dir.getACL(self.test_user1["name"])
        self.assertEqual(len(dir_acl.keys()), 7)
        for k in dir_acl.keys():
            self.assertTrue(dir_acl[k])

        dir_acls = dir.getACLs()
        self.assertTrue(isinstance(dir_acls, list))

        count = len(dir)
        self.assertTrue(count > 1)

        test_domain_found = False

        i = 0
        for name in dir:
            if name == op.basename(test_domain):
                self.assertFalse(test_domain_found)
                test_domain_found = True
            item = dir[name]
            #'owner': 'test_user1',
            #'created': 1496729517.2346532,
            #'class': 'domain',
            #'name': '/org/hdfgroup/h5pyd_test/bool_dset',
            #'lastModified': 1496729517.2346532
            self.assertTrue("lastModified" in item)
            self.assertTrue("created" in item)
            self.assertTrue("owner" in item)
            self.assertTrue("class" in item)

            i += 1
        self.assertTrue(test_domain_found)
        self.assertEqual(i, count)
        dir.close()

        # try opening a domain object as a folder
        f = h5py.Folder(filepath + '/')
        count = len(f)
        self.assertEqual(count, 0)
        for name in f:
            self.assertTrue(False)  # unexpected
        f.close()
예제 #6
0
    def test_list(self):
        #loglevel = logging.DEBUG
        #logging.basicConfig( format='%(asctime)s %(message)s', level=loglevel)
        test_domain = self.getFileName("folder_test")

        filepath = self.getPathFromDomain(test_domain)
        print(filepath)
        # create test file if not present.
        # on first run, this may take a minute before it is visible as a folder item
        f = h5py.File(filepath, mode='a')
        if config.get("use_h5py"):
            # Folders not supported for h5py
            f.close()
            return

        self.assertTrue(f.id.id is not None)
        if isinstance(f.id.id, str) and not f.id.id.startswith("g-"):
            # HSDS currently supports folders, but h5serv does not
            f.close()
            return
        f.close()

        folder_name = op.dirname(filepath) + '/'

        d = h5py.Folder(folder_name)  # get folder object

        self.assertEqual(d.domain, folder_name)
        self.assertTrue(d.modified)
        self.assertTrue(d.created)
        self.assertEqual(str(d), folder_name)
        self.assertEqual(d.owner, self.test_user1["name"])

        dir_parent = d.parent
        self.assertEqual(dir_parent[:-1], op.dirname(folder_name[:-1]))

        # get ACL for dir
        dir_acl = d.getACL(self.test_user1["name"])
        self.assertEqual(len(dir_acl.keys()), 7)
        for k in dir_acl.keys():
            self.assertTrue(dir_acl[k])

        dir_acls = d.getACLs()
        self.assertTrue(isinstance(dir_acls, list))

        count = len(d)
        self.assertTrue(count > 1)

        test_domain_found = False

        i = 0
        for name in d:
            if name == op.basename(test_domain):
                self.assertFalse(test_domain_found)
                test_domain_found = True
            item = d[name]
            #'owner': 'test_user1',
            #'created': 1496729517.2346532,
            #'class': 'domain',
            #'name': '/org/hdfgroup/h5pyd_test/bool_dset',
            #'lastModified': 1496729517.2346532
            #self.assertTrue("created" in item)
            self.assertTrue("owner" in item)
            self.assertTrue("class" in item)
            self.assertTrue("name" in item)
            if "root" in item:
                # non-folder objects will have last modified time
                self.assertTrue("lastModified" in item)
                self.assertTrue("created" in item)
                # shouldn't have total_size, other verbose only,items
                self.assertFalse("total_size" in item)

            i += 1
        self.assertTrue(test_domain_found)
        self.assertEqual(i, count)
        d.close()

        # open in verbose mode
        d = h5py.Folder(folder_name, verbose=True)  # get folder object

        self.assertEqual(d.domain, folder_name)
        self.assertTrue(d.modified)
        self.assertTrue(d.created)
        self.assertEqual(str(d), folder_name)
        self.assertEqual(d.owner, self.test_user1["name"])

        dir_parent = d.parent
        self.assertEqual(dir_parent[:-1], op.dirname(folder_name[:-1]))

        # get ACL for dir
        dir_acl = d.getACL(self.test_user1["name"])
        self.assertEqual(len(dir_acl.keys()), 7)
        for k in dir_acl.keys():
            self.assertTrue(dir_acl[k])

        dir_acls = d.getACLs()
        self.assertTrue(isinstance(dir_acls, list))

        count = len(d)
        self.assertTrue(count > 1)

        test_domain_found = False

        i = 0
        for name in d:
            if name == op.basename(test_domain):
                self.assertFalse(test_domain_found)
                test_domain_found = True
            item = d[name]
            #'owner': 'test_user1',
            #'created': 1496729517.2346532,
            #'class': 'domain',
            #'name': '/org/hdfgroup/h5pyd_test/bool_dset',
            #'lastModified': 1496729517.2346532
            #self.assertTrue("created" in item)
            self.assertTrue("owner" in item)
            self.assertTrue("class" in item)
            self.assertTrue("name" in item)
            if "root" in item:
                # non-folder objects will have last modified time
                self.assertTrue("lastModified" in item)
                self.assertTrue("created" in item)
                # these should show up only in verbose mode
                self.assertTrue("md5_sum" in item)
                self.assertTrue("num_groups" in item)
                self.assertTrue("num_datasets" in item)
                self.assertTrue("num_datatypes" in item)
                self.assertTrue("num_objects" in item)
                self.assertTrue("num_chunks" in item)
                self.assertTrue("num_linked_chunks" in item)
                self.assertTrue("total_size" in item)
                self.assertTrue("allocated_bytes" in item)
                self.assertTrue("metadata_bytes" in item)
                self.assertTrue("metadata_bytes" in item)
                self.assertTrue("linked_bytes" in item)
                self.assertTrue("compressors" in item)
            i += 1
        self.assertTrue(test_domain_found)
        self.assertEqual(i, count)
        d.close()

        # try opening a domain object as a folder
        f = h5py.Folder(filepath + '/')
        count = len(f)
        self.assertEqual(count, 0)
        for name in f:
            self.assertTrue(False)  # unexpected
        f.close()