'''
	Access Control Lists testing based on newpynfs framework
	Aurelien Charbon - Bull SA
'''
from random_gen import *
import commands
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 = commands.getoutput('mkdir ' + path + "/" + testdir)
	u = commands.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 = commands.getoutput('touch ' + path + "/" + testdir + testfile)
# get the file's ACL and verify
	u = commands.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 = commands.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 = commands.getoutput('touch ' + path + "/" + testfile)
		t0=time.time()
                for j in range(i):
			user = test.uList.pop()
			mode = test.createRandomMode()
                        u = commands.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 = commands.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 = commands.getoutput('touch ' + path + "/" + testfile)
		print "setfacl " + str(i) + " " + u
		for j in range(i):
			user = test.uList.pop()
			mode = test.createRandomMode()
                        u = commands.getoutput('setfacl -m u:' + user + ':' + mode + " " + path + "/" + testfile)

		t1=time.time()
		u = commands.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()