diff options
Diffstat (limited to 'source4/scripting/python/samba/tests/xattr.py')
-rw-r--r-- | source4/scripting/python/samba/tests/xattr.py | 109 |
1 files changed, 79 insertions, 30 deletions
diff --git a/source4/scripting/python/samba/tests/xattr.py b/source4/scripting/python/samba/tests/xattr.py index 9beff93933e..fcc2a3a2e42 100644 --- a/source4/scripting/python/samba/tests/xattr.py +++ b/source4/scripting/python/samba/tests/xattr.py @@ -24,55 +24,104 @@ from unittest import TestCase import random import os import tdb +import sys class XattrTests(TestCase): def test_set_xattr_native(self): if samba.xattr_native.is_xattr_supported(): random.seed() + path=None + try: + path=os.environ['SELFTEST_PREFIX'] + except: + self.assertTrue(path!=None, "SELFTEST_PREFIX env not set") + if path: + path=os.environ['SELFTEST_PREFIX'] + tempf=os.path.join(path,"pytests"+str(int(100000*random.random()))) + ntacl=xattr.NTACL() + ntacl.version = 1 + open(tempf, 'w').write("empty") + try: + samba.xattr_native.wrap_setxattr(tempf,"user.unittests",ndr_pack(ntacl)) + except IOError: + print >>sys.stderr, "WARNING: the filesystem where the tests are runned do not support XATTR, tests SKIPED" + os.unlink(tempf) + else: + print >>sys.stderr, "WARNING: the filesystem where the tests are runned do not support XATTR, tests SKIPED" + + + def test_set_and_get_native(self): + if samba.xattr_native.is_xattr_supported(): + random.seed() + path=None + try: + path=os.environ['SELFTEST_PREFIX'] + except: + self.assertTrue(path!=None, "SELFTEST_PREFIX env not set") + if path: + path=os.environ['SELFTEST_PREFIX'] + tempf=os.path.join(path,"pytests"+str(int(100000*random.random()))) + reftxt="this is a test" + open(tempf, 'w').write("empty") + try: + samba.xattr_native.wrap_setxattr(tempf,"user.unittests",reftxt) + text = samba.xattr_native.wrap_getxattr(tempf,"user.unittests") + self.assertEquals(text,reftxt) + except IOError: + print >>sys.stderr,"WARNING: the filesystem where the tests are runned do not support XATTR, tests SKIPED" + os.unlink(tempf) + else: + print >>sys.stderr,"WARNING: the filesystem where the tests are runned do not support XATTR, tests SKIPED" + + def test_set_xattr_tdb(self): + path=None + try: path=os.environ['SELFTEST_PREFIX'] + except: + self.assertTrue(path!=None, "SELFTEST_PREFIX env not set") + if path: + eadb=tdb.Tdb(os.path.join(path,"eadb.tdb"), 50000, tdb.DEFAULT, os.O_CREAT|os.O_RDWR) + random.seed() tempf=os.path.join(path,"pytests"+str(int(100000*random.random()))) ntacl=xattr.NTACL() ntacl.version = 1 open(tempf, 'w').write("empty") - samba.xattr_native.wrap_setxattr(tempf,"user.unittests",ndr_pack(ntacl)) + samba.xattr_tdb.wrap_setxattr(os.path.join(path,"eadb.tdb"),tempf,"user.unittests",ndr_pack(ntacl)) os.unlink(tempf) + os.unlink(os.path.join(path,"eadb.tdb")) - def test_set_and_get_native(self): - if samba.xattr_native.is_xattr_supported(): + def test_set_tdb_not_open(self): + path=None + try: + path=os.environ['SELFTEST_PREFIX'] + except: + self.assertTrue(path!=None, "SELFTEST_PREFIX env not set") + if path: + eadb=tdb.Tdb(os.path.join(path,"eadb.tdb"), 50000, tdb.DEFAULT, os.O_CREAT|os.O_RDWR) random.seed() + tempf=os.path.join(path,"pytests"+str(int(100000*random.random()))) + ntacl=xattr.NTACL() + ntacl.version = 1 + open(tempf, 'w').write("empty") + self.assertRaises(IOError,samba.xattr_tdb.wrap_setxattr,os.path.join(path,os.path.join("nonexistent","eadb.tdb")),tempf,"user.unittests",ndr_pack(ntacl)) + os.unlink(tempf) + + def test_set_and_get_tdb(self): + path=None + try: path=os.environ['SELFTEST_PREFIX'] + except: + self.assertTrue(path!=None, "SELFTEST_PREFIX env not set") + if path: + random.seed() tempf=os.path.join(path,"pytests"+str(int(100000*random.random()))) reftxt="this is a test" open(tempf, 'w').write("empty") - samba.xattr_native.wrap_setxattr(tempf,"user.unittests",reftxt) - text = samba.xattr_native.wrap_getxattr(tempf,"user.unittests") + samba.xattr_tdb.wrap_setxattr(os.path.join(path,"eadb.tdb"),tempf,"user.unittests",reftxt) + text = samba.xattr_tdb.wrap_getxattr(os.path.join(path,"eadb.tdb"),tempf,"user.unittests") self.assertEquals(text,reftxt) os.unlink(tempf) - - def test_set_xattr_tdb(self): - path=os.environ['SELFTEST_PREFIX'] - eadb=tdb.Tdb(os.path.join(path,"eadb.tdb"), 50000, tdb.DEFAULT, os.O_CREAT|os.O_RDWR) - random.seed() - tempf=os.path.join(path,"pytests"+str(int(100000*random.random()))) - ntacl=xattr.NTACL() - ntacl.version = 1 - open(tempf, 'w').write("empty") - samba.xattr_tdb.wrap_setxattr(eadb,tempf,"user.unittests",ndr_pack(ntacl)) - os.unlink(tempf) - os.unlink(os.path.join(path,"eadb.tdb")) - - def test_set_and_get_tdb(self): - path=os.environ['SELFTEST_PREFIX'] - eadb=tdb.Tdb(os.path.join(path,"eadb.tdb"), 50000, tdb.DEFAULT, os.O_CREAT|os.O_RDWR) - random.seed() - tempf=os.path.join(path,"pytests"+str(int(100000*random.random()))) - reftxt="this is a test" - open(tempf, 'w').write("empty") - samba.xattr_tdb.wrap_setxattr(eadb,tempf,"user.unittests",reftxt) - text = samba.xattr_tdb.wrap_getxattr(eadb,tempf,"user.unittests") - self.assertEquals(text,reftxt) - os.unlink(tempf) - os.unlink(os.path.join(path,"eadb.tdb")) + os.unlink(os.path.join(path,"eadb.tdb")) |