annotate commons/core/sql/test/Tst_F_RepetJob.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 import os
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
2 import time
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
3 import sys
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
4 import stat
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
5 import unittest
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
6 import glob
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
7 from commons.core.sql.DbMySql import DbMySql
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
8 from commons.core.sql.RepetJob import RepetJob
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
9 from commons.core.sql.Job import Job
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
10
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
11 class Test_F_RepetJob(unittest.TestCase):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
12
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
13 def setUp(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
14 self._jobTableName = "dummyJobTable"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
15 self._db = DbMySql()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
16 self._iRepetJob = RepetJob()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
17 self._configFileName = "dummyConfigFile"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
18 configF = open(self._configFileName, "w" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
19 configF.write( "[repet_env]\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
20 configF.write( "repet_host: %s\n" % ( os.environ["REPET_HOST"] ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
21 configF.write( "repet_user: %s\n" % ( os.environ["REPET_USER"] ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
22 configF.write( "repet_pw: %s\n" % ( os.environ["REPET_PW"] ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
23 configF.write( "repet_db: %s\n" % ( os.environ["REPET_DB"] ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
24 configF.write( "repet_port: %s\n" % ( os.environ["REPET_PORT"] ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
25 configF.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
26
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
27 def tearDown(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
28 self._iRepetJob = None
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
29 self._db.dropTable( self._jobTableName )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
30 self._db.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
31 os.remove(self._configFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
32
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
33 def test_submitJob_with_multiple_jobs(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
34 job1 = self._createJobInstance("job1")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
35 self._createLauncherFile(job1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
36
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
37 job2 = self._createJobInstance("job2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
38 self._createLauncherFile(job2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
39
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
40 job3 = self._createJobInstance("job3")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
41 self._createLauncherFile(job3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
42
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
43 self._iRepetJob.submitJob( job1, maxNbWaitingJobs=3, checkInterval=5, verbose=0 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
44 self._iRepetJob.submitJob( job2, maxNbWaitingJobs=3, checkInterval=5, verbose=0 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
45 self._iRepetJob.submitJob( job3, maxNbWaitingJobs=3, checkInterval=5, verbose=0 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
46
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
47 time.sleep(70)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
48
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
49 expJobStatus = "finished"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
50 obsJobStatus1 = self._iRepetJob.getJobStatus(job1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
51 obsJobStatus2 = self._iRepetJob.getJobStatus(job2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
52 obsJobStatus3 = self._iRepetJob.getJobStatus(job3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
53
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
54 self.assertEquals(expJobStatus, obsJobStatus1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
55 self.assertEquals(expJobStatus, obsJobStatus2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
56 self.assertEquals(expJobStatus, obsJobStatus3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
57
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
58 jobName1 = job1.jobname
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
59 jobName2 = job2.jobname
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
60 jobName3 = job3.jobname
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
61
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
62 expErrorFilePrefix1 = jobName1+ ".e"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
63 expOutputFilePrefix1 = jobName1 + ".o"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
64 expErrorFilePrefix2 = jobName2 + ".e"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
65 expOutputFilePrefix2 = jobName2 + ".o"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
66 expErrorFilePrefix3 = jobName3 + ".e"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
67 expOutputFilePrefix3 = jobName3 + ".o"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
68
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
69 lErrorFiles1 = glob.glob(expErrorFilePrefix1 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
70 lOutputFiles1 = glob.glob(expOutputFilePrefix1 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
71 lErrorFiles2 = glob.glob(expErrorFilePrefix2 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
72 lOutputFiles2 = glob.glob(expOutputFilePrefix2 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
73 lErrorFiles3 = glob.glob(expErrorFilePrefix3 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
74 lOutputFiles3 = glob.glob(expOutputFilePrefix3 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
75
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
76 isLErrorFileNotEmpty1 = (len(lErrorFiles1) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
77 isLOutputFileNotEmpty1 = (len(lOutputFiles1) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
78 isLErrorFileNotEmpty2 = (len(lErrorFiles2) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
79 isLOutputFileNotEmpty2 = (len(lOutputFiles2) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
80 isLErrorFileNotEmpty3 = (len(lErrorFiles3) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
81 isLOutputFileNotEmpty3 = (len(lOutputFiles3) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
82
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
83 os.system("rm launcherFileTest*.py *.e* *.o*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
84 self.assertTrue(isLErrorFileNotEmpty1 and isLOutputFileNotEmpty1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
85 self.assertTrue(isLErrorFileNotEmpty2 and isLOutputFileNotEmpty2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
86 self.assertTrue(isLErrorFileNotEmpty3 and isLOutputFileNotEmpty3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
87
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
88 def test_submitJob_job_already_submitted(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
89 self._iRepetJob.createTable(self._jobTableName, "jobs")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
90 iJob = self._createJobInstance("job")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
91 self._iRepetJob.recordJob(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
92
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
93 isSysExitRaised = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
94 try:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
95 self._iRepetJob.submitJob(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
96 except SystemExit:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
97 isSysExitRaised = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
98 self.assertTrue(isSysExitRaised)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
99
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
100 def test_waitJobGroup_with_several_nbTimeOut_waiting(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
101 self._iRepetJob.createTable(self._jobTableName, "jobs")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
102 iJob = self._createJobInstance("job")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
103 self._createLauncherFile(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
104 self._iRepetJob.recordJob(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
105 self._iRepetJob.changeJobStatus(iJob, "running", "method")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
106
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
107 expMsg = "ERROR: job '%s', supposedly still running, is not handled by SGE anymore\n" % ( iJob.jobid )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
108
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
109 obsError = "obsError.txt"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
110 obsErrorHandler = open(obsError, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
111 stderrRef = sys.stderr
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
112 sys.stderr = obsErrorHandler
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
113
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
114 isSysExitRaised = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
115 try:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
116 self._iRepetJob.waitJobGroup(self._jobTableName ,iJob.groupid, timeOutPerJob=3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
117 except SystemExit:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
118 isSysExitRaised = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
119
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
120 obsErrorHandler.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
121
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
122 obsErrorHandler = open(obsError, "r")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
123 obsMsg = obsErrorHandler.readline()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
124 obsErrorHandler.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
125
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
126 sys.stderr = stderrRef
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
127 os.remove(obsError)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
128 os.system("rm launcherFileTest*.py")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
129 self.assertTrue(isSysExitRaised)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
130 self.assertEquals(expMsg, obsMsg)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
131
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
132 def test_waitJobGroup_with_error_job_maxRelaunch_two(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
133 self._iRepetJob.createTable(self._jobTableName, "jobs")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
134 iJob = self._createJobInstance("job")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
135 self._createLauncherFile(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
136
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
137 self._iRepetJob.recordJob(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
138 self._iRepetJob.changeJobStatus(iJob, "error", "method")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
139
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
140 self._iRepetJob.waitJobGroup(self._jobTableName ,iJob.groupid, 0, 2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
141
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
142 time.sleep(10)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
143
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
144 expJobStatus = "finished"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
145 obsJobStatus1 = self._iRepetJob.getJobStatus(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
146
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
147 self.assertEquals(expJobStatus, obsJobStatus1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
148
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
149 jobName = iJob.jobname
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
150
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
151 expErrorFilePrefix1 = jobName + ".e"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
152 expOutputFilePrefix1 = jobName + ".o"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
153
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
154 lErrorFiles1 = glob.glob(expErrorFilePrefix1 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
155 lOutputFiles1 = glob.glob(expOutputFilePrefix1 + "*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
156
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
157 isLErrorFileNotEmpty1 = (len(lErrorFiles1) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
158 isLOutputFileNotEmpty1 = (len(lOutputFiles1) != 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
159
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
160 self._iRepetJob.removeJob(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
161 os.system("rm launcherFileTest*.py *.e* *.o*")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
162 self.assertTrue(isLErrorFileNotEmpty1 and isLOutputFileNotEmpty1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
163
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
164
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
165 def test_isJobStillHandledBySge_True(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
166 self._iRepetJob.createTable(self._jobTableName, "jobs")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
167 iJob = self._createJobInstance("job")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
168 self._createLauncherFile(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
169 self._iRepetJob.submitJob(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
170
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
171 isJobHandledBySge = self._iRepetJob.isJobStillHandledBySge(iJob.jobid, iJob.jobname)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
172 os.system("rm launcherFileTest*.py")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
173
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
174 self.assertTrue(isJobHandledBySge)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
175
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
176 def test_isJobStillHandledBySge_False(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
177 self._iRepetJob.createTable(self._jobTableName, "jobs")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
178 iJob = self._createJobInstance("job")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
179 self._createLauncherFile(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
180 self._iRepetJob.recordJob(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
181
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
182 isJobHandledBySge = self._iRepetJob.isJobStillHandledBySge(iJob.jobid, iJob.jobname)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
183 os.system("rm launcherFileTest*.py")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
184
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
185 self.assertFalse(isJobHandledBySge)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
186
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
187 def _createJobInstance(self, name):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
188 return Job(self._jobTableName, 0, name, "test", "", "date;sleep 5;date", "./launcherFileTest_"+ name +".py")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
189
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
190 def _createLauncherFile(self, iJob):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
191 jobFileHandler = open( iJob.launcher , "w" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
192
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
193 launcher = "#!/usr/bin/python\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
194 launcher += "import os\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
195 launcher += "import sys\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
196
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
197 launcher += "print \"system:\", os.uname()\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
198 launcher += "sys.stdout.flush()\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
199 newStatus = "running"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
200 prg = "%s/bin/srptChangeJobStatus.py" % (os.environ["REPET_PATH"])
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
201 cmd = prg
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
202 cmd += " -t %s" % ( iJob.tablename )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
203 cmd += " -n %s" % ( iJob.jobname )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
204 cmd += " -g %s" % ( iJob.groupid )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
205 if iJob.queue != "":
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
206 cmd += " -q %s" % ( iJob.queue )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
207 cmd += " -s %s" % ( newStatus )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
208 cmd += " -c %s" %( self._configFileName )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
209 cmd += " -v 1"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
210 launcher +="os.system( \"" + cmd + "\" )\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
211
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
212 launcher += "print \"LAUNCH: "+ iJob.command + "\"\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
213 launcher += "sys.stdout.flush()\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
214 launcher += "exitStatus = os.system (\"" + iJob.command + "\")\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
215 launcher += "if exitStatus != 0:\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
216 launcher += "\tprint \"ERROR: "+ iJob.command + " returned exit status '%i'\" % ( exitStatus )\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
217
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
218 newStatus = "finished"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
219 prg = os.environ["REPET_PATH"] + "/bin/srptChangeJobStatus.py"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
220 cmd = prg
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
221 cmd += " -t %s" % ( iJob.tablename )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
222 cmd += " -n %s" % ( iJob.jobname )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
223 cmd += " -g %s" % ( iJob.groupid )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
224 if iJob.queue != "":
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
225 cmd += " -q %s" % ( iJob.queue )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
226 cmd += " -s %s" % ( newStatus )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
227 cmd += " -c %s" %( self._configFileName )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
228 cmd += " -v 1"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
229 launcher +="os.system( \"" + cmd + "\" )\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
230 launcher += "sys.exit(0)\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
231 jobFileHandler.write(launcher)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
232 jobFileHandler.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
233 os.chmod( iJob.launcher, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
234
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
235 if __name__ == "__main__":
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
236 unittest.main()