ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/fillCrabFjr.py
Revision: 1.3.4.1
Committed: Wed Jul 2 08:54:12 2008 UTC (16 years, 9 months ago) by spiga
Content type: text/x-python
Branch: CRAB_2_3_0_br
CVS Tags: CRAB_2_3_1, CRAB_2_3_1_pre6, CRAB_2_3_1_pre5, CRAB_2_3_1_pre4, CRAB_2_3_1_pre3
Changes since 1.3: +11 -3 lines
Log Message:
fix for quote

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 spiga 1.3.4.1 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 spiga 1.3.4.1 self.cpuTime = 'NULL'
39 farinafa 1.2 try:
40     self.wrapperTime = argv[3]
41     self.exeTime = argv[4]
42     self.stageoutTime = argv[5]
43 spiga 1.3.4.1 # pay attenition that the input env var is actually a string of 3 attrutes # Fabio
44     self.cpuTime = "%s %s %s"%(argv[6], argv[7], argv[8])
45     self.cpuTime.replace('"','').replace('"','')
46 farinafa 1.2 except:
47     pass
48     else:
49     print "bad directive specified"
50     sys.exit(2)
51 spiga 1.1 return
52    
53     def run(self):
54    
55     if not os.path.exists(self.reportFileName):
56     self.writeFJR()
57     else:
58     self.fillFJR()
59     self.setStatus()
60    
61     return
62    
63     def setStatus(self):
64     """
65     """
66     if (self.wrapperExitCode == '0') and (self.exeExitCode == '0'):
67     status = 'Success'
68     else:
69     status = 'Failed'
70    
71     jobReport = readJobReport(self.reportFileName)[0]
72     jobReport.status = status
73     jobReport.write(self.reportFileName)
74    
75     return
76    
77     def writeFJR(self):
78     """
79     """
80     fwjr = FwkJobReport()
81     fwjr.addError(self.wrapperExitCode, "WrapperExitCode")
82     if (self.exeExitCode != ""):
83     fwjr.addError(self.exeExitCode, "ExeExitCode")
84     fwjr.write(self.reportFileName)
85    
86     return
87    
88     def checkValidFJR(self):
89     """
90     """
91     valid = 0
92     fjr=open(self.reportFileName,'r')
93     lines = fjr.readlines()
94     if len(lines) > 0: valid = 1
95    
96     return valid
97    
98     def fillFJR(self):
99     """
100     """
101     valid = self.checkValidFJR()
102 farinafa 1.2 if valid == 1 and self.directive=='--errorcode':
103 spiga 1.1 jobReport = readJobReport(self.reportFileName)[0]
104     if (len(jobReport.errors) > 0):
105     error = 0
106     for err in jobReport.errors:
107     if err['Type'] == "WrapperExitCode" :
108     err['ExitStatus'] = self.wrapperExitCode
109     jobReport.write(self.reportFileName)
110     error = 1
111     if (self.exeExitCode != ""):
112     if err['Type'] == "ExeExitCode" :
113     err['ExitStatus'] = self.exeExitCode
114     jobReport.write(self.reportFileName)
115     error = 1
116     if (error == 0):
117     jobReport.addError(self.wrapperExitCode, "WrapperExitCode")
118     if (self.exeExitCode != ""):
119     jobReport.addError(self.exeExitCode, "ExeExitCode")
120     jobReport.write(self.reportFileName)
121     else:
122     jobReport.addError(self.wrapperExitCode, "WrapperExitCode")
123     if (self.exeExitCode != ""):
124     jobReport.addError(self.exeExitCode, "ExeExitCode")
125     jobReport.write(self.reportFileName)
126 farinafa 1.2
127     elif valid == 1 and self.directive=='--timing':
128 spiga 1.3.4.1 jobReport = readJobReport(self.reportFileName)[0]
129 farinafa 1.2 # add here timing settings
130 spiga 1.3.4.1 perf = jobReport.performance
131     perf.addSummary("CrabTiming", WrapperTime = self.wrapperTime, ExeTime = self.exeTime,\
132     StageoutTime = self.stageoutTime, CpuTime = self.cpuTime)
133     jobReport.write(self.reportFileName)
134 farinafa 1.2 pass
135 spiga 1.1 else:
136     self.writeFJR()
137    
138     if __name__ == '__main__':
139     try:
140     FjrParser_ = fjrParser(sys.argv)
141     FjrParser_.run()
142     except:
143     pass
144