def test_logic(utils,dest_CE): JOBID=Job_utils.submit_wait_finish(utils,"") #Check for job status logging.info("Check job stauts") utils.job_status(JOBID) if utils.get_job_status()=="Aborted": logging.info("Job status is Aborted") else: logging.error("Job status is not Aborted") raise GeneralError("","Error !!! Job status is not Aborted") result=utils.run_command_continue_on_error("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 : logging.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)) logging.info("Test OK")
def run(utils): bug='38359' logging.info("Start regression test for bug %s"%(bug)) logging.warning("To verify this bug you need access to WMS. You have to set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") ssh=utils.open_ssh(utils.get_WMS(),utils.get_Username(),utils.get_Password()) logging.info("Set MaxOutputSandoxSize=100; to glite_wms.conf at WMS") logging.info("Set MaxOutputSandboxSize=100; to glite_wms.conf at WMS") utils.change_remote_file(ssh,"/etc/glite-wms/glite_wms.conf", ['MaxOutputSandboxSize'],['*'],['100']) logging.info("Restart Workload Manager glite-wms-wm") utils.execute_remote_cmd(ssh,"/etc/init.d/glite-wms-wm restart") logging.info("Submit the job and wait to finish") utils.use_external_jdl("%s.jdl"%(bug)) JOBID=Job_utils.submit_wait_finish(utils,"") logging.info("Get job output") Job_utils.output_normal_job(utils,JOBID) #Check job output logging.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())) : logging.info("Output files are collectly retrieved") else: logging.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 logging.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 : logging.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") logging.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() logging.info("End of regression test for bug %s"%(bug))
def run(utils): bug='28642' logging.info("Start regression test for bug %s"%(bug)) logging.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 logging.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())) : logging.info("Output files are collectly retrieved") else: logging.error("Output files are not correctly retrieved") raise GeneralError("","Output files are not correctly retrieved") #Check the content of env.out file logging.info("Check the content of the env.out file") result=utils.run_command_continue_on_error("cat %s/env.out"%(utils.get_job_output_dir())) if result.find("LD_LIBRARY_PATH=.") != -1 : logging.info("Environment variable LD_LIBRARY_PATH has value '.' as expected") else: logging.error("Error value of environment variable LD_LIBRARY_PATH") raise GeneralError("","Error !!! Error value of environment variable LD_LIBRARY_PATH") logging.info("End of regression test for bug %s",bug)
def run(utils): bug = "48636" logging.info("Start regression test for bug %s" % (bug)) logging.warning( "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()) logging.info("Set MaxOutputSandboxSize=50M; to glite_wms.conf at WMS") utils.change_remote_file(ssh, "/etc/glite-wms/glite_wms.conf", ["MaxOutputSandboxSize"], ["*"], ["50M"]) logging.info("Restart workload manager glite-wms-wm") utils.execute_remote_cmd(ssh, "/etc/init.d/glite-wms-wm restart") logging.info("Submit the job and wait to finish") utils.use_external_jdl("%s.jdl" % (bug)) JOBID = Job_utils.submit_wait_finish(utils, "") logging.info("Check job status") result = utils.run_command_continue_on_error("glite-wms-job-logging-info -v 3 --event UserTag %s" % (JOBID)) if result.find("OSB quota exceeded for") == -1: logging.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: logging.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" ) logging.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() logging.info("End of regression test for bug %s" % (bug))
def run(utils): bug='36145' logging.info("Start regression test for bug %s"%(bug)) logging.warning("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()) logging.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") logging.info("Submit the job and wait to finish") utils.use_external_jdl("%s.jdl"%(bug)) logging.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) logging.info("Check job's final status") utils.job_status(JOBID) if utils.JOBSTATUS.find('Done (Success)') == -1 : logging.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: logging.info("Job finished successfully.") logging.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() logging.info("End of regression test for bug %s"%(bug))
def run(utils): bug='36536' logging.info("Start regression test for bug %s"%(bug)) logging.warning("To verify this bug you need access to LBProxy DATABASE. You have to set USERNAME and PASSWORD attributes at configuration file") if utils.WMS_USERNAME=='' or utils.WMS_PASSWORD=='' or utils.USERNAME=='' or utils.PASSWORD=='' : logging.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()) logging.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,"") logging.info("Create SQL script file") utils.execute_remote_cmd(ssh,"echo \"SELECT * FROM jobs WHERE dg_jobid like '%%%s%%';\" > /root/test.sql"%(JOBID)) logging.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: logging.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)) logging.info("Get job output") Job_utils.output_normal_job(utils,JOBID) #Check LBProxy logging.info("Check again the job record in LBProxy database") output=utils.execute_remote_cmd(ssh,mysql_cmd) if output.find(JOBID)!=-1: logging.error("Job's record in LBProxy database has not been removed.") raise GeneralError("","Job's record in LBProxy database has not been removed.") logging.info("End of regression test for bug %s"%(bug))
def run(utils): bug='73699' logging.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 logging.info("Check job stauts") utils.job_status(JOBID) if utils.get_job_status()=="Aborted": logging.info("Job status is Aborted") else: logging.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)": logging.error("Wrong reason: %s"%(reason)) raise GeneralError("Check aborted reason","Wrong reason: %s"%(reason)) else: logging.info("Retry count is 3 as expected") # Check the number of resubmission events logging.info("Check the number of resubmission events") result=utils.run_command_continue_on_error("glite-wms-job-logging-info -v 2 --event Resubmission %s"%(JOBID)).count("WILLRESUB") if result == 7 : logging.info("Test PASS") else: logging.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)) logging.info("End of regression test for bug %s",bug)
def run(utils): bug='73715' logging.info("Start regression test for bug %s"%(bug)) # we need to test both lcg CE and CREAM CE for dest in ("/cream-", "2119/jobmanager") : logging.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 : logging.info("Look for the ReallyRunning event from LogMonitor in the logging info") result=utils.run_command_continue_on_error("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: logging.error("Not found ReallyRunning event from LogMonitor") raise GeneralError("Check ReallyRunning events","Not found ReallyRunning event from LogMonitor") else: logging.info("Found ReallyRunning event from LogMonitor as expected. Test PASS") else: logging.error("Job not finished successfully. Retry the test.") raise RetryError("Check job final status","Job not finished successfully.") logging.info("End of regression test for bug %s"%(bug))
def run(utils): bug='75223' logging.info("Start regression test for bug %s"%(bug)) logging.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) logging.info("Check if failed reason is 'Prologue failed with error 1'") result=utils.run_command_continue_on_error("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': logging.error("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 logging.info("End of regression test for bug %s"%(bug))
def run(utils): bug='92922' logging.info("Start regression test for bug %s"%(bug)) logging.info("Prepare jdl file for submission") utils.use_external_jdl("%s.jdl"%(bug)) JOBID=Job_utils.submit_wait_finish(utils) logging.info("Check job's exit code") output=utils.run_command_continue_on_error("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: logging.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: logging.info("Job's final status is 'Done(Exit Code !=0)' as expected") if int(exit_code)==0: logging.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: logging.info("Job's exit code is not 0 as expected") logging.info("End of regression test for bug %s"%(bug))
def run(utils): bug='79141' logging.info("Start regression test for bug %s"%(bug)) logging.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_continue_on_error("glite-wms-job-info --jdl %s"%(JOBID)) if (jdl.find("input/Makefile") == -1 or jdl.find("input/Test0") == -1): logging.error("Final submitted jdl (%s) is not correct"%(jdl)) raise GeneralError("Check submitted jdl","Final submitted jdl (%s) is not correct"%(jdl)) logging.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): logging.info("Basic output directory exists") else: logging.error("Basic output directory does not exist") raise GeneralError("Check output files","Basic output directory does not exist") logging.info("Check if node directory is correctly created") if os.path.isdir("%s/Node_0"%(DIR)) : logging.info("Node directory is collectly created") else: logging.error("Node directory is not collectly created") raise GeneralError("Check output files","Node directories are not correctly created") logging.info("Check if the output files are correctly retrieved") if os.path.isfile("%s/Node_0/output.txt"%(DIR)) : logging.info("Output files are collectly retrieved") else: logging.error("Output files are not collectly retrieved") raise GeneralError("Check output files","Output files are not collectly retrieved") logging.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")): logging.info("Both files are listed at output.txt") else: logging.error("Not both files are listed at output.txt") raise GeneralError("Check output file","Not both files are listed at output.txt") else: logging.error("Job not finished successfully. Retry the test.") raise RetryError("Check job final status","Job not finished successfully.") logging.info("End of regression test for bug %s"%(bug))
def run(utils): bug='58878' logging.info("Start regression test for bug %s"%(bug)) logging.warning("To verify this bug you need access to WMS. You have to set WMS_USERNAME and WMS_PASSOWRD attributes at configuration file") ssh=utils.open_ssh(utils.get_WMS(),utils.get_Username(),utils.get_Password()) logging.info("CASE 1 : Use LCG-CE") logging.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" logging.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") logging.info("Submit the job to LCG-CE and wait to finish") JOBID=Job_utils.submit_wait_finish(utils,"2119/jobmanager") logging.info("Check job status") output=utils.run_command_continue_on_error("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_continue_on_error("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_continue_on_error("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_continue_on_error("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_continue_on_error("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() logging.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: logging.info("CASE 1 OK.\n Passed: %s \nExpected: %s"%(arguments,target)) logging.info("CASE 2 : Use CREAM CE") utils.use_utils_jdl() utils.set_jdl(utils.get_jdl_file()) smp_granularity=1 mpi_type="mvapich_gcc4" logging.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-") logging.info("Submit the job to CREAM CE and wait to finish") JOBID=Job_utils.submit_wait_finish(utils,"/cream-") logging.info("Check job status") output=utils.run_command_continue_on_error("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_continue_on_error("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_continue_on_error("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_continue_on_error("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_continue_on_error("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() logging.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: logging.info("CASE 2 OK.\n Passed: %s \nExpected: %s"%(arguments,target)) logging.info("TEST OK") logging.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() logging.info("End of regression test for bug %s"%(bug))
def run(utils): bug = "45883" logging.info("Start regression test for bug %s" % (bug)) utils.use_external_jdl("%s.jdl" % (bug)) logging.info("Get availabe CEs for job submission") result = utils.run_command_continue_on_error( "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]) logging.info("Submit job and wait to finish") JOBID = Job_utils.submit_wait_finish(utils, "") logging.info("Check job final stauts") utils.job_status(JOBID) if utils.get_job_status() == "Aborted": logging.info("Job status is Aborted") else: logging.error("Job status is not Aborted") raise GeneralError("Check job status", "Error !!! Job status is not Aborted") logging.info("Get the used CEs") result = utils.run_command_continue_on_error("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]) logging.info("Check the used CEs") z = set(available_ces) & set(used_ces) if len(available_ces) <= 4: if len(z) != len(available_ces): logging.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: logging.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)), ) logging.info("TEST OK") logging.info("End of regression test for bug %s", bug)