annotate commons/core/sql/test/Test_F_JobAdaptator.py @ 6:769e306b7933

Change the repository level.
author yufei-luo
date Fri, 18 Jan 2013 04:54:14 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
1 from commons.core.launcher.WriteScript import WriteScript
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
2 from commons.core.sql.Job import Job
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
3 from commons.core.sql.DbFactory import DbFactory
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
4 from commons.core.sql.TableJobAdaptatorFactory import TableJobAdaptatorFactory
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
5 import sys
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
6 import stat
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
7 import os
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
8 import time
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
9 import unittest
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
10 import glob
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
11
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
12 class Test_F_TableJobAdaptator(unittest.TestCase):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
13
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
14 def setUp(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
15 self._jobTableName = "dummyJobTable"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
16 self._iJA = TableJobAdaptatorFactory.createJobInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
17
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
18 def tearDown(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
19 pass
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
20
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
21 def test_submitJob(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
22 job1 = self._createJobInstance("job1")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
23 self._createLauncherFile(job1, self._iJA)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
24 job2 = self._createJobInstance("job2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
25 self._createLauncherFile(job2, self._iJA)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
26 job3 = self._createJobInstance("job3")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
27 self._createLauncherFile(job3, self._iJA)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
28
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
29 self._iJA.submitJob( job1, maxNbWaitingJobs=3, checkInterval=5, verbose=0 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
30 self._iJA.submitJob( job2, maxNbWaitingJobs=3, checkInterval=5, verbose=0 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
31 self._iJA.submitJob( job3, maxNbWaitingJobs=3, checkInterval=5, verbose=0 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
32
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
33 time.sleep(120)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
34
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
35 expErrorFilePrefix1 = job1.jobname + ".e"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
36 expOutputFilePrefix1 = job1.jobname + ".o"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
37 expErrorFilePrefix2 = job2.jobname + ".e"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
38 expOutputFilePrefix2 = job2.jobname + ".o"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
39 expErrorFilePrefix3 = job3.jobname + ".e"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
40 expOutputFilePrefix3 = job3.jobname + ".o"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
41
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
42 lErrorFiles1 = glob.glob(expErrorFilePrefix1 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
43 lOutputFiles1 = glob.glob(expOutputFilePrefix1 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
44 lErrorFiles2 = glob.glob(expErrorFilePrefix2 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
45 lOutputFiles2 = glob.glob(expOutputFilePrefix2 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
46 lErrorFiles3 = glob.glob(expErrorFilePrefix3 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
47 lOutputFiles3 = glob.glob(expOutputFilePrefix3 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
48
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
49 isLErrorFileNotEmpty1 = (len(lErrorFiles1) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
50 isLOutputFileNotEmpty1 = (len(lOutputFiles1) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
51 isLErrorFileNotEmpty2 = (len(lErrorFiles2) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
52 isLOutputFileNotEmpty2 = (len(lOutputFiles2) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
53 isLErrorFileNotEmpty3 = (len(lErrorFiles3) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
54 isLOutputFileNotEmpty3 = (len(lOutputFiles3) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
55
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
56 os.system("rm launcherFileTest*.py *.e* *.o*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
57 self.assertTrue(isLErrorFileNotEmpty1 and isLOutputFileNotEmpty1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
58 self.assertTrue(isLErrorFileNotEmpty2 and isLOutputFileNotEmpty2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
59 self.assertTrue(isLErrorFileNotEmpty3 and isLOutputFileNotEmpty3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
60
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
61 def test_submit_and_waitJobGroup(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
62 iJob = self._createJobInstance("test")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
63 self._createLauncherFile(iJob, self._iJA)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
64
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
65 self._iJA.submitJob( iJob, maxNbWaitingJobs=3, checkInterval=5, verbose=0 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
66 self._iJA.waitJobGroup(iJob.groupid, 0, 2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
67
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
68 expErrorFilePrefix1 = iJob.jobname + ".e"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
69 expOutputFilePrefix1 = iJob.jobname + ".o"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
70
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
71 lErrorFiles1 = glob.glob(expErrorFilePrefix1 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
72 lOutputFiles1 = glob.glob(expOutputFilePrefix1 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
73
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
74 isLErrorFileExist = (len(lErrorFiles1) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
75 isLOutputFileExist = (len(lOutputFiles1) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
76 os.system("rm launcherFileTest*.py *.e* *.o*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
77 self.assertTrue(isLErrorFileExist and isLOutputFileExist)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
78
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
79 def _createJobInstance(self, name):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
80 lResources = []
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
81 if os.environ.get("HOSTNAME") == "compute-2-46.local":
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
82 lResources.append("test=TRUE")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
83 return Job(0, name, "test", "", "log = os.system(\"date;sleep 5;date\")", "%s/launcherFileTest_%s.py" % (os.getcwd(), name), lResources=lResources)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
84
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
85 def _createLauncherFile(self, iJob, iJA):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
86 iWriteScript = WriteScript(iJob, iJA, os.getcwd(), os.getcwd(), False, True)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
87 iWriteScript.run(iJob.command, "", iJob.launcher)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
88 os.chmod(iJob.launcher, stat.S_IRWXU+stat.S_IRWXG+stat.S_IRWXO)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
89
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
90 if __name__ == "__main__":
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
91 unittest.main()