annotate commons/core/launcher/test/Test_WriteScript.py @ 6:769e306b7933

Change the repository level.
author yufei-luo
date Fri, 18 Jan 2013 04:54:14 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
1 from commons.core.utils.FileUtils import FileUtils
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
2 from commons.core.launcher.WriteScript import WriteScript
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
3 from commons.core.sql.Job import Job
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
4 from commons.core.sql.DbFactory import DbFactory
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
5 from commons.core.sql.TableJobAdaptatorFactory import TableJobAdaptatorFactory
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
6 import unittest
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
7 import os
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
8 import shutil
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
9 import time
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
10 import threading
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
11
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
12 class Test_WriteScript(unittest.TestCase):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
13
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
14 def setUp(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
15 self._testDir = os.getcwd()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
16 self._acronym = "dummyAcronym"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
17 self._jobTable = "dummyJobsTable"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
18 self._iDb = DbFactory.createInstance()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
19 self._iDb.createTable(self._jobTable, "jobs", overwrite = True)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
20 self._jobdb = TableJobAdaptatorFactory.createInstance(self._iDb, self._jobTable)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
21 self._job = Job()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
22 self._job.groupid = "groupid"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
23 self._job.jobname = self._acronym
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
24 self._job.launcher = "ClusterLauncher"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
25 self._jobdb.recordJob(self._job)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
26 self._dummyScratch = "dummyScratch"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
27 os.mkdir(self._dummyScratch)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
28 os.chdir(self._dummyScratch)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
29 self._tmpDir = os.getcwd()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
30 self._iScriptWriter = WriteScript(self._job, self._jobdb, self._testDir, self._tmpDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
31
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
32 def tearDown(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
33 self._iDb.dropTable(self._jobTable)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
34 self._iDb.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
35 if FileUtils.isRessourceExists(self._dummyScratch):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
36 shutil.rmtree(self._dummyScratch)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
37
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
38 def test_run(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
39 isScriptAsRun = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
40 fileToCreate = 'dummyFile'
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
41 cmdStart = "log = os.system( \"touch %s\" )\n" % fileToCreate
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
42 cmdFinish = "os.system(\"mv %s %s\" )\n" % (fileToCreate, self._testDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
43 pyFileName = "%s/ClusterLauncher_%s.py" % (os.getcwd(), self._acronym)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
44
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
45 self._iScriptWriter.run(cmdStart, cmdFinish, pyFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
46 os.system("python %s" % pyFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
47
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
48 os.chdir(self._testDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
49 if FileUtils.isRessourceExists(fileToCreate):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
50 os.remove(fileToCreate)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
51 isScriptAsRun = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
52 expJobStatus = "finished"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
53 obsJobStatus = self._jobdb.getJobStatus(self._job)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
54
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
55 self.assertTrue(isScriptAsRun)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
56 self.assertEquals(expJobStatus, obsJobStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
57
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
58 def test_run_with_cmdSize_and_cmdCopy(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
59 isScriptAsRun = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
60 fileToCreate = 'dummyFile'
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
61 fileSize = 0.5
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
62 cmdSize = "fileSize = %f\n" % fileSize
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
63 cmdCopy = "os.system(\"touch bank.fa\")\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
64 cmdStart = "log = os.system(\"touch %s\")\n" % fileToCreate
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
65 cmdFinish = "shutil.move(\"%s\", \"%s\")" % (fileToCreate, self._testDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
66 pyFileName = "%s/ClusterLauncher_%s.py" % (os.getcwd(), self._acronym)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
67
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
68 iWriteScript = WriteScript(self._job, self._jobdb, self._testDir, self._tmpDir, True)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
69 iWriteScript.run(cmdStart, cmdFinish, pyFileName, cmdSize, cmdCopy)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
70 os.system("python %s" % pyFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
71
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
72 os.chdir(self._testDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
73 if FileUtils.isRessourceExists(fileToCreate):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
74 os.remove(fileToCreate)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
75 isScriptAsRun = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
76 expJobStatus = "finished"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
77 obsJobStatus = self._jobdb.getJobStatus(self._job)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
78
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
79 self.assertTrue(isScriptAsRun)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
80 self.assertEquals(expJobStatus, obsJobStatus)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
81
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
82 #TODO: how to test ?
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
83 # def test_run_2_jobs_trying_to_create_same_groupIdDir(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
84 # fileToCreate1 = 'dummyFile1'
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
85 # fileToCreate2 = 'dummyFile2'
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
86 # flagFileOSError = "osErrorRaised"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
87 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
88 # fileSize = 0.5
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
89 # cmd_checkSize = ""
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
90 # cmd_checkSize += "if not os.path.exists( \"%s\" ):\n" % self._job.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
91 # cmd_checkSize += "\tfileSize = %f\n" % fileSize
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
92 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
93 # cmd_checkGroupidDir1 = ""
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
94 # cmd_checkGroupidDir1 += "if not os.path.exists(\"%s\"):\n" % self._job.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
95 # cmd_checkGroupidDir1 += "\ttry:\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
96 # cmd_checkGroupidDir1 += "\t\ttime.sleep(10)\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
97 # cmd_checkGroupidDir1 += "\t\tos.mkdir(\"%s\")\n" % self._job.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
98 # cmd_checkGroupidDir1 += "\texcept OSError, e :\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
99 # cmd_checkGroupidDir1 += "\t\tos.system(\"touch %s\")\n" % flagFileOSError
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
100 # cmd_checkGroupidDir1 += "\t\tif e.args[0] != 17:\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
101 # cmd_checkGroupidDir1 += "\t\t\traise RepetException(\"ERROR: can't create '%s'\")\n" % self._job.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
102 # cmd_checkGroupidDir1 += "\tos.chdir(\"%s\")\n" % self._job.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
103 # cmd_checkGroupidDir1 += "\tos.system(\"touch bank.fa\")\n" #cp
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
104 # cmd_checkGroupidDir1 += "else:\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
105 # cmd_checkGroupidDir1 += "\tos.chdir(\"%s\")\n" % self._job.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
106 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
107 # cmdStart1 = "log = os.system(\"touch %s\")\n" % fileToCreate1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
108 # cmdFinish1 = "shutil.move(\"%s\", \"%s\")\n" % (fileToCreate1, self._testDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
109 # pyFileName1 = "%s/ClusterLauncher1_job1.py" % os.getcwd()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
110 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
111 # cmd_checkGroupidDir2 = ""
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
112 # cmd_checkGroupidDir2 += "if not os.path.exists(\"%s\"):\n" % self._job.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
113 # cmd_checkGroupidDir2 += "\ttry:\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
114 # cmd_checkGroupidDir2 += "\t\tos.mkdir(\"%s\")\n" % self._job.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
115 # cmd_checkGroupidDir2 += "\texcept OSError, e :\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
116 # cmd_checkGroupidDir2 += "\t\tif e.args[0] != 17:\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
117 # cmd_checkGroupidDir2 += "\t\t\traise RepetException(\"ERROR: can't create '%s'\")\n" % self._job.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
118 # cmd_checkGroupidDir2 += "\tos.chdir(\"%s\")\n" % self._job.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
119 # cmd_checkGroupidDir2 += "\tos.system(\"touch bank.fa\")\n" #cp
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
120 # cmd_checkGroupidDir2 += "else:\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
121 # cmd_checkGroupidDir2 += "\tos.chdir(\"%s\")\n" % self._job.groupid
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
122 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
123 # cmdStart2 = "log = os.system(\"touch %s\")\n" % fileToCreate2
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
124 # cmdFinish2 = "shutil.move(\"%s\", \"%s\")\n" % (fileToCreate2, self._testDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
125 # pyFileName2 = "%s/ClusterLauncher2_job2.py" % os.getcwd()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
126 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
127 # job1 = Job(self._jobTable, jobname = "job1", groupid = self._job.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
128 # self._jobdb.recordJob(job1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
129 # job2 = Job(self._jobTable, jobname = "job2", groupid = self._job.groupid)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
130 # self._jobdb.recordJob(job2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
131 # iScriptWriter1 = WriteScript(job1, self._jobdb, self._testDir, self._tmpDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
132 # iScriptWriter1.run(cmdStart1, cmdFinish1, pyFileName1, cmd_checkSize, cmd_checkGroupidDir1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
133 # iScriptWriter2 = WriteScript(job2, self._jobdb, self._testDir, self._tmpDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
134 # iScriptWriter2.run(cmdStart2, cmdFinish2, pyFileName2, cmd_checkSize, cmd_checkGroupidDir2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
135 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
136 # iCFT1 = CreateFileThread(pyFileName1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
137 # iCFT2 = CreateFileThread(pyFileName2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
138 # iCFT1.start()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
139 # iCFT2.start()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
140 # while iCFT1.isAlive() or iCFT2.isAlive():
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
141 # time.sleep(5)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
142 # self.assertTrue(FileUtils.isRessourceExists(flagFileOSError))
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
143 # os.chdir(self._testDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
144 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
145 # if FileUtils.isRessourceExists(fileToCreate1):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
146 # os.remove(fileToCreate1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
147 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
148 # if FileUtils.isRessourceExists(fileToCreate2):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
149 # os.remove(fileToCreate2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
150
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
151 def test_run_2_lines_in_cmd_start(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
152 isScriptAsRun = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
153 fileToCreate = 'dummyFile'
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
154
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
155 cmdStart = "log = 0\n\t"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
156 cmdStart += "if True:\n\t"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
157 cmdStart += "\tos.system( \"touch dummyFile\" )\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
158 cmdFinish = "os.system(\"mv %s %s\" )\n" % (fileToCreate, self._testDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
159 pyFileName = "%s/ClusterLauncher_%s.py" % (os.getcwd(), self._acronym)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
160
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
161 self._iScriptWriter.run(cmdStart, cmdFinish, pyFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
162 os.system("python %s" % pyFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
163
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
164 os.chdir(self._testDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
165 if FileUtils.isRessourceExists(fileToCreate):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
166 os.remove(fileToCreate)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
167 isScriptAsRun = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
168 self.assertTrue(isScriptAsRun)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
169
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
170 def test_run_2_lines_in_cmd_finish(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
171 isScriptAsRun = False
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
172 fileToCreate = 'dummyFile'
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
173
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
174 cmdStart = "log = 0\n\t"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
175 cmdStart += "if True:\n\t"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
176 cmdStart += "\tos.system( \"touch dummyFile\" )\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
177 cmdFinish = "if True:\n\t"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
178 cmdFinish += "\tos.system(\"mv %s %s\" )\n" % (fileToCreate, self._testDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
179 pyFileName = "%s/ClusterLauncher_%s.py" % (os.getcwd(), self._acronym)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
180
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
181 self._iScriptWriter.run(cmdStart, cmdFinish, pyFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
182 os.system("python %s" % pyFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
183
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
184 os.chdir(self._testDir)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
185 if FileUtils.isRessourceExists(fileToCreate):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
186 os.remove(fileToCreate)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
187 isScriptAsRun = True
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
188 self.assertTrue(isScriptAsRun)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
189
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
190 def test_fillTemplate_with_JobScriptTemplate(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
191 os.chdir("..")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
192 d = {
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
193 "tmpDir" : "/home/user/workspace/repet_pipe/commons/core/launcher/test/dummyScratch",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
194 "jobTableName" : "dummyJobsTable",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
195 "groupId" : "groupid",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
196 "jobName" : "job1",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
197 "launcher" : "ClusterLauncher",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
198 "time" : "20110505-105353",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
199 "repet_path" : "/home/user/workspace/repet_pipe",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
200 "repet_host" : "pisano",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
201 "repet_user" : "user",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
202 "repet_pw" : "user",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
203 "repet_db" : "repet_user",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
204 "repet_port" : "3306",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
205 "cmdStart" : "log = os.system(\"touch dummyFile1\")",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
206 "cmdFinish" : "shutil.move(\"dummyFile1\", \"/home/user/workspace/repet_pipe/commons/core/launcher/test\")",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
207 "cDir" : "/home/user/workspace/repet_pipe/commons/core/launcher/test/"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
208 }
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
209 expFileName = "expFiles/expJobScriptTemplate.py"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
210 obsFileName = "obsFile.py"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
211
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
212 iWS = WriteScript()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
213 iWS.fillTemplate(obsFileName, d)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
214 self.assertTrue(FileUtils.are2FilesIdentical(expFileName, obsFileName))
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
215 os.remove(obsFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
216
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
217 def test_fillTemplate_with_JobScriptTemplate_2_lines_in_cmd_start(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
218 os.chdir("..")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
219 d = {
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
220 "tmpDir" : "/home/user/workspace/repet_pipe/commons/core/launcher/test/dummyScratch",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
221 "jobTableName" : "dummyJobsTable",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
222 "groupId" : "groupid",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
223 "jobName" : "job1",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
224 "launcher" : "ClusterLauncher",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
225 "time" : "20110505-105353",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
226 "repet_path" : "/home/user/workspace/repet_pipe",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
227 "repet_host" : "pisano",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
228 "repet_user" : "user",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
229 "repet_pw" : "user",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
230 "repet_db" : "repet_user",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
231 "repet_port" : "3306",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
232 "cmdStart" : "print \"Hello Yufei\"\n\tlog = os.system(\"touch dummyFile1\")",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
233 "cmdFinish" : "shutil.move(\"dummyFile1\", \"/home/user/workspace/repet_pipe/commons/core/launcher/test\")",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
234 "cDir" : "/home/user/workspace/repet_pipe/commons/core/launcher/test/"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
235 }
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
236 expFileName = "expFiles/expJobScriptTemplate_cmdWith2Lines.py"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
237 obsFileName = "obsFile.py"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
238
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
239 iWS = WriteScript()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
240 iWS.fillTemplate(obsFileName, d)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
241 self.assertTrue(FileUtils.are2FilesIdentical(expFileName, obsFileName))
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
242 os.remove(obsFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
243
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
244 def test_fillTemplate_with_JobScriptWithFilesCopyTemplate(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
245 os.chdir("..")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
246 d = {
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
247 "tmpDir" : "/home/user/workspace/repet_pipe/commons/core/launcher/test/dummyScratch",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
248 "jobTableName" : "dummyJobsTable",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
249 "groupId" : "groupid",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
250 "jobName" : "job1",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
251 "launcher" : "ClusterLauncher",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
252 "time" : "20110505-105353",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
253 "repet_path" : "/home/user/workspace/repet_pipe",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
254 "repet_host" : "pisano",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
255 "repet_user" : "user",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
256 "repet_pw" : "user",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
257 "repet_db" : "repet_user",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
258 "repet_port" : "3306",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
259 "cmdStart" : "log = os.system(\"touch dummyFile1\")",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
260 "cmdFinish" : "shutil.move(\"dummyFile1\", \"/home/user/workspace/repet_pipe/commons/core/launcher/test\")",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
261 "cDir" : "/home/user/workspace/repet_pipe/commons/core/launcher/test/",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
262 "cmdSize" : "fileSize = 0.500000",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
263 "cmdCopy" : "os.system(\"touch bank.fa\")"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
264 }
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
265 expFileName = "expFiles/expJobScriptWithFilesCopyTemplate.py"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
266 obsFileName = "obsFile.py"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
267
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
268 iWS = WriteScript(chooseTemplateWithCopy = True)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
269 iWS.fillTemplate(obsFileName, d)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
270 self.assertTrue(FileUtils.are2FilesIdentical(expFileName, obsFileName))
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
271 os.remove(obsFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
272
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
273 def test_fillTemplate_with_JobScriptTemplateLight(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
274 os.chdir("..")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
275 d = {
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
276 "tmpDir" : "/home/user/workspace/repet_pipe/commons/core/launcher/test/dummyScratch",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
277 "jobTableName" : "dummyJobsTable",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
278 "groupId" : "groupid",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
279 "jobName" : "job1",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
280 "launcher" : "ClusterLauncher",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
281 "time" : "20110505-105353",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
282 "repet_path" : "/home/user/workspace/repet_pipe",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
283 "cmdStart" : "log = os.system(\"touch dummyFile1\")",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
284 "cmdFinish" : "shutil.move(\"dummyFile1\", \"/home/user/workspace/repet_pipe/commons/core/launcher/test\")",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
285 "cDir" : "/home/user/workspace/repet_pipe/commons/core/launcher/test/",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
286 "cmdSize" : "fileSize = 0.500000",
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
287 "cmdCopy" : "os.system(\"touch bank.fa\")"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
288 }
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
289 expFileName = "expFiles/expJobScriptTemplateLight.py"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
290 obsFileName = "obs.py"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
291
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
292 iWS = WriteScript(chooseTemplateLight = True)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
293 iWS.fillTemplate(obsFileName, d)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
294 self.assertTrue(FileUtils.are2FilesIdentical(expFileName, obsFileName))
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
295 os.remove(obsFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
296
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
297 def test_createJobScriptDict(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
298 os.chdir("..")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
299 cmd_start = "log = os.system(\"touch dummyFile1\")"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
300 cmd_finish = "shutil.move(\"dummyFile1\", \"/home/user/workspace/repet_pipe/commons/core/launcher/test\")"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
301 cmd_size = ""
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
302 cmd_copy = ""
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
303 expDict = {
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
304 "tmpDir" : self._tmpDir,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
305 "jobTableName" : self._jobTable,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
306 "groupId" : self._job.groupid,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
307 "jobName" : self._acronym,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
308 "launcher" : self._job.launcher,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
309 "time" : time.strftime("%Y%m%d-%H%M%S"),
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
310 "repet_path" : os.environ["REPET_PATH"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
311 "repet_host" : os.environ["REPET_HOST"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
312 "repet_user" : os.environ["REPET_USER"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
313 "repet_pw" : os.environ["REPET_PW"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
314 "repet_db" : os.environ["REPET_DB"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
315 "repet_port" : os.environ["REPET_PORT"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
316 "cmdStart" : cmd_start,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
317 "cmdFinish" : cmd_finish,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
318 "cDir" : self._testDir,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
319 "cmdSize" : cmd_size,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
320 "cmdCopy" : cmd_copy
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
321 }
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
322 obsDict = self._iScriptWriter.createJobScriptDict(cmd_start, cmd_finish, cmd_size, cmd_copy)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
323 self.assertEquals(expDict, obsDict)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
324
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
325 def test_createJobScriptDict_with_cmdSize_and_cmdCopy(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
326 os.chdir("..")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
327 cmd_start = "log = os.system(\"touch dummyFile1\")"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
328 cmd_finish = "shutil.move(\"dummyFile1\", \"/home/user/workspace/repet_pipe/commons/core/launcher/test\")"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
329 cmd_size = "fileSize = 0.500000"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
330 cmd_copy = "os.system(\"touch bank.fa\")"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
331 expDict = {
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
332 "tmpDir" : self._tmpDir,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
333 "jobTableName" : self._jobTable,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
334 "groupId" : self._job.groupid,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
335 "jobName" : self._acronym,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
336 "launcher" : self._job.launcher,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
337 "time" : time.strftime("%Y%m%d-%H%M%S"),
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
338 "repet_path" : os.environ["REPET_PATH"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
339 "repet_host" : os.environ["REPET_HOST"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
340 "repet_user" : os.environ["REPET_USER"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
341 "repet_pw" : os.environ["REPET_PW"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
342 "repet_db" : os.environ["REPET_DB"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
343 "repet_port" : os.environ["REPET_PORT"],
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
344 "cmdStart" : cmd_start,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
345 "cmdFinish" : cmd_finish,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
346 "cDir" : self._testDir,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
347 "cmdSize" : cmd_size,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
348 "cmdCopy" : cmd_copy
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
349 }
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
350 obsDict = self._iScriptWriter.createJobScriptDict(cmd_start, cmd_finish, cmd_size, cmd_copy)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
351 self.assertEquals(expDict, obsDict)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
352
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
353 class CreateFileThread(threading.Thread):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
354
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
355 def __init__(self, pyFileName):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
356 threading.Thread.__init__(self)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
357 self._pyFileName = pyFileName
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
358
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
359 def run(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
360 os.system("python %s" % self._pyFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
361
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
362 test_suite = unittest.TestSuite()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
363 test_suite.addTest( unittest.makeSuite( Test_WriteScript ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
364 if __name__ == "__main__":
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
365 unittest.TextTestRunner(verbosity=2).run( test_suite )