import logging
from tasks.cephfs.cephfs_test_case import CephFSTestCase
from tasks.cephfs.fuse_mount import FuseMount
from tasks.cephfs.kernel_mount import KernelMount

log = logging.getLogger(__name__)

class TestNewOps(CephFSTestCase):
    def test_newops_getvxattr(self):
        """
        For nautilus it will crash the MDSs when receive unknown OPs, as a workaround
        the clients should avoid sending them to nautilus
        """
        if isinstance(self.mount_a, FuseMount):
            log.info('client is fuse mounted')
        elif isinstance(self.mount_a, KernelMount):
            log.info('client is kernel mounted')
            self.skipTest("Currently kclient hasn't fixed new ops issue yet.")

        log.info("Test for new getvxattr op...")
        self.mount_a.run_shell(["mkdir", "newop_getvxattr_dir"])

        # to test whether will nautilus crash the MDSs
        self.mount_a.getfattr("./newop_getvxattr_dir", "ceph.dir.pin.random")
        log.info("Test for new getvxattr op succeeds")