Ejemplo n.º 1
0
    def test_min2(self):
        """this tests executes a job that requires at least 2 processors"""

        j = Job()

        j.setName("MP-test-min2")

        # FIXME: the number of processors should be discovered at runtime using JobParameters.getNumberOfJobProcessors()
        # here, and later
        j.setExecutable(self.mpExeFlex, arguments="2")
        j.setInputSandbox(
            find_all("mpTest-flexible.py", rootPath,
                     "DIRAC/tests/Utilities")[0])
        j.setNumberOfProcessors(
            minNumberOfProcessors=2)  # This requires at least 2 processors
        j.setLogLevel("DEBUG")
        try:
            # This is the standard location in Jenkins
            j.setInputSandbox(
                find_all("pilot.cfg",
                         os.environ["WORKSPACE"] + "/PilotInstallDIR")[0])
        except (IndexError, KeyError):
            j.setInputSandbox(find_all("pilot.cfg", rootPath)[0])
        j.setConfigArgs("pilot.cfg")
        res = j.runLocal(self.d)
        self.assertTrue(res["OK"])
Ejemplo n.º 2
0
    def test_fixed(self):
        """this tests executes a job that requires exactly 4 processors"""

        j = Job()

        j.setName("MP-test")
        j.setExecutable(self.mpExe)
        j.setInputSandbox(
            find_all("mpTest.py", rootPath, "DIRAC/tests/Utilities")[0])
        j.setNumberOfProcessors(
            4)  # This requires a fixed number of processors
        j.setLogLevel("DEBUG")
        try:
            # This is the standard location in Jenkins
            j.setInputSandbox(
                find_all("pilot.cfg",
                         os.environ["WORKSPACE"] + "/PilotInstallDIR")[0])
        except (IndexError, KeyError):
            j.setInputSandbox(find_all("pilot.cfg", rootPath)[0])
        j.setConfigArgs("pilot.cfg")
        res = j.runLocal(self.d)
        if multiprocessing.cpu_count() > 1:
            self.assertTrue(res["OK"])
        else:
            self.assertFalse(res["OK"])
Ejemplo n.º 3
0
    def test_min2max4(self):
        """ this tests executes a job that requires 2 to 4 processors
    """

        j = Job()

        j.setName("MP-test-min2max4")
        j.setExecutable(self.mpExeFlex, arguments='2')
        j.setInputSandbox(
            find_all('mpTest-flexible.py', rootPath,
                     'DIRAC/tests/Utilities')[0])
        j.setNumberOfProcessors(
            minNumberOfProcessors=2,
            maxNumberOfProcessors=4)  # This requires 2 to 4 processors
        j.setLogLevel('DEBUG')
        try:
            # This is the standard location in Jenkins
            j.setInputSandbox(
                find_all('pilot.cfg',
                         os.environ['WORKSPACE'] + '/PilotInstallDIR')[0])
        except (IndexError, KeyError):
            j.setInputSandbox(find_all('pilot.cfg', rootPath)[0])
        j.setConfigArgs('pilot.cfg')
        res = j.runLocal(self.d)
        self.assertTrue(res['OK'])
Ejemplo n.º 4
0
def test_MPJob(proc, minProc, maxProc, expectedProc, expectedMinProc, expectedMaxProc):

    job = Job()
    job.setExecutable("myExec")
    job.setLogLevel("DEBUG")
    job.setNumberOfProcessors(proc, minProc, maxProc)
    jdl = job._toJDL()
    clad = ClassAd("[" + jdl + "]")
    processors = clad.getAttributeInt("NumberOfProcessors")
    minProcessors = clad.getAttributeInt("MinNumberOfProcessors")
    maxProcessors = clad.getAttributeInt("MaxNumberOfProcessors")
    assert processors == expectedProc
    assert minProcessors == expectedMinProc
    assert maxProcessors == expectedMaxProc
Ejemplo n.º 5
0
def test_MPJob(proc, minProc, maxProc, expectedProc, expectedMinProc,
               expectedMaxProc):

    job = Job()
    job.setExecutable('myExec')
    job.setLogLevel('DEBUG')
    job.setNumberOfProcessors(proc, minProc, maxProc)
    jdl = job._toJDL()
    clad = ClassAd('[' + jdl + ']')
    processors = clad.getAttributeInt('NumberOfProcessors')
    minProcessors = clad.getAttributeInt('MinNumberOfProcessors')
    maxProcessors = clad.getAttributeInt('MaxNumberOfProcessors')
    assert processors == expectedProc
    assert minProcessors == expectedMinProc
    assert maxProcessors == expectedMaxProc
Ejemplo n.º 6
0
    def test_execute(self):
        """ this one tests that I can execute a job that requires multi-processing
    """

        j = Job()

        j.setName("MP-test")
        j.setExecutable(self.mpExe)
        j.setInputSandbox(
            find_all('mpTest.py', rootPath, 'DIRAC/tests/Utilities')[0])
        j.setNumberOfProcessors(4)
        j.setLogLevel('DEBUG')
        res = j.runLocal(self.d)
        if multiprocessing.cpu_count() > 1:
            self.assertTrue(res['OK'])
        else:
            self.assertFalse(res['OK'])
Ejemplo n.º 7
0
    def test_min1(self):
        """this tests executes a job that requires at least 1 processor"""

        j = Job()

        j.setName("MP-test-min1")
        j.setExecutable(self.mpExeFlex, arguments="2")
        j.setInputSandbox(
            find_all("mpTest-flexible.py", rootPath,
                     "DIRAC/tests/Utilities")[0])
        j.setNumberOfProcessors(
            minNumberOfProcessors=1)  # This requires 1 to infinite processors
        j.setLogLevel("DEBUG")
        try:
            # This is the standard location in Jenkins
            j.setInputSandbox(
                find_all("pilot.cfg",
                         os.environ["WORKSPACE"] + "/PilotInstallDIR")[0])
        except (IndexError, KeyError):
            j.setInputSandbox(find_all("pilot.cfg", rootPath)[0])
        j.setConfigArgs("pilot.cfg")
        res = j.runLocal(self.d)
        self.assertTrue(res["OK"])
Ejemplo n.º 8
0
# Simple Hello Word job to DIRAC.Jenkins.ch
gLogger.info("\n Submitting hello world job targeting DIRAC.Jenkins.ch")
helloJ = Job()
helloJ.setName("helloWorld-TEST-TO-Jenkins")
helloJ.setInputSandbox([find_all('exe-script.py', '..', '/DIRAC/tests/Workflow/')[0]])
helloJ.setExecutable("exe-script.py", "", "helloWorld.log")
helloJ.setCPUTime(1780)
helloJ.setDestination('DIRAC.Jenkins.ch')
helloJ.setLogLevel('DEBUG')
result = dirac.submitJob(helloJ)
gLogger.info("Hello world job: ", result)
if not result['OK']:
  gLogger.error("Problem submitting job", result['Message'])
  exit(1)

# Simple Hello Word job to DIRAC.Jenkins.ch, that needs to be matched by a MP WN
gLogger.info("\n Submitting hello world job targeting DIRAC.Jenkins.ch and a MP WN")
helloJMP = Job()
helloJMP.setName("helloWorld-TEST-TO-Jenkins-MP")
helloJMP.setInputSandbox([find_all('exe-script.py', '..', '/DIRAC/tests/Workflow/')[0]])
helloJMP.setExecutable("exe-script.py", "", "helloWorld.log")
helloJMP.setCPUTime(1780)
helloJMP.setDestination('DIRAC.Jenkins.ch')
helloJMP.setLogLevel('DEBUG')
helloJMP.setNumberOfProcessors(2)
result = dirac.submitJob(helloJMP)  # this should make the difference!
gLogger.info("Hello world job MP: ", result)
if not result['OK']:
  gLogger.error("Problem submitting job", result['Message'])
  exit(1)