ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/fillCrabFjr.py
Revision: 1.3
Committed: Wed Jun 4 17:45:52 2008 UTC (16 years, 10 months ago) by farinafa
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_2_3_1_pre2, CRAB_2_3_0, CRAB_2_3_0_pre6, CRAB_2_3_0_pre1, CRAB_2_2_2_pre5, CRAB_2_2_2_pre4, CRAB_2_2_2_pre3
Branch point for: CRAB_2_3_0_br
Changes since 1.2: +3 -0 lines
Log Message:
Added profiling times to the performance section of jobReport as suggested by Dave

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