| #!/usr/bin/env python3 |
| ''' |
| Access Control Lists testing based on newpynfs framework |
| Aurelien Charbon - Bull SA |
| ''' |
| from random_gen import * |
| import subprocess |
| import os |
| import threading |
| import time |
| import random |
| |
| alphabet='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789_-() ~' |
| t_alphabet=len(alphabet) |
| |
| def test_acl_default(path): |
| |
| # set default acl on the test directory |
| u = subprocess.getoutput('mkdir ' + path + "/" + testdir) |
| u = subprocess.getoutput('getfacl ' + path + "/" + testdir) |
| acl=[] |
| for i in range (len(splitedresult)-1): |
| splitedline = splitedresult[i].split('::') |
| name = splitedline[0] |
| entry = splitedline[1] |
| acl.append(name,entry) |
| # create a file in this directory |
| u = subprocess.getoutput('touch ' + path + "/" + testdir + testfile) |
| # get the file's ACL and verify |
| u = subprocess.getoutput('getfacl ' + path + "/" + testdir + testfile) |
| splitedresult = u.split('\n') |
| acl2=[] |
| for i in range (len(splitedresult)-1): |
| splitedline = splitedresult[i].split('::') |
| name = splitedline[0] |
| entry = splitedline[1] |
| acl2.append(name,entry) |
| |
| result_final = True |
| while i < len(acl2): |
| result = False |
| while j < len(acl2) and result == False: |
| if acl2[i] == acl[j]: |
| result = True |
| if result == False: |
| result_final = False |
| |
| ''' Measuring time to add an ACE to a list regarding the number of ACE already in the list''' |
| ''' Doing the measurement on 100 files ''' |
| def test_acl_long(): |
| path = '/mnt/nfs/test-acl' |
| test = RandomGen() |
| test.createFile(path,100) |
| test.getUserList() |
| t0=time.time() |
| for test_file in test.fList: |
| for user in test.uList: |
| mode = test.createRandomMode() |
| u = subprocess.getoutput('setfacl -m u:' + user + ':' + mode + " " + path + "/" + test_file) |
| t1=time.time() |
| print(t1-t0) |
| |
| def test_nfs_acl(): |
| print("test acl 10000\n") |
| test = RandomGen() |
| f = open('/tmp/acl-result-10000','w') |
| path = '/mnt/nfs/test-acl' |
| for i in range(10000): |
| print("test avec " + str(i) + " ACE") |
| test.getUserList() |
| testfile = 'testfile' + str(i) |
| u = subprocess.getoutput('touch ' + path + "/" + testfile) |
| t0=time.time() |
| for j in range(i): |
| user = test.uList.pop() |
| mode = test.createRandomMode() |
| u = subprocess.getoutput('setfacl -m u:' + user + ':' + mode + " " + path + "/" + testfile) |
| t1=time.time() |
| f.write(str(i) + "\t" + str(t1-t0)+"\n") |
| f.close() |
| |
| |
| def test_nfs_getfacl(): |
| # mesures sur le getfacl |
| test = RandomGen() |
| |
| path = '/mnt/nfs/test-acl' # NFS mounted directory |
| u = subprocess.getoutput('rm ' + path + "/*") # clean directory |
| print("test acl getfacl\n") |
| f = open('/tmp/acl-result-getfacl','w') |
| for i in range(37): |
| |
| test.getUserList() |
| testfile = 'testfile' + str(i) |
| |
| u = subprocess.getoutput('touch ' + path + "/" + testfile) |
| print("setfacl " + str(i) + " " + u) |
| for j in range(i): |
| user = test.uList.pop() |
| mode = test.createRandomMode() |
| u = subprocess.getoutput('setfacl -m u:' + user + ':' + mode + " " + path + "/" + testfile) |
| |
| t1=time.time() |
| u = subprocess.getoutput('getfacl ' + path + "/" + testfile) |
| print("getfacl - " + str(i) + u + "\n") |
| t2=time.time() |
| f.write(str(i) + "\t" + str(t2-t1)+"\n") |
| f.close() |
| |
| |
| def main(): |
| # test getFileList |
| path = '/mnt/nfs/test-acl' |
| test = RandomGen() |
| test.getFileList(path) |
| print(test.fList) |
| main() |
| |
| |
| |
| |
| |