def testBlockedMount(self):
        """
        Test that when a mount point is non-empty the mount fails, is reported,
        and is not left in the list of mounts.
        """
        from girder.plugins.fuse import server_fuse

        blockFile = os.path.join(self.extraMountPath, 'block')
        open(blockFile, 'wb').close()
        mountpath = self.extraMountPath
        self.extraMount = 'test'
        with mock.patch(
                'girder.utility.plugin_utilities.logprint.error') as logprint:
            server_fuse.mountServerFuse(self.extraMount,
                                        mountpath,
                                        level=AccessType.READ,
                                        user=self.user)
            # If can take a short amount of time to trigger an error, so wait
            # for it.  Also wait for the mount information to be cleaned up.
            for iter in six.moves.range(50):
                if logprint.call_count and not server_fuse.isServerFuseMounted(
                        self.extraMount, level=AccessType.READ,
                        user=self.user):
                    break
                time.sleep(0.1)
            logprint.assert_called_once()
        self.assertFalse(
            server_fuse.isServerFuseMounted(self.extraMount,
                                            level=AccessType.READ,
                                            user=self.user))
        os.unlink(blockFile)
    def testRemount(self):
        """
        Test remounting with different credentials.
        """
        from girder.plugins.fuse import server_fuse

        mountpath = self.extraMountPath
        self.extraMount = 'remount'
        # mount with user2
        self.assertTrue(
            server_fuse.mountServerFuse(self.extraMount,
                                        mountpath,
                                        level=AccessType.READ,
                                        user=self.user2))
        # The OS can cache stat, so wait 1 second before using the mount.
        time.sleep(1)
        publicFile = os.path.join(mountpath, self.publicFileName)
        privateFile = os.path.join(mountpath, self.privateFileName)
        self.assertTrue(os.path.exists(publicFile))
        self.assertFalse(os.path.exists(privateFile))
        # remount with user
        self.assertFalse(
            server_fuse.isServerFuseMounted(self.extraMount,
                                            level=AccessType.READ,
                                            user=self.user))
        self.assertTrue(
            server_fuse.mountServerFuse(self.extraMount,
                                        mountpath,
                                        level=AccessType.READ,
                                        user=self.user))
        # The OS can cache stat, so wait 1 second before using the mount.
        time.sleep(1)
        self.assertTrue(os.path.exists(publicFile))
        self.assertTrue(os.path.exists(privateFile))
Exemple #3
0
    def testRemount(self):
        """
        Test remounting with different credentials.
        """
        from girder.plugins.fuse import server_fuse

        mountpath = self.extraMountPath
        self.extraMount = 'remount'
        # mount with user2
        self.assertTrue(server_fuse.mountServerFuse(
            self.extraMount, mountpath, level=AccessType.READ, user=self.user2))
        # The OS can cache stat, so wait 1 second before using the mount.
        time.sleep(1)
        publicFile = os.path.join(mountpath, self.publicFileName)
        privateFile = os.path.join(mountpath, self.privateFileName)
        self.assertTrue(os.path.exists(publicFile))
        self.assertFalse(os.path.exists(privateFile))
        # remount with user
        self.assertFalse(server_fuse.isServerFuseMounted(
            self.extraMount, level=AccessType.READ, user=self.user))
        self.assertTrue(server_fuse.mountServerFuse(
            self.extraMount, mountpath, level=AccessType.READ, user=self.user))
        # The OS can cache stat, so wait 1 second before using the mount.
        time.sleep(1)
        self.assertTrue(os.path.exists(publicFile))
        self.assertTrue(os.path.exists(privateFile))
Exemple #4
0
    def testRemountWithoutChanges(self):
        """
        Test remounting with different credentials.
        """
        from girder.plugins.fuse import server_fuse

        mountpath = self.extraMountPath
        self.extraMount = 'remountWithoutChanges'
        # remount with user
        server_fuse.mountServerFuse(
            self.extraMount, mountpath, level=AccessType.READ, user=self.user)
        # remount without any changes should work
        self.assertTrue(server_fuse.isServerFuseMounted(
            self.extraMount, level=AccessType.READ, user=self.user))
        self.assertEqual(server_fuse.mountServerFuse(
            self.extraMount, mountpath, level=AccessType.READ, user=self.user),
            'present')
    def testRemountWithoutChanges(self):
        """
        Test remounting with different credentials.
        """
        from girder.plugins.fuse import server_fuse

        mountpath = self.extraMountPath
        self.extraMount = 'remountWithoutChanges'
        # remount with user
        server_fuse.mountServerFuse(self.extraMount,
                                    mountpath,
                                    level=AccessType.READ,
                                    user=self.user)
        # remount without any changes should work
        self.assertTrue(
            server_fuse.isServerFuseMounted(self.extraMount,
                                            level=AccessType.READ,
                                            user=self.user))
        self.assertEqual(
            server_fuse.mountServerFuse(self.extraMount,
                                        mountpath,
                                        level=AccessType.READ,
                                        user=self.user), 'present')