Пример #1
0
 def test_setStartFrom2(self):
     """test DDSIm setStartFrom 2...................................................................."""
     ddsim = DDSim()
     ddsim.setStartFrom(42)
     self.assertEqual(ddsim.startFrom, 42)
Пример #2
0
job.setOutputSandbox(["*.log","*.sh","*.py "])
#job.setOutputData(lcoutputSIM,OutputPath="MyTest/sim1",OutputSE="IN2P3-SRM")
job.setOutputData( SIMoutput,"MyProd_" + ILDConfigVer + "/E250-TDR_ws/" + chann + "/" +ireq+ "/sim","IN2P3-SRM")
#job.setDestinationCE('lyogrid07.in2p3.fr')

job.dontPromptMe()
job.setBannedSites(['LCG.Tau.il'])
#job.setBannedSites(['LCG.IN2P3-CC.fr','LCG.DESYZN.de','LCG.DESY-HH.de','LCG.KEK.jp','OSG.UConn.us','LCG.Cracow.pl','OSG.MIT.us','LCG.Glasgow.uk','OSG.CIT.us','OSG.BNL.us','LCG.Brunel.uk','LCG.RAL-LCG2.uk','LCG.Oxford.uk','OSG.UCSDT2.us'])


sim = DDSim()
sim.setVersion(ILCSoftVer)
sim.setDetectorModel(detModelSim)
sim.setInputFile(lcinputSIM)
sim.setSteeringFile("ddsim_steer.py")
sim.setNumberOfEvents(evtsPrun)
sim.setEnergy(energy)
sim.setOutputFile(lcoutputSIM)
#sim.setRandomSeed(RandSeed)
sim.setStartFrom(evtStart)

simres = job.append(sim)
if not simres['OK']:
   print simres['Not ok appending ddsim to job']
   quit()

print SIMoutput

print job.submit(dirac)

Пример #3
0
 def test_setStartFrom1(self):
     """test DDSIm setStartFrom 1...................................................................."""
     ddsim = DDSim()
     ddsim.setStartFrom("Arg")
     self.assertTrue(ddsim._errorDict)
Пример #4
0
class DDSimTestCase(unittest.TestCase):
    """ Base class for the DDSim test cases
  """
    def setUp(self):
        """set up the objects"""
        self.dds = DDSim({})

    def test_setrandomseed(self):
        self.assertFalse(self.dds._errorDict)
        self.dds.setRandomSeed(89421)
        self.assertFalse(self.dds._errorDict)
        assertEqualsImproved(self.dds.randomSeed, 89421, self)

    def test_setrandomseed_fails(self):
        self.assertFalse(self.dds._errorDict)
        self.dds.setRandomSeed(['abc'])
        self.assertIn('_checkArgs', self.dds._errorDict)

    def test_setstartfrom(self):
        self.assertFalse(self.dds._errorDict)
        self.dds.setStartFrom(89421)
        self.assertFalse(self.dds._errorDict)
        assertEqualsImproved(self.dds.startFrom, 89421, self)

    def test_setstartfrom_fails(self):
        self.assertFalse(self.dds._errorDict)
        self.dds.setStartFrom('adgiuj')
        self.assertIn('_checkArgs', self.dds._errorDict)

    def test_resolvelinkedparams(self):
        step_mock = Mock()
        input_mock = Mock()
        input_mock.getType.return_value = {'abc': False}
        self.dds._linkedidx = 3
        self.dds._jobsteps = [None, None, None, input_mock]
        assertDiracSucceeds(self.dds._resolveLinkedStepParameters(step_mock),
                            self)
        step_mock.setLink.assert_called_once_with('InputFile', {'abc': False},
                                                  'OutputFile')

    def test_resolvelinkedparams_noinputstep(self):
        self.dds._linkedidx = None
        self.dds._inputappstep = []
        assertDiracSucceeds(self.dds._resolveLinkedStepParameters(None), self)

    def test_checkworkflow_app_missing(self):
        self.dds._inputapp = [
            'some_depdency', 'unavailable_dependency_fail_on_this'
        ]
        self.dds._jobapps = ['myjobapp_1', 'some_dependency']
        assertDiracFailsWith(self.dds._checkWorkflowConsistency(),
                             'job order not correct', self)

    def test_checkworkflow_empty(self):
        self.dds._inputapp = []
        self.dds._jobapps = []
        assertDiracSucceeds(self.dds._checkWorkflowConsistency(), self)

    def test_checkworkflow_success(self):
        self.dds._inputapp = [
            'some_dependency', 'other_dependencies', 'many_more'
        ]
        self.dds._jobapps = [
            'ignore_me', 'many_more', 'some_dependency', 'other_dependencies'
        ]
        assertDiracSucceeds(self.dds._checkWorkflowConsistency(), self)

    def test_userjobmodules(self):
        module_mock = Mock()
        assertDiracSucceeds(self.dds._userjobmodules(module_mock), self)

    def test_prodjobmodules(self):
        module_mock = Mock()
        assertDiracSucceeds(self.dds._prodjobmodules(module_mock), self)

    def test_userjobmodules_fails(self):
        with patch('%s._setUserJobFinalization' % MODULE_NAME, new=Mock(return_value=S_OK('something'))),\
             patch('%s._setApplicationModuleAndParameters' % MODULE_NAME, new=Mock(return_value=S_ERROR('some_test_err'))):
            assertDiracFailsWith(self.dds._userjobmodules(None),
                                 'userjobmodules failed', self)

    def test_prodjobmodules_fails(self):
        with patch('%s._setApplicationModuleAndParameters' % MODULE_NAME, new=Mock(return_value=S_OK('something'))), \
             patch('%s._setOutputComputeDataList' % MODULE_NAME, new=Mock(return_value=S_ERROR('some_other_test_err'))):
            assertDiracFailsWith(self.dds._prodjobmodules(None),
                                 'prodjobmodules failed', self)

    def test_checkconsistency(self):
        self.dds.version = '134'
        self.dds.detectorModel = 'mymodel.det'
        self.dds.outputFile = 'myoutput.file'
        self.dds._jobtype = 'User'
        assertDiracSucceeds(self.dds._checkConsistency(Mock()), self)
        self.assertNotIn(
            {
                'outputFile': '@{OutputFile}',
                'outputPath': '@{OutputPath}',
                'outputDataSE': '@{OutputSE}'
            }, self.dds._listofoutput)
        self.assertNotIn('nbevts', self.dds.prodparameters)
        self.assertNotIn('Process', self.dds.prodparameters)

    def test_checkconsistency_nodetectormodel(self):
        self.dds.version = 123
        self.dds.steeringFile = None
        self.dds.detectorModel = None
        assertDiracFailsWith(self.dds._checkConsistency(Mock()),
                             'no detectormodel set', self)

    def test_checkconsistency_noversion(self):
        self.dds.version = None
        assertDiracFailsWith(self.dds._checkConsistency(Mock()),
                             'no version found', self)

    def test_checkconsistency_existsfails(self):
        self.dds.version = '134'
        self.dds.steeringFile = 'mysteer.file'
        with patch('os.path.exists', new=Mock(return_value=False)), \
             patch.object(inspect.getmodule(DDSim), 'Exists', new=Mock(return_value=S_ERROR('testerr_exists_mock'))):
            assertDiracFailsWith(self.dds._checkConsistency(Mock()),
                                 'testerr_exists_mock', self)

    def test_checkconsistency_userjob(self):
        self.dds.version = '134'
        self.dds.steeringFile = 'mysteer.file'
        self.dds._jobtype = 'notUser'
        self.dds.detectorModel = 'myDetectorv200'
        with patch('os.path.exists', new=Mock(return_value=True)), \
             patch.object(inspect.getmodule(DDSim), 'Exists', new=Mock(return_value=S_ERROR('testerr_exists_mock'))):
            assertDiracSucceeds(self.dds._checkConsistency(Mock()), self)
            self.assertIn(
                {
                    'outputFile': '@{OutputFile}',
                    'outputPath': '@{OutputPath}',
                    'outputDataSE': '@{OutputSE}'
                }, self.dds._listofoutput)
            for keyword in ['detectorType', 'slic_detectormodel']:
                self.assertIn(keyword, self.dds.prodparameters)

    def test_checkconsistency_userjob_notdetmodel(self):
        self.dds.version = '134'
        self.dds.steeringFile = 'mysteer.file'
        self.dds._jobtype = 'notUser'
        self.dds.detectorModel = True
        self.dds.setStartFrom(148)
        with patch('os.path.exists', new=Mock(return_value=False)), \
             patch.object(inspect.getmodule(DDSim), 'Exists', new=Mock(return_value=S_OK())):
            assertDiracSucceeds(self.dds._checkConsistency(Mock()), self)
            self.assertIn(
                {
                    'outputFile': '@{OutputFile}',
                    'outputPath': '@{OutputPath}',
                    'outputDataSE': '@{OutputSE}'
                }, self.dds._listofoutput)
            for keyword in ['detectorType', 'slic_detectormodel']:
                self.assertIn(keyword, self.dds.prodparameters)
Пример #5
0
 def test_setStartFrom2( self ):
   """test DDSIm setStartFrom 2...................................................................."""
   ddsim = DDSim()
   ddsim.setStartFrom( 42 )
   self.assertEqual( ddsim.startFrom, 42 )
Пример #6
0
 def test_setStartFrom1( self ):
   """test DDSIm setStartFrom 1...................................................................."""
   ddsim = DDSim()
   ddsim.setStartFrom( "Arg")
   self.assertTrue( ddsim._errorDict )
def main(argv):
    # Input arguments
    ildconfig_version   = "$ILDCONFIGVER"
    ilcsoft_version     = "$ILCSOFTVER"

    evts_per_run    = $EVTSPERRUN
    detector_model  = "$DETECTOR"
    sim_input       = "$SIMINPUT"
    process_name    = "$PROCESS"

    index           = $IND

    sim_input = diracpath_from_pnfspath( sim_input )
    sim_detector_model = detector_model_wo_option( detector_model )

    job_group = ilcsoft_version + "_" + ildconfig_version + "_" + process_name + "_" + detector_model
    dirac = DiracILC(True,job_group+".rep")

    # outputs to be saved onto grid SE
    RECoutput = []

    # DDSim

    evtStart   = (index-1)*evts_per_run
    evtEnd     = index*evts_per_run - 1
    RandSeed = random.randrange(11623, 99999)

    lcinputSIM  = "LFN:" + sim_input
    lcoutputSIM = ilcsoft_version + ".ILDConfig_" + ildconfig_version + ".E1000." + process_name + ".eLpR.evt%s-%s_SIM.slcio"%(str(evtStart),(str)(evtEnd))

    sim = DDSim()
    sim.setVersion(ilcsoft_version)

    sim.setDetectorModel(sim_detector_model)
    sim.setInputFile(lcinputSIM)
    sim.setSteeringFile("ddsim_steer.py")
    sim.setNumberOfEvents(evts_per_run)
    sim.setRandomSeed(RandSeed)
    sim.setEnergy(1000)
    sim.setStartFrom(evtStart)
    sim.setOutputFile(lcoutputSIM)

    # Marlin
    lcoutputDST = ilcsoft_version + ".ILDConfig_" + ildconfig_version + ".E1000." + process_name + ".eLpR.evt%s-%s_DST.slcio"%(str(evtStart),(str)(evtEnd))

    ma = Marlin()
    ma.setVersion(ilcsoft_version)
    ma.setDetectorModel(detector_model)
    ma.setSteeringFile("MarlinStdReco.xml")
    ma.setExtraCLIArguments( "--constant.lcgeo_DIR=$lcgeo_DIR --constant.DetectorModel={} --global.MaxRecordNumber=0".format(detector_model) )
    ma.setLogFile("marlin.log")
    ma.getInputFromApp(sim)
    ma.setEnergy(1000)
    ma.setOutputDstFile(lcoutputDST)

    RECoutput.append(lcoutputDST)

    # ILCDirac user job
    job = UserJob()
    job.setName("user_sim_reco")

    job.setJobGroup(job_group)

    job.setILDConfig(ildconfig_version)
    job.setCPUTime(86400)

    tmp_file_name = process_name + "_sim_reco_job_tmp.py"
    job.setInputSandbox([tmp_file_name])
    job.setOutputSandbox(["*.log","MarlinStdRecoParsed.xml","marlin*.xml","*.py "])

    job.dontPromptMe()
    job.setBannedSites(['LCG.IN2P3-CC.fr','OSG.UConn.us','LCG.Cracow.pl','OSG.MIT.us','LCG.Glasgow.uk','OSG.CIT.us','OSG.BNL.us','LCG.Brunel.uk','LCG.RAL-LCG2.uk','LCG.Oxford.uk','OSG.UCSDT2.us'])

    # run simulation job
    simres = job.append(sim)
    if not simres['OK']:
            print simres['Not ok appending ddsim to job']
            quit()


    # run Malrin reco jobs
    mares = job.append(ma)
    if not mares['OK']:
            print mares['Not ok appending Marlin to job']
            quit()

    job.setOutputData(RECoutput,"ILDPerformance/WWZZSeparation/{}_ILDConfig_{}_{}".format(ilcsoft_version,ildconfig_version,detector_model),"DESY-SRM")
    print RECoutput

    submit_output = job.submit(dirac)
    print submit_output