ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/fillCrabFjr.py
Revision: 1.4
Committed: Mon Jun 16 09:05:09 2008 UTC (16 years, 10 months ago) by farinafa
Content type: text/x-python
Branch: MAIN
Changes since 1.3: +9 -3 lines
Log Message:
Commit of the correct version of fjr filler for timing

File Contents

# User Rev Content
1 spiga 1.1 #!/usr/bin/env python
2     """
3     _fillCrabFjr.py
4    
5     Adds to the FJR the WrapperExitCode and the ExeExitCode
6    
7    
8     """
9     import os, string
10     import sys
11     import popen2
12    
13     from ProdCommon.FwkJobRep.ReportParser import readJobReport
14     from ProdCommon.FwkJobRep.FwkJobReport import FwkJobReport
15    
16 farinafa 1.4 from ProdCommon.FwkJobRep.PerformanceReport import PerformanceReport
17    
18 spiga 1.1 class fjrParser:
19     def __init__(self, argv):
20     try:
21     self.reportFileName = argv[1]
22 farinafa 1.2 self.directive = argv[2]
23 spiga 1.1 except:
24     print "it is necessary to specify the fjr name"
25     sys.exit(2)
26    
27 farinafa 1.2 if self.directive=='--errorcode':
28     try:
29     self.wrapperExitCode = argv[3]
30     self.exeExitCode = argv[4]
31     except:
32     self.exeExitCode=''
33    
34     elif self.directive=='--timing':
35     self.wrapperTime = 'NULL'
36     self.exeTime = 'NULL'
37     self.stageoutTime = 'NULL'
38 farinafa 1.4 self.cpuTime = 'NULL'
39 farinafa 1.2 try:
40     self.wrapperTime = argv[3]
41     self.exeTime = argv[4]
42     self.stageoutTime = argv[5]
43 farinafa 1.4 self.cpuTime = argv[6]
44 farinafa 1.2 except:
45     pass
46     else:
47     print "bad directive specified"
48     sys.exit(2)
49 spiga 1.1 return
50    
51     def run(self):
52    
53     if not os.path.exists(self.reportFileName):
54     self.writeFJR()
55     else:
56     self.fillFJR()
57     self.setStatus()
58    
59     return
60    
61     def setStatus(self):
62     """
63     """
64     if (self.wrapperExitCode == '0') and (self.exeExitCode == '0'):
65     status = 'Success'
66     else:
67     status = 'Failed'
68    
69     jobReport = readJobReport(self.reportFileName)[0]
70     jobReport.status = status
71     jobReport.write(self.reportFileName)
72    
73     return
74    
75     def writeFJR(self):
76     """
77     """
78     fwjr = FwkJobReport()
79     fwjr.addError(self.wrapperExitCode, "WrapperExitCode")
80     if (self.exeExitCode != ""):
81     fwjr.addError(self.exeExitCode, "ExeExitCode")
82     fwjr.write(self.reportFileName)
83    
84     return
85    
86     def checkValidFJR(self):
87     """
88     """
89     valid = 0
90     fjr=open(self.reportFileName,'r')
91     lines = fjr.readlines()
92     if len(lines) > 0: valid = 1
93    
94     return valid
95    
96     def fillFJR(self):
97     """
98     """
99     valid = self.checkValidFJR()
100 farinafa 1.2 if valid == 1 and self.directive=='--errorcode':
101 spiga 1.1 jobReport = readJobReport(self.reportFileName)[0]
102     if (len(jobReport.errors) > 0):
103     error = 0
104     for err in jobReport.errors:
105     if err['Type'] == "WrapperExitCode" :
106     err['ExitStatus'] = self.wrapperExitCode
107     jobReport.write(self.reportFileName)
108     error = 1
109     if (self.exeExitCode != ""):
110     if err['Type'] == "ExeExitCode" :
111     err['ExitStatus'] = self.exeExitCode
112     jobReport.write(self.reportFileName)
113     error = 1
114     if (error == 0):
115     jobReport.addError(self.wrapperExitCode, "WrapperExitCode")
116     if (self.exeExitCode != ""):
117     jobReport.addError(self.exeExitCode, "ExeExitCode")
118     jobReport.write(self.reportFileName)
119     else:
120     jobReport.addError(self.wrapperExitCode, "WrapperExitCode")
121     if (self.exeExitCode != ""):
122     jobReport.addError(self.exeExitCode, "ExeExitCode")
123     jobReport.write(self.reportFileName)
124 farinafa 1.2
125     elif valid == 1 and self.directive=='--timing':
126 farinafa 1.4 jobReport = readJobReport(self.reportFileName)[0]
127 farinafa 1.2 # add here timing settings
128 farinafa 1.4 perf = jobReport.performance
129     perf.addSummary("CrabTiming", WrapperTime = self.wrapperTime, ExeTime = self.exeTime,\
130     StageoutTime = self.stageoutTime, CpuTime = self.cpuTime)
131     jobReport.write(self.reportFileName)
132 farinafa 1.2 pass
133 spiga 1.1 else:
134     self.writeFJR()
135    
136     if __name__ == '__main__':
137     try:
138     FjrParser_ = fjrParser(sys.argv)
139     FjrParser_.run()
140     except:
141     pass
142