#!/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()