#MAKEFLAGS += --silent
# run these tests as a user that can sudo without a password.  For example:
# /etc/sudoers:
# su-pmeunier     ALL=(ALL)       NOPASSWD: ALL

TESTUSERID=182
TESTGROUPID=100
TESTUSERNAME=pmeunier
TESTHOME=/home/nanohub/pmeunier
TESTSCRIPT=maxwell_fs

# change definition as needed in /usr/lib/python2.7/dist-packages/hubzero/mw/constants.py:  "FS_PATH": '/usr/bin/maxwell_fs'
SESSNUM=1234
EXT_PREFIX=


all: check get_quota erase_sessdir_missing_OK setup_dir update_resources erase_sessdir_full erase_userhome_not_OK erase_userhome_missing_OK create_userhome erase_userhome move_userhome setfacl update_quota

all_aws: aws_prereq check get_quota erase_sessdir_missing_OK setup_dir update_resources_aws erase_sessdir_full erase_userhome_not_OK erase_userhome_missing_OK create_userhome erase_userhome move_userhome setfacl_aws

aws_prereq:
	sudo grep EXT_PREFIX /etc/mw-service/file.conf > /dev/null
	EXT_PREFIX=/srv
	TESTHOME=/home/pmeunier

check:
	sudo /usr/bin/$(TESTSCRIPT) check > check.out
	diff check.expected check.out

get_quota:
	# just check for success
	sudo /usr/bin/$(TESTSCRIPT) get_quota $(TESTUSERNAME)

erase_sessdir_missing_OK:
	sudo /usr/bin/$(TESTSCRIPT) erase_sessdir $(TESTUSERNAME) $(SESSNUM)

setup_dir: erase_sessdir_missing_OK
	sudo /usr/bin/$(TESTSCRIPT) setup_dir $(TESTUSERNAME) $(SESSNUM)

update_resources: setup_dir
	echo 'resource line value' | sudo /usr/bin/$(TESTSCRIPT) update_resources $(TESTUSERNAME) $(SESSNUM) 0
	sudo diff update_resources.expected $(EXT_PREFIX)/$(TESTHOME)/data/sessions/$(SESSNUM)/resources -I results_directory

update_resources_aws: aws_prereq update_resources

erase_sessdir_full: setup_dir
	sudo /usr/bin/$(TESTSCRIPT) erase_sessdir $(TESTUSERNAME) $(SESSNUM)

# username is bad, must contain 'zqkg'
erase_userhome_not_OK:
	! ( sudo /usr/bin/$(TESTSCRIPT) erase_userhome $(TESTUSERNAME) 2>/dev/null >/dev/null )

erase_userhome_missing_OK:
	# hard-coded magic string "zqkg" to avoid deleting real user homes
	# but this must be a real account present in the directory service
	sudo /usr/bin/$(TESTSCRIPT) erase_userhome zqkg_$(TESTUSERNAME)

create_userhome: erase_userhome_missing_OK
	sudo /usr/bin/$(TESTSCRIPT) create_userhome zqkg_$(TESTUSERNAME)

erase_userhome: create_userhome
	sudo /usr/bin/$(TESTSCRIPT) erase_userhome zqkg_$(TESTUSERNAME)

move_userhome: create_userhome
	sudo /usr/bin/$(TESTSCRIPT) erase_userhome zqkg_$(TESTUSERNAME) 2>/dev/null >/dev/null
	sudo /usr/bin/$(TESTSCRIPT) create_userhome $(TESTUSERNAME) 2>/dev/null >/dev/null
	sudo /usr/bin/$(TESTSCRIPT) move_userhome $(TESTUSERNAME) zqkg_$(TESTUSERNAME) 2>/dev/null >/dev/null
	sudo /usr/bin/$(TESTSCRIPT) erase_userhome zqkg_$(TESTUSERNAME) 2>/dev/null >/dev/null

setfacl:
	# setfacl facl toolpath
	sudo su apps -c "mkdir -p $(EXT_PREFIX)/apps/testtool_facl"
	sudo /usr/bin/$(TESTSCRIPT) setfacl 'user::rwx,group::rwx,other::r-x,mask::rwx' $(EXT_PREFIX)/apps/testtool_facl 2>/dev/null >/dev/null
	getfacl $(EXT_PREFIX)/apps/testtool_facl 2>/dev/null | grep -v file: > setfacl.out
	sudo su apps -c "rmdir $(EXT_PREFIX)/apps/testtool_facl"
	diff setfacl.expected setfacl.out

setfacl_aws: aws_prereq setfacl

update_quota:
	# Called by the CMS
	# This will fail if run from an execution host, it needs to be run on a file server (e.g., NFS)
	sudo quotaon -p -a | grep 'is on'
	sudo /usr/bin/$(TESTSCRIPT) update_quota $(TESTUSERNAME) 1000 1000
	sudo quota -V $(TESTUSERNAME)




