'''
	Access Control Lists testing based on newpynfs framework
	Aurelien Charbon - Bull SA
'''
from random_gen import *
from optparse import OptionParser
import commands
import os
import threading
import time
import random

alphabet='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789_-() ~'
t_alphabet=len(alphabet)



def test_longacl(l,path):
	# mesures sur le getfacl
	test = RandomGen()

	u = commands.getoutput('rm ' + path + "/*")	# clean directory
	print "test acl getfacl\n"
	for i in range(l):
		test.getUserList()
		testfile = 'testfile' + str(i)
		u = commands.getoutput('touch ' + path + "/" + testfile)
		print "setfacl with " + str(i) + " entries\n " + u
		for j in range(i):
			user = test.uList.pop()
			mode = test.createRandomMode()
                        u = commands.getoutput('setfacl -m u:' + user + ':' + mode + " " + path + "/" + testfile)
	                if u != "":
                                print "setfacl -m u:" + user + ':' + mode + " " + path + "/" + testfile
                                print u
def main():
	parser = OptionParser()
	parser.add_option("-l", "--length", dest="length",type="int",help="max lentgh of ACL")
	parser.add_option("-p", "--path", dest="path",help="path of test file")
	(options, args) = parser.parse_args()
	test_longacl(options.length,options.path)
main()