annotate commons/core/sql/test/Test_TableJobAdaptator.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 unittest
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
2 import sys
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
3 import os
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
4 import time
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
5 #import stat
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
6 #import threading
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.DbSQLite import DbSQLite
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 from commons.core.utils.FileUtils import FileUtils
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
11 from commons.core.sql.TableJobAdaptatorFactory import TableJobAdaptatorFactory
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
12
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
13 #class Test_TableJobAdaptator_SQLite( unittest.TestCase ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
14 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
15 # def setUp(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
16 # self._jobTableName = "dummyJobTable"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
17 # self._dbName = "test.db"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
18 # self._db = DbSQLite(self._dbName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
19 # self._iTJA = TableJobAdaptator(self._db, self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
20 # if not self._db.doesTableExist(self._jobTableName):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
21 # self._db.createJobTable(self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
22 # self._iJob = self._createJobInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
23 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
24 # def tearDown(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
25 # self._iTJA = None
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
26 # self._db.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
27 ## self._db.delete()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
28 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
29 ## def test_recordJob(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
30 ## self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
31 ## qryParams = "SELECT jobid, groupid, command, launcher, queue, status, node FROM " + self._jobTableName + " WHERE jobid = ?"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
32 ## params = (self._iJob.jobid,)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
33 ## self._db.execute(qryParams, params)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
34 ## tObs = self._db.fetchall()[0]
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
35 ## tExp =(self._iJob.jobid, self._iJob.groupid, self._iJob.command, self._iJob.launcher, self._iJob.queue, "waiting", "?")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
36 ## self.assertEquals(tExp,tObs)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
37 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
38 ## def test_removeJob(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
39 ## self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
40 ## self._iTJA.removeJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
41 ## self.assertTrue(self._db.isEmpty(self._jobTableName))
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
42 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
43 ## def test_getJobStatus(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
44 ## self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
45 ## expStatus = "waiting"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
46 ## obsStatus = self._iTJA.getJobStatus(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
47 ## self.assertEquals(expStatus, obsStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
48 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
49 ## def test_getJobStatus_no_job(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
50 ## expStatus = "unknown"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
51 ## obsStatus = self._iTJA.getJobStatus(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
52 ## self.assertEquals(expStatus, obsStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
53 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
54 ## def test_getJobStatus_no_name(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
55 ## iJob = Job( self._jobTableName, 20, "", "groupid", "queue", "command", "launcherFile", "node", "lResources" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
56 ## expStatus = "unknown"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
57 ## obsStatus = self._iTJA.getJobStatus(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
58 ## self.assertEquals(expStatus, obsStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
59 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
60 ## def test_getJobStatus_two_jobs(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
61 ## # Warning : this case will not append, because recordJob() begin by removeJob()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
62 ## sqlCmd = "INSERT INTO %s" % self._iJob.tablename
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
63 ## sqlCmd += " VALUES ("
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
64 ## sqlCmd += " \"%s\"," % self._iJob.jobid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
65 ## sqlCmd += " \"%s\"," % self._iJob.jobname
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
66 ## sqlCmd += " \"%s\"," % self._iJob.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
67 ## sqlCmd += " \"%s\"," % self._iJob.command.replace("\"","\'")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
68 ## sqlCmd += " \"%s\"," % self._iJob.launcher
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
69 ## sqlCmd += " \"%s\"," % self._iJob.queue
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
70 ## sqlCmd += " \"waiting\","
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
71 ## sqlCmd += " \"%s\"," % time.strftime( "%Y-%m-%d %H:%M:%S" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
72 ## sqlCmd += " \"?\" );"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
73 ## self._db.execute(sqlCmd)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
74 ## self._db.execute(sqlCmd)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
75 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
76 ## expError = "expError.txt"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
77 ## expErrorHandler = open(expError, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
78 ## expErrorHandler.write("ERROR while getting job status: non-unique jobs\n")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
79 ## expErrorHandler.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
80 ## obsError = "obsError.txt"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
81 ## obsErrorHandler = open(obsError, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
82 ## stderrRef = sys.stderr
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
83 ## sys.stderr = obsErrorHandler
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
84 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
85 ## isSysExitRaised = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
86 ## try:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
87 ## self._iTJA.getJobStatus(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
88 ## except SystemExit:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
89 ## isSysExitRaised = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
90 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
91 ## obsErrorHandler.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
92 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
93 ## self.assertTrue(isSysExitRaised)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
94 ## self.assertTrue(FileUtils.are2FilesIdentical(expError, obsError))
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
95 ## sys.stderr = stderrRef
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
96 ## os.remove(obsError)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
97 ## os.remove(expError)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
98 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
99 ## def test_changeJobStatus(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
100 ## expStatus = "finished"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
101 ## self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
102 ## self._iTJA.changeJobStatus(self._iJob, expStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
103 ## qryParams = "SELECT status FROM " + self._jobTableName + " WHERE jobid =? AND groupid=? AND queue=?"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
104 ## params = (self._iJob.jobid, self._iJob.groupid, self._iJob.queue)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
105 ## self._db.execute(qryParams, params)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
106 ## obsStatus = self._db.fetchall()[0][0]
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
107 ## self.assertEquals(expStatus, obsStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
108 ## self._iTJA.removeJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
109 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
110 ## def test_getCountStatus(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
111 ## iJob1 = self._createJobInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
112 ## iJob2 = Job(self._jobTableName, 1, "job2", "groupid", "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
113 ## self._iTJA.recordJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
114 ## self._iTJA.recordJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
115 ## expCount = 2
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
116 ## obsCount = self._iTJA.getCountStatus(self._jobTableName, iJob1.groupid, "waiting")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
117 ## self.assertEquals(expCount, obsCount)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
118 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
119 ## def test_getCountStatus_without_res(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
120 ## expCount = 0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
121 ## obsCount = self._iTJA.getCountStatus(self._jobTableName, "groupid", "waiting")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
122 ## self.assertEquals(expCount, obsCount)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
123 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
124 ## def test_cleanJobGroup(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
125 ## iJob1 = self._createJobInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
126 ## iJob2 = Job(self._jobTableName, "jobid2", iJob1.groupid, "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
127 ## iJob3 = Job(self._jobTableName, "jobid2", "groupid3", "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
128 ## self._iTJA.recordJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
129 ## self._iTJA.recordJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
130 ## self._iTJA.recordJob(iJob3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
131 ## self._iTJA.cleanJobGroup(self._jobTableName, iJob1.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
132 ## qryParams = "SELECT count(*) FROM " + self._jobTableName
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
133 ## self._db.execute(qryParams)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
134 ## expCount = 1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
135 ## obsCount = self._db.fetchall()[0][0]
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
136 ## self.assertEquals(expCount, obsCount)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
137 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
138 ## def test_hasUnfinishedJob_one_waiting_one_finished(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
139 ## iJob1 = self._createJobInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
140 ## iJob2 = Job(self._jobTableName, 0, "jobname2", iJob1.groupid, "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
141 ## iJob3 = Job(self._jobTableName, 0, "jobname3", "groupid3", "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
142 ## self._iTJA.recordJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
143 ## self._iTJA.recordJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
144 ## self._iTJA.recordJob(iJob3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
145 ## self._iTJA.changeJobStatus(iJob2, "finished")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
146 ## expHasGrpIdFinished = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
147 ## obsHasGrpIdFinished = self._iTJA.hasUnfinishedJob(self._jobTableName, iJob1.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
148 ## self.assertEquals(expHasGrpIdFinished, obsHasGrpIdFinished)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
149 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
150 ## def test_hasUnfinishedJob_jobTable_doesnt_exist(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
151 ## self._db.dropTable(self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
152 ## expHasGrpIdFinished = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
153 ## obsHasGrpIdFinished = self._iTJA.hasUnfinishedJob(self._jobTableName, self._iJob.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
154 ## self.assertEquals(expHasGrpIdFinished, obsHasGrpIdFinished)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
155 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
156 ## def test_hasUnfinishedJob_all_jobs_finished_for_same_groupid(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
157 ## iJob1 = self._createJobInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
158 ## iJob2 = Job(self._jobTableName, "jobid2", iJob1.groupid, "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
159 ## iJob3 = Job(self._jobTableName, "jobid2", "groupid3", "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
160 ## self._iTJA.recordJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
161 ## self._iTJA.recordJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
162 ## self._iTJA.recordJob(iJob3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
163 ## self._iTJA.changeJobStatus(iJob1, "finished")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
164 ## self._iTJA.changeJobStatus(iJob2, "finished")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
165 ## expHasGrpIdFinished = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
166 ## obsHasGrpIdFinished = self._iTJA.hasUnfinishedJob(self._jobTableName, iJob1.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
167 ## self.assertEquals(expHasGrpIdFinished, obsHasGrpIdFinished)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
168 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
169 ## def test_waitJobGroup_with_finished_job(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
170 ## obs = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
171 ## self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
172 ## self._iTJA.changeJobStatus(self._iJob, "finished")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
173 ## try:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
174 ## self._iTJA.waitJobGroup(self._jobTableName ,self._iJob.groupid, 0, 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
175 ## except SystemExit:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
176 ## obs = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
177 ## self.assertFalse(obs)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
178 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
179 ## def test_waitJobGroup_with_error_job_maxRelaunch_zero(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
180 ## obs = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
181 ## self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
182 ## self._iTJA.changeJobStatus(self._iJob, "error")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
183 ## try:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
184 ## self._iTJA.waitJobGroup(self._jobTableName ,self._iJob.groupid, 0, 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
185 ## except SystemExit:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
186 ## obs = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
187 ## self.assertTrue(obs)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
188 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
189 ## def test_setJobIdFromSge(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
190 ## self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
191 ## self._iTJA.setJobIdFromSge(self._iJob, 1000)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
192 ## qryParams = "SELECT jobid FROM " + self._jobTableName + " WHERE jobname = ? AND queue = ? AND groupid = ?"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
193 ## params = (self._iJob.jobname, self._iJob.queue, self._iJob.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
194 ## self._db.execute(qryParams, params)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
195 ## tObs = self._db.fetchall()[0]
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
196 ## tExp =(1000,)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
197 ## self.assertEquals(tExp,tObs)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
198 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
199 ## def test_submitJob_8_fields_for_job_table(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
200 ## self._db.dropTable(self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
201 ## sqlCmd = "CREATE TABLE " + self._jobTableName
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
202 ## sqlCmd += " ( jobid INT UNSIGNED"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
203 ## sqlCmd += ", groupid VARCHAR(255)"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
204 ## sqlCmd += ", command TEXT"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
205 ## sqlCmd += ", launcher VARCHAR(1024)"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
206 ## sqlCmd += ", queue VARCHAR(255)"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
207 ## sqlCmd += ", status VARCHAR(255)"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
208 ## sqlCmd += ", time DATETIME"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
209 ## sqlCmd += ", node VARCHAR(255) )"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
210 ## self._db.execute(sqlCmd)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
211 ## self._iTJA.submitJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
212 ## expFieldsNb = 9
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
213 ## obsFieldsNb = len(self._db.getFieldList(self._jobTableName))
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
214 ## self.assertEquals(expFieldsNb, obsFieldsNb)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
215 ## os.remove("jobid.stdout")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
216 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
217 ## def test_getNodesListByGroupId(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
218 ## iJob1 = Job( self._jobTableName, 0, "job1", "groupid", "queue", "command", "launcherFile", "node1", "lResources" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
219 ## iJob2 = Job( self._jobTableName, 1, "job2", "groupid", "queue", "command", "launcherFile", "node2", "lResources" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
220 ## iJob3 = Job( self._jobTableName, 2, "job3", "groupid2", "queue", "command", "launcherFile", "node3", "lResources" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
221 ## self._insertJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
222 ## self._insertJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
223 ## self._insertJob(iJob3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
224 ## expNodeList = ["node1", "node2"]
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
225 ## obsNodeList = self._iTJA.getNodesListByGroupId(self._jobTableName, "groupid")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
226 ## self.assertEquals(expNodeList, obsNodeList)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
227 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
228 ## def test_getNodesListByGroupId_empty_list(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
229 ## iJob1 = Job( self._jobTableName, 0, "job1", "groupid", "queue", "command", "launcherFile", "node1", "lResources" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
230 ## iJob2 = Job( self._jobTableName, 1, "job2", "groupid", "queue", "command", "launcherFile", "node2", "lResources" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
231 ## iJob3 = Job( self._jobTableName, 2, "job3", "groupid32", "queue", "command", "launcherFile", "node3", "lResources" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
232 ## self._insertJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
233 ## self._insertJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
234 ## self._insertJob(iJob3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
235 ## expNodeList = []
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
236 ## obsNodeList = self._iTJA.getNodesListByGroupId(self._jobTableName, "groupid3")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
237 ## self.assertEquals(expNodeList, obsNodeList)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
238 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
239 ## def test_commitJob(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
240 ## iJob1 = Job( self._jobTableName, 0, "job1", "groupid", "queue", "command", "launcherFile", "node1", "lResources" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
241 ## self._insertJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
242 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
243 ## expJobStatus = "waiting"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
244 ## obsJobStatus = self._iTJA.getJobStatus(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
245 ## self.assertEquals(expJobStatus, obsJobStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
246 ## expJobStatus = "waiting"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
247 ## obsJobStatus = self._iTJA.getJobStatus(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
248 ## self.assertEquals(expJobStatus, obsJobStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
249 ## self._db.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
250 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
251 ## self._db = DbSQLite(self._dbName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
252 ## self._iTJA = TableJobAdaptator(self._db, self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
253 ## expJobStatus = "waiting"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
254 ## obsJobStatus = self._iTJA.getJobStatus(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
255 ## self.assertEquals(expJobStatus, obsJobStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
256 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
257 ## def _insertJob(self, iJob):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
258 ## self._iTJA = TableJobAdaptator(self._db, self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
259 ## self._iTJA.removeJob( iJob )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
260 ## sqlCmd = "INSERT INTO %s" % ( iJob.tablename )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
261 ## sqlCmd += " VALUES ("
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
262 ## sqlCmd += " \"%s\"," % ( iJob.jobid )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
263 ## sqlCmd += " \"%s\"," % ( iJob.jobname )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
264 ## sqlCmd += " \"%s\"," % ( iJob.groupid )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
265 ## sqlCmd += " \"%s\"," % ( iJob.command.replace("\"","\'") )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
266 ## sqlCmd += " \"%s\"," % ( iJob.launcher )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
267 ## sqlCmd += " \"%s\"," % ( iJob.queue )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
268 ## sqlCmd += " \"waiting\","
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
269 ## sqlCmd += " \"%s\"," % ( time.strftime( "%Y-%m-%d %H:%M:%S" ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
270 ## sqlCmd += " \"%s\" );" % ( iJob.node )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
271 ## self._db.execute( sqlCmd )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
272 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
273 ## def testRecordJob_in_parallel_with_2_thread(self) :
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
274 ## job1 = Job(self._jobTableName, 0, "job1", "test", "", "date;sleep 5;date", "./launcherFileTest_job1.py")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
275 ## job2 = Job(self._jobTableName, 0, "job2", "test", "", "date;sleep 5;date", "./launcherFileTest_job2.py")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
276 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
277 ## db1 = DbSQLite('threadJobTable.db')
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
278 ## db1.createJobTable(self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
279 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
280 ## db2 = DbSQLite(self._dbName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
281 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
282 ## iTJA1 = TableJobAdaptator(db1, self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
283 ## iTJA2 = TableJobAdaptator(db2, self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
284 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
285 ## iRJT1 = RecordJobThread(iTJA1, job1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
286 ## iRJT2 = RecordJobThread(iTJA2, job2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
287 ## iRJT1.start()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
288 ## iRJT2.start()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
289 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
290 ## while iRJT1.isAlive() or iRJT2.isAlive():
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
291 ## time.sleep(5)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
292 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
293 ## expJobStatus = "waiting"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
294 ## obsJobStatus1 = iTJA1.getJobStatus(job1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
295 ## obsJobStatus2 = iTJA2.getJobStatus(job2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
296 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
297 ## self.assertEquals(expJobStatus, obsJobStatus1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
298 ## self.assertEquals(expJobStatus, obsJobStatus2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
299 ## db1.db.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
300 ## db1.delete()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
301 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
302 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
303 # def test_ThreadRecordJob_sqlite3_connection_object_different_instances(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
304 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
305 ## for i in range(1, 11):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
306 ## job = Job(self._jobTableName, 0, "job%s"% i, "test_Thread", "", "date;sleep 5;date", "./launcherFileTest_job%s.py" % i)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
307 ## db1 = DbSQLite(self._dbName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
308 ## iTJA1 = TableJobAdaptator(db1, self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
309 ## iRJT1 = RecordJobThread(iTJA1, job)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
310 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
311 # #self._db.createJobTable(self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
312 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
313 # for i in range(1, 30) :
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
314 # job = "job%s"% i
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
315 # db = "db%s"%i
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
316 # job = Job(self._jobTableName, 0, "job%s"% i, "test_Thread", "", "date;sleep 5;date", "./launcherFileTest_job%s.py" % i)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
317 # db = DbSQLite(self._dbName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
318 # if i == 1 :
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
319 # db.createJobTable(self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
320 # iTJA = TableJobAdaptator(db, self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
321 # iRJT = RecordJobThread(iTJA, job)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
322 # iRJT.start()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
323 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
324 # #while iRJT.isAlive() :
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
325 # #time.sleep(1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
326 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
327 ## job1 = Job(self._jobTableName, 0, "job1", "test", "", "date;sleep 5;date", "./launcherFileTest_job1.py")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
328 ## self._createLauncherFile(job1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
329 ## job2 = Job(self._jobTableName, 0, "job2", "test", "", "date;sleep 5;date", "./launcherFileTest_job2.py")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
330 ## self._createLauncherFile(job2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
331 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
332 ## db1 = DbSQLite(self._dbName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
333 ## db2 = DbSQLite(self._dbName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
334 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
335 ## iTJA1 = TableJobAdaptator(db1, self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
336 ## iTJA2 = TableJobAdaptator(db2, self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
337 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
338 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
339 ## iRJT1 = RecordJobThread(iTJA1, job1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
340 ## iRJT2 = RecordJobThread(iTJA2, job2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
341 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
342 ## iRJT1.start()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
343 ## iRJT2.start()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
344 ##
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
345 ## while iRJT1.isAlive() or iRJT2.isAlive():
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
346 ## time.sleep(5)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
347 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
348 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
349 ## self.assertNotEquals(iRJT1._iTableJobAdaptator._iDb.db, iRJT2._iTableJobAdaptator._iDb.db)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
350 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
351 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
352 # def _createLauncherFile(self, iJob):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
353 # jobFileHandler = open(iJob.launcher , "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
354 ## self.cdir
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
355 ## self.job
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
356 # cDir = os.getcwd()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
357 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
358 # launcher = "#!/usr/bin/python\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
359 # launcher += "import os\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
360 # launcher += "import sys\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
361 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
362 # launcher += "print \"system:\", os.uname()\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
363 # launcher += "sys.stdout.flush()\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
364 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
365 # newStatus = "running"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
366 # launcher += "from commons.core.sql.Job import Job\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
367 # launcher += "from commons.core.sql.DbSQLite import DbSQLite\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
368 # launcher += "from commons.core.sql.TableJobAdaptator import TableJobAdaptator\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
369 # launcher += "iJob = Job('%s', %s, '%s', '%s')\n" % (iJob.tablename, iJob.jobid, iJob.jobname, iJob.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
370 # launcher += "iDb = DbSQLite('%s/%s')\n" % (cDir, self._dbName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
371 # launcher += "iTJA = TableJobAdaptator(iDb, '%s')\n" % self._jobTableName
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
372 # launcher += "if not iDb.doesTableExist('%s'):\n" % (iJob.tablename)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
373 # launcher += "\tiDb.createJobTable('%s')\n" % self._jobTableName
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
374 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
375 # launcher += "iTJA.changeJobStatus(iJob, '%s')\n" % newStatus
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
376 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
377 # launcher += "print \"LAUNCH: " + iJob.command + "\"\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
378 # launcher += "sys.stdout.flush()\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
379 # launcher += "exitStatus = os.system (\"" + iJob.command + "\")\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
380 # launcher += "if exitStatus != 0:\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
381 # launcher += "\tprint \"ERROR: " + iJob.command + " returned exit status '%i'\" % ( exitStatus )\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
382 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
383 # newStatus = "finished"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
384 # launcher += "iTJA.changeJobStatus(iJob, '%s')\n" % newStatus
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
385 # launcher += "iDb.close()\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
386 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
387 # launcher += "sys.exit(0)\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
388 # jobFileHandler.write(launcher)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
389 # jobFileHandler.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
390 # os.chmod(iJob.launcher, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
391 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
392 # def _createJobInstance(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
393 # return Job( self._jobTableName, 0, "job1", "groupid", "queue", "command", "launcherFile", "node", "lResources" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
394
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
395
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
396 class Test_TableJobAdaptator_MySQL( unittest.TestCase ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
397
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
398 def setUp(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
399 self._jobTableName = "dummyJobTable"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
400 self._db = DbMySql()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
401 self._iTJA = TableJobAdaptatorFactory.createInstance(self._db, self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
402 self._db.createTable(self._jobTableName, "jobs", overwrite = True)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
403 self._iJob = self._createJobInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
404
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
405 def tearDown(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
406 self._db.dropTable(self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
407 self._iTJA = None
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
408 self._db.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
409
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
410 def test_recordJob(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
411 self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
412 qryParams = "SELECT jobid, jobname, groupid, launcher, queue, resources, status, node FROM " + self._jobTableName + " WHERE jobid = %s"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
413 params = (self._iJob.jobid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
414 self._db.execute(qryParams, params)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
415 tObs = self._db.fetchall()[0]
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
416 tExp =(self._iJob.jobid, self._iJob.jobname, self._iJob.groupid, self._iJob.launcher, self._iJob.queue, "['mem_free=10M']", "waiting", "?")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
417 self.assertEquals(tExp,tObs)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
418
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
419 def test_removeJob(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
420 self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
421 self._iTJA.removeJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
422 isTableEmpty = self._db.isEmpty(self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
423 self.assertTrue(isTableEmpty)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
424
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
425 def test_getJobStatus(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
426 self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
427 expStatus = "waiting"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
428 obsStatus = self._iTJA.getJobStatus(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
429 self.assertEquals(expStatus, obsStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
430
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
431 def test_getJobStatus_no_job(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
432 expStatus = "unknown"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
433 obsStatus = self._iTJA.getJobStatus(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
434 self.assertEquals(expStatus, obsStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
435
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
436 def test_getJobStatus_no_name(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
437 iJob = Job(self._jobTableName, 20, "", "groupid", "queue", "command", "launcherFile", "node", "lResources")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
438 expStatus = "unknown"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
439 obsStatus = self._iTJA.getJobStatus(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
440 self.assertEquals(expStatus, obsStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
441
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
442 def test_getJobStatus_two_jobs(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
443 # Warning : this case will not append, because recordJob() begin by removeJob()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
444 sqlCmd = "INSERT INTO %s" % self._jobTableName
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
445 sqlCmd += " VALUES ("
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
446 sqlCmd += " \"%s\"," % self._iJob.jobid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
447 sqlCmd += " \"%s\"," % self._iJob.jobname
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
448 sqlCmd += " \"%s\"," % self._iJob.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
449 sqlCmd += " \"%s\"," % self._iJob.launcher
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
450 sqlCmd += " \"%s\"," % self._iJob.queue
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
451 sqlCmd += " \"%s\"," % self._iJob.lResources
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
452 sqlCmd += " \"waiting\","
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
453 sqlCmd += " \"%s\"," % time.strftime("%Y-%m-%d %H:%M:%S")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
454 sqlCmd += " \"?\" );"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
455 self._db.execute(sqlCmd)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
456 self._db.execute(sqlCmd)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
457
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
458 expError = "expError.txt"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
459 expErrorHandler = open(expError, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
460 expErrorHandler.write("ERROR while getting job status: non-unique jobs\n")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
461 expErrorHandler.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
462 obsError = "obsError.txt"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
463 obsErrorHandler = open(obsError, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
464 stderrRef = sys.stderr
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
465 sys.stderr = obsErrorHandler
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
466
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
467 isSysExitRaised = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
468 try:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
469 self._iTJA.getJobStatus(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
470 except SystemExit:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
471 isSysExitRaised = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
472 obsErrorHandler.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
473 self.assertTrue(isSysExitRaised)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
474 self.assertTrue(FileUtils.are2FilesIdentical(expError, obsError))
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
475 sys.stderr = stderrRef
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
476 os.remove(obsError)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
477 os.remove(expError)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
478
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
479 def test_changeJobStatus(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
480 expStatus = "finished"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
481 self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
482 self._iTJA.changeJobStatus(self._iJob, expStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
483 qryParams = "SELECT status FROM " + self._jobTableName + " WHERE jobid =%s AND groupid=%s AND queue=%s"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
484 params = (self._iJob.jobid, self._iJob.groupid, self._iJob.queue)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
485 self._db.execute(qryParams, params)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
486 obsStatus = self._db.fetchall()[0][0]
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
487 self.assertEquals(expStatus, obsStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
488
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
489 def test_getCountStatus(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
490 iJob1 = self._createJobInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
491 iJob2 = Job(1, "job2", "groupid", "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
492 self._iTJA.recordJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
493 self._iTJA.recordJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
494 expCount = 2
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
495 obsCount = self._iTJA.getCountStatus(iJob1.groupid, "waiting")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
496 self.assertEquals(expCount, obsCount)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
497
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
498 def test_getCountStatus_without_res(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
499 expCount = 0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
500 obsCount = self._iTJA.getCountStatus("groupid", "waiting")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
501 self.assertEquals(expCount, obsCount)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
502
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
503 def test_cleanJobGroup(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
504 iJob1 = self._createJobInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
505 iJob2 = Job(2, "jobid2", iJob1.groupid, "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
506 iJob3 = Job(3, "jobid2", "groupid3", "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
507 self._iTJA.recordJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
508 self._iTJA.recordJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
509 self._iTJA.recordJob(iJob3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
510 self._iTJA.cleanJobGroup(iJob1.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
511 qryParams = "SELECT count(*) FROM %s" % self._jobTableName
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
512 self._db.execute(qryParams)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
513 expCount = 1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
514 obsCount = self._db.fetchall()[0][0]
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
515 self.assertEquals(expCount, obsCount)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
516
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
517 def test_hasUnfinishedJob_one_waiting_one_finished(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
518 iJob1 = self._createJobInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
519 iJob2 = Job(0, "jobname2", iJob1.groupid, "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
520 iJob3 = Job(0, "jobname3", "groupid3", "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
521 self._iTJA.recordJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
522 self._iTJA.recordJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
523 self._iTJA.recordJob(iJob3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
524 self._iTJA.changeJobStatus(iJob2, "finished")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
525 expHasGrpIdFinished = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
526 obsHasGrpIdFinished = self._iTJA.hasUnfinishedJob(iJob1.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
527 self.assertEquals(expHasGrpIdFinished, obsHasGrpIdFinished)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
528
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
529 def test_hasUnfinishedJob_all_jobs_finished_for_same_groupid(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
530 iJob1 = self._createJobInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
531 iJob2 = Job(2, "jobid2", iJob1.groupid, "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
532 iJob3 = Job(3, "jobid2", "groupid3", "queue2", "command2", "launcherFile2", "node2", "lResources2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
533 self._iTJA.recordJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
534 self._iTJA.recordJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
535 self._iTJA.recordJob(iJob3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
536 self._iTJA.changeJobStatus(iJob1, "finished")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
537 self._iTJA.changeJobStatus(iJob2, "finished")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
538 expHasGrpIdFinished = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
539 obsHasGrpIdFinished = self._iTJA.hasUnfinishedJob(iJob1.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
540 self.assertEquals(expHasGrpIdFinished, obsHasGrpIdFinished)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
541
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
542 def test_waitJobGroup_with_finished_job(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
543 obs = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
544 self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
545 self._iTJA.changeJobStatus(self._iJob, "finished")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
546 try:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
547 self._iTJA.waitJobGroup(self._iJob.groupid, 0, 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
548 except SystemExit:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
549 obs = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
550 self.assertFalse(obs)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
551
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
552 def test_waitJobGroup_with_error_job_maxRelaunch_zero(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
553 obs = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
554 self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
555 self._iTJA.changeJobStatus(self._iJob, "error")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
556 try:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
557 self._iTJA.waitJobGroup(self._iJob.groupid, 0, 0)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
558 except SystemExit:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
559 obs = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
560 self.assertTrue(obs)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
561
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
562 #TODO: how to test ?!?
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
563 # def test_waitJobGroup_with_error_relaunch(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
564 # iJob = Job(0, "job1", "groupid", "queue.q", "command", "launcherFile", "node", ["mem_free=10M", "test=TRUE"])
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
565 # obs = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
566 # self._iTJA.recordJob(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
567 # self._iTJA.changeJobStatus(iJob, "error")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
568 # try:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
569 # self._iTJA.waitJobGroup(iJob.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
570 # except SystemExit:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
571 # obs = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
572 # self.assertTrue(obs)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
573
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
574 def test_updateJobIdInDB(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
575 self._iTJA.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
576 self._iTJA.updateJobIdInDB(self._iJob, 1000)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
577 qryParams = "SELECT jobid FROM " + self._jobTableName + " WHERE jobname = %s AND queue = %s AND groupid = %s"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
578 params = (self._iJob.jobname, self._iJob.queue, self._iJob.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
579 self._db.execute(qryParams, params)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
580 tObs = self._db.fetchall()[0]
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
581 tExp =(1000,)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
582 self.assertEquals(tExp,tObs)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
583
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
584 def test_getNodesListByGroupId(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
585 iJob1 = Job(0, "job1", "groupid", "queue", "command", "launcherFile", "node1", "lResources")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
586 iJob2 = Job(1, "job2", "groupid", "queue", "command", "launcherFile", "node2", "lResources")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
587 iJob3 = Job(2, "job3", "groupid", "queue", "command", "launcherFile", "node2", "lResources")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
588 iJob4 = Job(3, "job4", "groupid2", "queue", "command", "launcherFile", "node3", "lResources")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
589 self._insertJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
590 self._insertJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
591 self._insertJob(iJob3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
592 self._insertJob(iJob4)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
593 expNodeList = ["node1", "node2"]
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
594 obsNodeList = self._iTJA.getNodesListByGroupId("groupid")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
595 self.assertEquals(expNodeList, obsNodeList)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
596
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
597 def test_getNodesListByGroupId_empty_list(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
598 iJob1 = Job(0, "job1", "groupid", "queue", "command", "launcherFile", "node1", "lResources")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
599 iJob2 = Job(1, "job2", "groupid", "queue", "command", "launcherFile", "node2", "lResources")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
600 iJob3 = Job(2, "job3", "groupid32", "queue", "command", "launcherFile", "node3", "lResources")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
601 self._insertJob(iJob1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
602 self._insertJob(iJob2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
603 self._insertJob(iJob3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
604 expNodeList = []
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
605 obsNodeList = self._iTJA.getNodesListByGroupId("groupid3")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
606 self.assertEquals(expNodeList, obsNodeList)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
607
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
608 # TODO test TableJobAdaptator._createJobInstance TableJobAdaptator._createLauncherFile
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
609 def _insertJob(self, iJob):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
610 self._iTJA = TableJobAdaptatorFactory.createInstance(self._db, self._jobTableName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
611 self._iTJA.removeJob(iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
612 sqlCmd = "INSERT INTO %s" % self._jobTableName
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
613 sqlCmd += " VALUES ("
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
614 sqlCmd += " \"%s\"," % iJob.jobid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
615 sqlCmd += " \"%s\"," % iJob.jobname
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
616 sqlCmd += " \"%s\"," % iJob.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
617 sqlCmd += " \"%s\"," % iJob.launcher
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
618 sqlCmd += " \"%s\"," % iJob.queue
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
619 sqlCmd += " \"%s\"," % iJob.lResources
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
620 sqlCmd += " \"waiting\","
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
621 sqlCmd += " \"%s\"," % time.strftime("%Y-%m-%d %H:%M:%S")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
622 sqlCmd += " \"%s\" );" % iJob.node
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
623 self._db.execute(sqlCmd)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
624
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
625 def _createJobInstance(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
626 return Job(0, "job1", "groupid", "", "command", "launcherFile", "node", ["mem_free=10M"])
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
627
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
628 #class RecordJobThread(threading.Thread):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
629 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
630 # def __init__(self, iTableJobAdaptator, iJob):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
631 # threading.Thread.__init__(self)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
632 # self._iTableJobAdaptator = iTableJobAdaptator
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
633 # self._iJob = iJob
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
634 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
635 # def run(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
636 # self._iTableJobAdaptator.recordJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
637 # #self._iTableJobAdaptator.submitJob(self._iJob)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
638
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
639 if __name__ == "__main__":
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
640 unittest.main()