def run(utils): bug='28642' utils.log_info("Start regression test for bug %s"%(bug)) utils.log_info("Submit the job and wait to finish") utils.use_external_jdl("%s.jdl"%(bug)) JOBID=Job_utils.submit_wait_finish(utils,"") Job_utils.output_normal_job(utils,JOBID) #Check job output utils.log_info("Check if the output files are correctly retrieved") if os.path.isfile("%s/input1.txt"%(utils.get_job_output_dir())) & os.path.isfile("%s/env.out"%(utils.get_job_output_dir())) & os.path.isfile("%s/env.err"%(utils.get_job_output_dir())) : utils.log_info("Output files are collectly retrieved") else: utils.log_info("ERROR: Output files are not correctly retrieved") raise GeneralError("","Output files are not correctly retrieved") #Check the content of env.out file utils.log_info("Check the content of the env.out file") result=utils.run_command("cat %s/env.out"%(utils.get_job_output_dir())) if result.find("LD_LIBRARY_PATH=.") != -1 : utils.log_info("Environment variable LD_LIBRARY_PATH has value '.' as expected") else: utils.log_info("Error value of environment variable LD_LIBRARY_PATH") raise GeneralError("","Error !!! Error value of environment variable LD_LIBRARY_PATH") utils.log_info("End of regression test for bug %s",bug)
def run(utils): bug='38359' utils.log_info("Start regression test for bug %s"%(bug)) if len(utils.get_Username())==0 or len(utils.get_Password())==0: utils.log_info("ERROR: To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") raise GeneralError("","To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") ssh=utils.open_ssh(utils.get_WMS(),utils.get_Username(),utils.get_Password()) utils.log_info("Set MaxOutputSandoxSize=100; to glite_wms.conf at WMS") utils.change_remote_file(ssh,"/etc/glite-wms/glite_wms.conf", ['MaxOutputSandboxSize'],['*'],['100']) utils.log_info("Restart Workload Manager glite-wms-wm") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") utils.log_info("Submit the job and wait to finish") utils.use_external_jdl("%s.jdl"%(bug)) JOBID=Job_utils.submit_wait_finish(utils,"") utils.log_info("Get job output") Job_utils.output_normal_job(utils,JOBID) #Check job output utils.log_info("Check if the output files are correctly retrieved") if os.path.isfile("%s/test.err"%(utils.get_job_output_dir())) & os.path.isfile("%s/test.out"%(utils.get_job_output_dir())) & os.path.isfile("%s/out1"%(utils.get_job_output_dir())) & os.path.isfile("%s/out2.tail"%(utils.get_job_output_dir())) & os.path.isfile("%s/out3"%(utils.get_job_output_dir())) & os.path.isfile("%s/out4.tail"%(utils.get_job_output_dir())) : utils.log_info("Output files are collectly retrieved") else: utils.log_info("ERROR: Output files are not correctly retrieved") utils.execute_remote_cmd(ssh, "cp -f /etc/glite-wms/glite_wms.conf.bak /etc/glite-wms/glite_wms.conf") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") ssh.close() raise GeneralError("","Output files are not correctly retrieved") #Check the content of env.out file utils.log_info("Check output files size") if int(os.path.getsize("%s/out1"%(utils.get_job_output_dir()))) != 50 or int(os.path.getsize("%s/out3"%(utils.get_job_output_dir()))) !=50 or int(os.path.getsize("%s/out2.tail"%(utils.get_job_output_dir())))!=0 or int(os.path.getsize("%s/out4.tail"%(utils.get_job_output_dir())))!=0 or int(os.path.getsize("%s/test.out"%(utils.get_job_output_dir())))!=0 or int(os.path.getsize("%s/test.err"%(utils.get_job_output_dir())))!=0 : utils.log_info("ERROR: Output files do not have the expected sizes.") utils.execute_remote_cmd(ssh, "cp -f /etc/glite-wms/glite_wms.conf.bak /etc/glite-wms/glite_wms.conf") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") ssh.close() raise GeneralError("","Output files do not have the expected sizes") utils.log_info("Restore the initial glite_wms.conf file") utils.execute_remote_cmd(ssh, "cp -f /etc/glite-wms/glite_wms.conf.bak /etc/glite-wms/glite_wms.conf") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") ssh.close() utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): bug = "36536" utils.log_info("Start regression test for bug %s" % (bug)) if utils.WMS_USERNAME == "" or utils.WMS_PASSWORD == "" or utils.USERNAME == "" or utils.PASSWORD == "": utils.log_info( "ERROR: Missing required variables (WMS_USERNAME,WMS_PASSWORD,USERNAME,PASSWORD) from configuration file" ) raise GeneralError( "Missing required variables", "To verify this bug it is necessary to set WMS_USERNAME,WMS_PASSWORD,USERNAME and PASSWORD in the configuration file", ) ssh = utils.open_ssh(utils.get_WMS(), utils.get_Username(), utils.get_Password()) utils.log_info("Prepare and submit a simple job") utils.use_utils_jdl() utils.set_jdl(utils.get_jdl_file()) JOBID = Job_utils.submit_wait_finish(utils, "") utils.log_info("Create SQL script file") utils.execute_remote_cmd( ssh, "echo \"SELECT * FROM jobs WHERE dg_jobid like '%%%s%%';\" > /root/test.sql" % (JOBID) ) utils.log_info("Retrieve the job record from LBProxy database") mysql_cmd = "mysql -u %s --password=%s lbserver20 < /root/test.sql" % (utils.USERNAME, utils.PASSWORD) output = utils.execute_remote_cmd(ssh, mysql_cmd) if output.find(JOBID) == -1: utils.log_info("ERROR: Unable to retrieve the job record from LBProxy datasse for job id:%s" % (JOBID)) raise GeneralError( "Retrieve job record from LBProxy database", "Unable to retrieve the job record from LBProxy datasse for job id:%s" % (JOBID), ) utils.log_info("Get job output") Job_utils.output_normal_job(utils, JOBID) # Check LBProxy utils.log_info("Check again the job record in LBProxy database") output = utils.execute_remote_cmd(ssh, mysql_cmd) if output.find(JOBID) != -1: utils.log_info("ERROR: Job's record in LBProxy database has not been removed.") raise GeneralError("", "Job's record in LBProxy database has not been removed.") utils.log_info("End of regression test for bug %s" % (bug))
def run(utils): bug='34508' utils.log_info("Start regression test for bug %s"%(bug)) if len(utils.get_Username())==0 or len(utils.get_Password())==0: utils.log_info("ERROR: To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") raise GeneralError("","To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") ssh=utils.open_ssh(utils.get_WMS(),utils.get_Username(),utils.get_Password()) utils.log_info("Stop glite-wms-wm") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm stop") utils.log_info("Prepare jdl file for submission") #Neccessary to avoid overwrite of the external jdls utils.use_utils_jdl() Job_utils.prepare_collection_job(utils,utils.get_jdl_file()) utils.log_info("Submit collection") JOBID=utils.run_command("glite-wms-job-submit %s --config %s --nomsg --collection %s/collection_jdls"%(utils.get_delegation_options(),utils.get_config_file(),utils.get_tmp_dir())) utils.log_info("Job submitted successfuly. Returned JOBID: %s"%(JOBID)) utils.log_info("Start glite-wms-wm") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm start") utils.log_info("Wait until collection is finished") utils.wait_until_job_finishes (JOBID) utils.log_info("Check final status of collection") utils.job_status(JOBID) if utils.JOBSTATUS.find('Done (Success)') == -1 : utils.log_info("ERROR: Job not finished successfully. Job final status is '%s' instead of 'Done (Success)'"%(utils.get_job_status())) raise GeneralError("Check job final status","Job not finished successfully. Job final status is '%s' instead of 'Done (Success)'"%(utils.get_job_status())) else: utils.log_info("Collection finished successfully. Test OK") utils.log_info("End of regression test for bug %s"%(bug))
def test_logic(utils,dest_CE): JOBID=Job_utils.submit_wait_finish(utils,"") #Check for job status utils.log_info("Check job stauts") utils.job_status(JOBID) if utils.get_job_status()=="Aborted": utils.log_info("Job status is Aborted") else: utils.log_info("ERROR: Job status is not Aborted") raise GeneralError("","Error !!! Job status is not Aborted") result=utils.run_command("glite-wms-job-logging-info --event Match %s"%(JOBID)) used_ces=[] for line in result.split("\n"): if line.find("Dest id") !=-1 : used_ces.append(line.split("=")[1].strip()) for CE in used_ces : if CE!= dest_CE : utils.log_info("ERROR: Test failed, not found 3 times the name of the previously choosen CE. Target CE: %s while found %s"%(dest_CE,CE)) raise GeneralError("","Error !!! Test failed, not found 3 times the name of the previously choosen CE. Target CE: %s while found %s"%(dest_CE,CE)) utils.log_info("Test OK")
def run(utils): bug='35250' utils.log_info("Start regression test for bug %s"%(bug)) utils.log_info("Submit the job and wait to finish") utils.use_external_jdl("%s.jdl"%(bug)) utils.set_destination_ce(utils.get_jdl_file(),"2119/jobmanager") JOBID=Job_utils.submit_wait_finish(utils) utils.log_info("Check job's final status") utils.job_status(JOBID) if utils.JOBSTATUS.find('Done (Success)') == -1 : utils.log_info("ERROR: Job not finished successfully. Job final status is '%s' instead of 'Done (Success)'"%(utils.get_job_status())) raise GeneralError("Check job final status","Job not finished successfully. Job final status is '%s' instead of 'Done (Success)'"%(utils.get_job_status())) else: utils.log_info("Job finished successfully.") utils.log_info("TEST OK") utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): utils.log_info("Start regression test for bug 70824") OUTPUT = "ATHENA_RUN_EVENTS=[(152345L, 216721L)]" # expected output # we need to test both lcg CE and CREAM CE for dest in ("/cream-", "2119/jobmanager"): utils.console_log("Test for CE: %s" % (dest)) utils.use_external_jdl("70824.jdl") utils.set_destination_ce(utils.get_jdl_name(), dest) Job_utils.submit_output_normal_job(utils, dest) ### Now check the job out output utils.log_info("Check if job output is as expected") FILE = open("%s/env.out" % (utils.get_job_output_dir()), "r") lines = FILE.readlines() R_OUTPUT = "" for line in lines: if line.find("ATHENA_RUN_EVENTS") != -1: R_OUTPUT = line[:-1] # remove the newline break FILE.close() if OUTPUT != R_OUTPUT: utils.log_info("ERROR: Output is not as expected. We get output '%s' while expected '%s'", R_OUTPUT, OUTPUT) raise GeneralError("Check output", "Not expected output. (Get %s expect %s)" % (R_OUTPUT, OUTPUT)) else: utils.log_info("Output is as expected. Test OK") utils.log_info("End of regression test for bug 70824")
def run(utils): utils.log_info("Start regression test for bug 73711") logging.warning("To verify this bug you need a WMS set in proxy mode only ") # Neccessary to avoid overwrite of the external jdls utils.use_utils_jdl() utils.set_jdl(utils.get_jdl_file()) JOBID=utils.run_command("glite-wms-job-submit %s --config %s --nomsg %s"%(utils.get_delegation_options(),utils.get_config_file(),utils.get_jdl_file())) utils.log_info("Cancel submitted job") utils.run_command("glite-wms-job-cancel --noint %s"%(JOBID)) if JOBID.find(utils.get_WMS()) == -1: utils.log_info("Job submitted successfuly. Returned JOBID: %s"%(JOBID)) else: utils.log_info("ERROR: WMS is not set in 'proxy' mode only. We can't verify the bug.") raise GeneralError("Check LBServer","WMS is not set in 'proxy' mode only. We can't verify the bug.") utils.log_info("Prepare a job collecion") Job_utils.prepare_collection_job(utils,utils.get_jdl_file()) JOBID=utils.run_command("glite-wms-job-submit %s --config %s --nomsg --collection %s/collection_jdls"%(utils.get_delegation_options(),utils.get_config_file(),utils.get_tmp_dir())) utils.log_info("Job submitted successfuly. Returned JOBID: %s"%(JOBID)) utils.log_info("Cancel submitted job") utils.run_command("glite-wms-job-cancel --noint %s"%(JOBID)) if JOBID.find(utils.get_WMS()) == -1: utils.log_info("Job submitted successfuly. Returned JOBID: %s"%(JOBID)) else: utils.log_info("ERROR: WMS is not set in 'proxy' mode only. We can't verify the bug.") raise GeneralError("Check LBServer","WMS is not set in 'proxy' mode only. We can't verify the bug.") utils.log_info("End of regression test for bug 73711")
def run(utils): bug='36145' utils.log_info("Start regression test for bug %s"%(bug)) if len(utils.get_Username())==0 or len(utils.get_Password())==0: utils.log_info("ERROR: To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") raise GeneralError("","To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") ssh=utils.open_ssh(utils.get_WMS(),utils.get_Username(),utils.get_Password()) utils.log_info("Set DispatcherType=\"jobdir\"; and Input=\"${WMS_LOCATION_VAR}/workload_manager/jobdir\"; to glite_wms.conf at WMS") attributes=['DispatcherType','Input'] new=['\"jobdir\"','\"${WMS_LOCATION_VAR}/workload_manager/jobdir\"'] utils.change_attribute_at_remote_file_section(ssh,"/etc/glite-wms/glite_wms.conf",attributes[0],'WorkloadManager',new[0]) utils.change_attribute_at_remote_file_section(ssh,"/etc/glite-wms/glite_wms.conf",attributes[1],'WorkloadManager',new[1]) utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") utils.log_info("Submit the job and wait to finish") utils.use_external_jdl("%s.jdl"%(bug)) utils.log_info("Submit the job and wait to finish") utils.set_destination_ce(utils.get_jdl_file(),"2119/jobmanager") JOBID=Job_utils.submit_wait_finish(utils) utils.log_info("Check job's final status") utils.job_status(JOBID) if utils.JOBSTATUS.find('Done (Success)') == -1 : utils.log_info("ERROR: Job not finished successfully. Job final status is '%s' instead of 'Done (Success)'"%(utils.get_job_status())) utils.execute_remote_cmd(ssh, "cp -f /etc/glite-wms/glite_wms.conf.bak /etc/glite-wms/glite_wms.conf") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") raise GeneralError("Check job final status","Job not finished successfully. Job final status is '%s' instead of 'Done (Success)'"%(utils.get_job_status())) else: utils.log_info("Job finished successfully.") utils.log_info("Restore the initial glite_wms.conf file") utils.execute_remote_cmd(ssh, "cp -f /etc/glite-wms/glite_wms.conf.bak /etc/glite-wms/glite_wms.conf") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") ssh.close() utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): bug='77876' utils.log_info("Start regression test for bug %s"%(bug)) utils.log_info("Submit job collection") utils.use_utils_jdl() Job_utils.prepare_collection_job(utils,utils.get_jdl_file(),"") JOBID=Job_utils.submit_collection_wait_finish(utils,"") utils.job_status(JOBID) if utils.get_job_status().find('Done') != -1 : utils.log_info("Get job output") # Get output utils.run_command("glite-wms-job-output --noint --dir %s %s "%(utils.get_job_output_dir(),JOBID)) utils.log_info("Check job status") res=utils.run_command("glite-wms-job-status -v 0 %s"%(JOBID)) num=res.count("Current Status: Cleared") if num == 4 : utils.log_info("All nodes have CLEARED status") else: utils.log_info("ERROR: Not all nodes have CLEARED status. Get %s expected 4"%(num)) raise GeneralError("Count Cleared status","Not all nodes have CLEARED status. Get %s expected 4"%(num)) else: utils.log_info("ERROR: Job not finished successfully. Retry the test.") raise RetryError("Check job final status","Job not finished successfully.") utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): bug='48636' utils.log_info("Start regression test for bug %s"%(bug)) if len(utils.get_Username())==0 or len(utils.get_Password())==0: utils.log_info("ERROR: To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") raise GeneralError("","To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") ssh=utils.open_ssh(utils.get_WMS(),utils.get_Username(),utils.get_Password()) utils.log_info("Set MaxOutputSandboxSize=50M; to glite_wms.conf at WMS") utils.change_remote_file(ssh,"/etc/glite-wms/glite_wms.conf", ['MaxOutputSandboxSize'],['*'],['50M']) utils.log_info("Restart workload manager glite-wms-wm") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") utils.log_info("Submit the job and wait to finish") utils.use_external_jdl("%s.jdl"%(bug)) JOBID=Job_utils.submit_wait_finish(utils,"") utils.log_info("Check job status") result=utils.run_command("glite-wms-job-logging-info -v 3 --event UserTag %s"%(JOBID)) if result.find("OSB quota exceeded for") == -1: utils.log_info("ERROR: Not found message 'OSB quota exceeded for' at UserTag") utils.execute_remote_cmd(ssh, "cp -f /etc/glite-wms/glite_wms.conf.bak /etc/glite-wms/glite_wms.conf") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") raise GeneralError("Check UserTag event","Not found message 'OSB quota exceeded for' at UserTag") if result.find("Truncated last 52428800 bytes for file") == -1: utils.log_info("ERROR: Not found message 'Truncated last 52428800 bytes for file") utils.execute_remote_cmd(ssh, "cp -f /etc/glite-wms/glite_wms.conf.bak /etc/glite-wms/glite_wms.conf") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") raise GeneralError("Check UserTag event","Not found message 'Truncated last 52428800 bytes for file' at UserTag") utils.log_info("Restore the initial glite_wms.conf file") utils.execute_remote_cmd(ssh, "cp -f /etc/glite-wms/glite_wms.conf.bak /etc/glite-wms/glite_wms.conf") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") ssh.close() utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): bug='73715' utils.log_info("Start regression test for bug %s"%(bug)) # we need to test both lcg CE and CREAM CE for dest in ("/cream-", "2119/jobmanager") : utils.log_info("Prepare jdl file for submission to a ce like %s"%(dest)) # Necessary to avoid overwrite of the external jdls utils.use_utils_jdl() utils.set_jdl(utils.get_jdl_file()) utils.set_destination_ce(utils.get_jdl_name(), dest) JOBID=Job_utils.submit_wait_finish(utils, dest) utils.job_status(JOBID) find=0 if utils.JOBSTATUS.find('Done (Success)') != -1 : utils.log_info("Look for the ReallyRunning event from LogMonitor in the logging info") result=utils.run_command("glite-wms-job-logging-info -v 3 --event ReallyRunning %s"%(JOBID)) for line in result.split("\n") : if line.find("Source")!=-1: source=line.split("=")[1] if source.find("LogMonitor")!=-1: find=1 break if find == 0: utils.log_info("ERROR: Not found ReallyRunning event from LogMonitor") raise GeneralError("Check ReallyRunning events","Not found ReallyRunning event from LogMonitor") else: utils.log_info("Found ReallyRunning event from LogMonitor as expected. Test PASS") else: utils.log_info("ERROR: Job not finished successfully. Retry the test.") raise RetryError("Check job final status","Job not finished successfully.") utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): bug='73699' utils.log_info("Start regression test for bug %s"%(bug)) utils.use_external_jdl("%s.jdl"%(bug)) JOBID=Job_utils.submit_wait_finish(utils,"") # Check for job status utils.log_info("Check job stauts") utils.job_status(JOBID) if utils.get_job_status()=="Aborted": utils.log_info("Job status is Aborted") else: utils.log_info("ERROR: Job status is not Aborted") raise GeneralError("Check job status","Job status is not 'Aborted' but %s"%(utils.get_job_status())) # Check the aborted reason reason=utils.get_StatusReason(JOBID) if reason != "hit job retry count (3)": utils.log_info("ERROR: Wrong reason: %s"%(reason)) raise GeneralError("Check aborted reason","Wrong reason: %s"%(reason)) else: utils.log_info("Retry count is 3 as expected") # Check the number of resubmission events utils.log_info("Check the number of resubmission events") result=utils.run_command("glite-wms-job-logging-info -v 2 --event Resubmission %s"%(JOBID)).count("WILLRESUB") if result == 7 : utils.log_info("Test PASS") else: utils.log_info("ERROR: Wrong number of resubmission events. Get %s expected 7"%(result)) raise GeneralError("Check resubmission events","Wrong number of resubmission events. Get %s expected 7"%(result)) utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): bug='75223' utils.log_info("Start regression test for bug %s"%(bug)) utils.log_info("Prepare jdl file for submission") for dest in ("/cream-", "2119/jobmanager") : # Necessary to avoid overwrite of the external jdls utils.use_utils_jdl() utils.set_jdl(utils.get_jdl_file()) utils.set_destination_ce(utils.get_jdl_name(), dest) utils.add_jdl_attribute(utils.get_jdl_file(),"Prologue","/bin/false") JOBID=Job_utils.submit_wait_finish(utils,dest) utils.log_info("Check if failed reason is 'Prologue failed with error 1'") result=utils.run_command("glite-wms-job-logging-info -v 2 --event Done %s"%(JOBID)) blocks=result.split('Event: Done') logmonitor_reasons=[] for block in blocks: if block.find('LogMonitor')!=-1: lines=block.split('\n') for line in lines: if line.find('Reason')!=-1: logmonitor_reasons.append(line.split(' = ')[1].strip(' \t\n')) break for reason in logmonitor_reasons: if reason!='Prologue failed with error 1' and reason!='prologue failed with error 1': utils.log_info("Wrong faild reason for LogMonitor. Found '%s' , while expected is 'Prologue failed with error 1'"%(reason)) raise GeneralError("Check failend reasons for LogMonitor","Wrong failed reason. Found %s , while expected is 'Prologue failed with error 1'"%(reason)) break utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): bug='92922' utils.log_info("Start regression test for bug %s"%(bug)) utils.log_info("Prepare jdl file for submission") utils.use_external_jdl("%s.jdl"%(bug)) JOBID=Job_utils.submit_wait_finish(utils) utils.log_info("Check job's exit code") output=utils.run_command("glite-wms-job-status %s"%(JOBID)) exit_code='' status='' for line in output.split("\n"): if line.find("Exit code:")!=-1: exit_code=line.split(":")[1].strip(" \t\n") if line.find("Current Status:")!=-1: status=line.split(":")[1].strip(" \t\n") if status.find("Done(Exit Code !=0)")==-1: utils.log_info("ERROR: Wrong final status. Get %s, while expected 'Done(Exit Code !=0)'"%(status)) raise GeneralError("Check job's final status","Wrong final status. Get %s , while expected 'Done(Exit Code !=0)'"%(status)) else: utils.log_info("Job's final status is 'Done(Exit Code !=0)' as expected") if int(exit_code)==0: utils.log_info("ERROR: Wrong exit code. Found 0 , while expected != 0") raise GeneralError("Check job's exit code","Wrong exit code. Found 0, while expected != 0") else: utils.log_info("Job's exit code is not 0 as expected") utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): bug='79141' utils.log_info("Start regression test for bug %s"%(bug)) utils.log_info("Submit a parametric job and wait until finish") utils.use_external_jdl("%s.jdl"%(bug)) JOBID=Job_utils.submit_wait_finish(utils,"") jdl=utils.run_command("glite-wms-job-info --jdl %s"%(JOBID)) if (jdl.find("input/Makefile") == -1 or jdl.find("input/Test0") == -1): utils.log_info("ERROR: Final submitted jdl (%s) is not correct"%(jdl)) raise GeneralError("Check submitted jdl","Final submitted jdl (%s) is not correct"%(jdl)) utils.log_info("Check job output") utils.job_status(JOBID) if utils.JOBSTATUS.find('Done (Success)') != -1 : # Check job output DIR=Job_utils.output_parametric_job(utils,JOBID) if os.path.isdir(DIR): utils.log_info("Basic output directory exists") else: utils.log_info("ERROR: Basic output directory does not exist") raise GeneralError("Check output files","Basic output directory does not exist") utils.log_info("Check if node directory is correctly created") if os.path.isdir("%s/Node_0"%(DIR)) : utils.log_info("Node directory is collectly created") else: utils.log_info("ERROR: Node directory is not collectly created") raise GeneralError("Check output files","Node directories are not correctly created") utils.log_info("Check if the output files are correctly retrieved") if os.path.isfile("%s/Node_0/output.txt"%(DIR)) : utils.log_info("Output files are collectly retrieved") else: utils.log_info("ERROR: Output files are not collectly retrieved") raise GeneralError("Check output files","Output files are not collectly retrieved") utils.log_info("Check for files Makefile and Test0 at output.txt") outfile=open("%s/Node_0/output.txt"%(DIR), "r") line=outfile.read() outfile.close() if line.find("Makefile") != 1 and line.find("Test0"): utils.log_info("Both files are listed at output.txt") else: utils.log_info("ERROR: Not both files are listed at output.txt") raise GeneralError("Check output file","Not both files are listed at output.txt") else: utils.log_info("ERROR: Job not finished successfully. Retry the test.") raise RetryError("Check job final status","Job not finished successfully.") utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): bug='58878' utils.log_info("Start regression test for bug %s"%(bug)) if len(utils.get_Username())==0 or len(utils.get_Password())==0: utils.log_info("ERROR: To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") raise GeneralError("","To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") ssh=utils.open_ssh(utils.get_WMS(),utils.get_Username(),utils.get_Password()) utils.log_info("CASE 1 : Use LCG-CE") utils.log_info("Insert into the Workload Management section of glite_wms.conf the PropagageToLRMS section") value="{\n [ name = \"smpgranularity\"; value = jdl.SMPGranularity ],\n[ name = \"wholenodes\"; value = jdl.WholeNodes ; requires = jdl.WholeNodes == true; ],\n[ name = \"hostsmpsize\"; value = ce.GlueHostArchitectureSMPSize ],\n[ name = \"mpi_type\"; value = jdl.MpiType; requires = ce.GlueCEInfoLRMSType == \"lsf\"; ],\n[ name = \"hostmainmem\"; value = ce.GlueHostMainMemoryRAMSize; requires = ce.GlueCEInfoLRMSType == \"pbs\"; ]\n}" utils.add_attribute_to_remote_file(ssh,"/etc/glite-wms/glite_wms.conf","WorkloadManager",['PropagateToLRMS'],[value]) utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") utils.use_utils_jdl() utils.set_jdl(utils.get_jdl_file()) smp_granularity=2 mpi_type="mvapich_gcc4" utils.log_info("Append the jdl file with the required attributes") utils.add_jdl_general_attribute(utils.get_jdl_file(),"SMPGranularity",smp_granularity) utils.add_jdl_attribute(utils.get_jdl_file(),"MpiType",mpi_type) utils.set_destination_ce(utils.get_jdl_file(),"2119/jobmanager") utils.log_info("Submit the job to LCG-CE and wait to finish") JOBID=Job_utils.submit_wait_finish(utils,"2119/jobmanager") utils.log_info("Check job status") output=utils.run_command("glite-wms-job-logging-info -v 3 --event Enqueued %s"%(JOBID)) for line in output.split("\n"): if line.find("GlobusRSL")!=-1: arguments=line.split("arguments=")[1][1:-5] break output=utils.run_command("glite-wms-job-status %s"%(JOBID)).split("\n") for line in output: if line.find("Destination:")!=-1: line=line.split("Destination:")[1] CE=line.split(":2119")[0].strip(" \t\n") lrms_type=utils.run_command("ldapsearch -x -h %s:2170 -b o=grid | grep GlueCEInfoLRMSType"%(CE)) lrms_type=lrms_type.split(":")[1].strip(" \t\n") smp_size=utils.run_command("ldapsearch -x -h %s:2170 -b o=grid | grep GlueHostArchitectureSMPSize"%(CE)) smp_size=smp_size.split(":")[1].strip(" \t\n") host_mem=utils.run_command("ldapsearch -x -h %s:2170 -b o=grid | grep GlueHostMainMemoryRAMSize"%(CE)) host_mem=host_mem.split(":")[1].strip(" \t\n") arguments=arguments.split(",") target=['smpgranularity=%s'%(smp_granularity),'hostsmpsize=%s'%(smp_size)] if lrms_type=="pbs": target.append("hostmainmem=%s"%(host_mem)) elif lrms_type=="lsf": target.append("mpi_type=%s"%(mpi_type)) z=set(target)&set(arguments) if len(z)!=len(target): utils.execute_remote_cmd(ssh, "cp -f /etc/glite-wms/glite_wms.conf.bak /etc/glite-wms/glite_wms.conf") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") ssh.close() utils.log_info("ERROR: Unable to find all the expected attributes. \n Passed: %s \n Expected: %s"%(arguments,target)) raise GeneralError("","Unable to find all the expected attributes. \n Passed: %s \n Expected: %s"%(arguments,target)) else: utils.log_info("CASE 1 OK.\n Passed: %s \nExpected: %s"%(arguments,target)) utils.log_info("CASE 2 : Use CREAM CE") utils.use_utils_jdl() utils.set_jdl(utils.get_jdl_file()) smp_granularity=1 mpi_type="mvapich_gcc4" utils.log_info("Append the jdl file with the required attributes") utils.add_jdl_general_attribute(utils.get_jdl_file(),"SMPGranularity",smp_granularity) utils.add_jdl_attribute(utils.get_jdl_file(),"MpiType",mpi_type) utils.set_destination_ce(utils.get_jdl_file(),"/cream-") utils.log_info("Submit the job to CREAM CE and wait to finish") JOBID=Job_utils.submit_wait_finish(utils,"/cream-") utils.log_info("Check job status") output=utils.run_command("glite-wms-job-logging-info -v 3 --event Transfer %s"%(JOBID)) for line in output.split("\n"): if line.find("CeRequirements")!=-1: arguments=line.split("CeRequirements = ")[1] arguments=arguments.split(") )&&")[1][:-3] break output=utils.run_command("glite-wms-job-status %s"%(JOBID)).split("\n") for line in output: if line.find("Destination:")!=-1: line=line.split("Destination:")[1] CE=line.split(":8443")[0].strip(" \t\n") lrms_type=utils.run_command("ldapsearch -x -h %s:2170 -b o=grid | grep GlueCEInfoLRMSType"%(CE)) lrms_type=lrms_type.split(":")[1].strip(" \t\n") smp_size=utils.run_command("ldapsearch -x -h %s:2170 -b o=grid | grep GlueHostArchitectureSMPSize"%(CE)) smp_size=smp_size.split(":")[1].strip(" \t\n") host_mem=utils.run_command("ldapsearch -x -h %s:2170 -b o=grid | grep GlueHostMainMemoryRAMSize"%(CE)) host_mem=host_mem.split(":")[1].strip(" \t\n") arguments=arguments.split("&&") target=['smpgranularity==%s'%(smp_granularity),'hostsmpsize==%s'%(smp_size)] if lrms_type=="pbs": target.append("hostmainmem==%s"%(host_mem)) elif lrms_type=="lsf": target.append("mpi_type==%s"%(mpi_type)) z=set(target)&set(arguments) if len(z)!=len(target): utils.execute_remote_cmd(ssh, "cp -f /etc/glite-wms/glite_wms.conf.bak /etc/glite-wms/glite_wms.conf") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") ssh.close() utils.log_info("ERROR: Unable to find all the expected attributes. \n Passed: %s \n Expected: %s"%(arguments,target)) raise GeneralError("","Unable to find all the expected attributes. \n Passed: %s \n Expected: %s"%(arguments,target)) else: utils.log_info("CASE 2 OK.\n Passed: %s \nExpected: %s"%(arguments,target)) utils.log_info("TEST OK") utils.log_info("Restore the initial glite_wms.conf file") utils.execute_remote_cmd(ssh, "cp -f /etc/glite-wms/glite_wms.conf.bak /etc/glite-wms/glite_wms.conf") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") ssh.close() utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): bug='45883' utils.log_info("Start regression test for bug %s"%(bug)) utils.use_external_jdl("%s.jdl"%(bug)) utils.log_info("Get availabe CEs for job submission") result=utils.run_command("glite-wms-job-list-match %s -c %s %s"%(utils.get_delegation_options(),utils.get_config_file(),utils.get_jdl_file())) available_ces=[] for line in result.split("\n"): if line.find(" - ") !=-1 : available_ces.append(line.split(" - ")[1].split(":")[0]) utils.log_info("Submit job and wait to finish") JOBID=Job_utils.submit_wait_finish(utils,"") utils.log_info("Check job final stauts") utils.job_status(JOBID) if utils.get_job_status()=="Aborted": utils.log_info("Job status is Aborted") else: utils.log_info("ERROR: Job status is not Aborted") raise GeneralError("Check job status","Error !!! Job status is not Aborted") utils.log_info("Get the used CEs") result=utils.run_command("glite-wms-job-logging-info --event Match %s"%(JOBID)) used_ces=[] for line in result.split("\n"): if line.find("Dest id") !=-1 : used_ces.append(line.split("=")[1].strip().split(":")[0]) utils.log_info("Check the used CEs") z = set(available_ces) & set(used_ces) if len(available_ces)<=4: if len(z) != len(available_ces): utils.log_info("ERROR: Resubmission did not use all the available CEs. Used only %s while available CEs was %s"%(len(z),len(available_ces))) raise GeneralError("","Error !!!. Resubmission did not use all the available CEs. Used only %d while available CEs was %d"%(len(z),len(available_ces))) else: if len(z) != 4: utils.log_info("ERROR: Resubmission did not prefer different CEs. Used CEs %s while available CEs was %s"%(len(z),len(available_ces))) raise GeneralError("","Error !!!. Resubmission did not prefer different CEs. Used CEs %d while available CEs was %d"%(len(z),len(available_ces))) utils.log_info("TEST OK") utils.log_info("End of regression test for bug %s"%(bug))
def run(utils): bug='83453' utils.log_info("Start regression test for bug %s"%(bug)) if len(utils.get_Username())==0 or len(utils.get_Password())==0: utils.log_info("ERROR: To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") raise GeneralError("","To verify this bug you need access to WMS. You have set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") ssh=utils.open_ssh(utils.get_WMS(),utils.get_Username(),utils.get_Password()) utils.log_info("Prepare jdl file for submission") Job_utils.prepare_collection_job(utils,utils.get_jdl_file(),"/cream-") utils.log_info("Submit collection job") JOBID=utils.run_command("glite-wms-job-submit %s --config %s --nomsg --collection %s/collection_jdls"%(utils.get_delegation_options(),utils.get_config_file(),utils.get_tmp_dir())) utils.log_info("Job submitted successfuly. Returned JOBID: %s",JOBID) output=utils.run_command("glite-wms-job-status -v 0 %s"%(JOBID)) IDS=[] for line in output.split("\n"): if line.find("the Job :")!=-1: IDS.append(line.split("the Job :")[1].strip(" \n\t")) utils.log_info("Check file /var/log/messages") output=utils.execute_remote_cmd(ssh,"grep glite-proxy-renewd /var/log/messages" ) for id in IDS[1:]: utils.log_info("Proxy registration for job %s"%(id)) if output.find("of job %s has been registered as")==-1: ssh.close() utils.log_info("ERROR: Unable to find proxy registration for job %s"%(id)) utils.run_command("glite-wms-job-cancel --noint %s"%(JOBID)) raise GeneralError("Check file /var/log/messages","Unable to find proxy registration for job %s"%(id)) else: utils.log_info("Successful proxy registration for job %s"%(id)) utils.log_info("Wait until job finished") utils.wait_until_job_finishes(JOBID) utils.log_info("Check again file /var/log/messages") output=utils.execute_remote_cmd(ssh,"grep glite-proxy-renewd /var/log/messages" ) for id in IDS[1:]: utils.log_info("Proxy unregistration for job %s"%(id)) if output.find("of job %s has been unregistered")==-1: ssh.close() utils.log_info("ERROR: Unable to find proxy unregistration for job %s"%(id)) raise GeneralError("Check file /var/log/messages","Unable to find proxy unregistration for job %s"%(id)) else: utils.log_info("Successful proxy unregistration for job %s"%(id)) ssh.close() utils.log_info("End of regression test for bug %s"%(bug))