普通文本  |  123行  |  3.21 KB

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