You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@gump.apache.org by aj...@apache.org on 2003/09/25 21:33:49 UTC
cvs commit: jakarta-gump/python/gump integrate.py context.py utils.py document.py
ajack 2003/09/25 12:33:49
Modified: python/gump integrate.py context.py utils.py document.py
Log:
1) Re-used time formatting
2) Fixed icon
3) Start of work on "sumarizing results"
Revision Changes Path
1.2 +2 -2 jakarta-gump/python/gump/integrate.py
Index: integrate.py
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/integrate.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- integrate.py 29 Aug 2003 00:20:22 -0000 1.1
+++ integrate.py 25 Sep 2003 19:33:49 -0000 1.2
@@ -91,8 +91,8 @@
# Provide a news feed
rss(workspace,context)
- #display(context)
- result = context.status
+ # Return an exit code based off success
+ result = stateOk(context.status) ? 0 : 1
# static void main()
if __name__=='__main__':
1.10 +36 -3 jakarta-gump/python/gump/context.py
Index: context.py
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/context.py,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- context.py 25 Sep 2003 17:04:52 -0000 1.9
+++ context.py 25 Sep 2003 19:33:49 -0000 1.10
@@ -125,8 +125,7 @@
LEVEL_INFO : "Info",
LEVEL_WARNING : "Warning",
LEVEL_ERROR : "Error",
- LEVEL_FATAL : "Fatal" }
-
+ LEVEL_FATAL : "Fatal" }
def levelName(level):
return levelDescriptions.get(level,'Unknown Level:' + str(level))
@@ -296,6 +295,15 @@
cmp = self.state < other.state
if not cmp: cmp = self.reason < other.reason
return cmp
+
+class Summary:
+ """ Contains an overview """
+ def __init__(self,successes,failures,prereqs,other,statepairs):
+ self.successes=successes
+ self.failures=failures
+ self.prereqs=prereqs
+ self.other=other
+ self.statepair=statepairs
class Context:
"""Context for a single entity"""
@@ -351,13 +359,38 @@
def aggregateStates(self, states=None):
if not states: states=[]
pair=self.getStatePair()
- # Add self, if not already there
+ # Add state, if not already there
if not stateUnset(pair.state) and not pair in states: \
states.append(pair)
# Subbordinates
for ctxt in self:
ctxt.aggregateStates(states)
return states;
+
+ def getSummary(self,summary=None):
+ if not summary:
+ summary=Summary(0,0,0,0,[])
+
+ # Stand up and be counted
+ if not stateUnit(self.state):
+ if stateOk(self.state):
+ summary.successes+=1
+ elif STATUS_PREREQ_FAILURE == self.state:
+ summary.prereqs+=1
+ elif STATUS_FAILED == self.state:
+ summary.failures+=1
+ else:
+ summary.other+=1
+
+ # Add state, if not already there
+ if not stateUnset(pair.state) and not pair in summary.statepairs: \
+ summary.statepairs.append(pair)
+
+ # Subordinates
+ for ctxt in self:
+ ctxt.getSummary(summary)
+
+ return summary;
def propagateErrorState(self,state,reason=REASON_UNSET,cause=None):
#
1.3 +34 -1 jakarta-gump/python/gump/utils.py
Index: utils.py
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/utils.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- utils.py 23 Sep 2003 23:16:20 -0000 1.2
+++ utils.py 25 Sep 2003 19:33:49 -0000 1.3
@@ -65,6 +65,9 @@
import logging
import types, StringIO
+from gump import log
+from gump.conf import default
+
###############################################################################
# Base classes for the Displayable Objects
###############################################################################
@@ -164,6 +167,32 @@
if not f: f = sys.stdout
f.write( '%s\n' % (indent + ' ---------------------------------------------------- Gumpy'))
+def secsToElapsedTime(secs):
+ # Extract Hours
+ if secs > 3600:
+ hours = int(secs / 3600)
+ secs %= 3600
+ else:
+ hours = 0
+
+ # Extract Minutes
+ if secs > 60:
+ mins = int(secs / 60)
+ secs %= 60
+ else:
+ mins = 0
+
+ # Seconds
+ secs = int(round(secs,0))
+
+ return (hours, mins, secs)
+
+def secsToString(secs):
+ return ('%02d:%02d:%02d' % secsToElapsedTime(secs))
+
+def elapsedTimeToString(elapsed):
+ return ('%02d:%02d:%02d' % elapsed)
+
if __name__=='__main__':
# init logging
@@ -172,5 +201,9 @@
#set verbosity to show all messages of severity >= default.logLevel
log.setLevel(default.logLevel)
- dump(log)
+ #dump(log)
+
+ print "secsToElapsedTime(1340) : " + str(secsToElapsedTime(1340))
+ print "secsToString(1340) : " + secsToString(1340)
+ print "elapsedTimeToString(secsToElapsedTime(1340)) : " + elapsedTimeToString(secsToElapsedTime(1340))
1.40 +7 -10 jakarta-gump/python/gump/document.py
Index: document.py
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/document.py,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- document.py 25 Sep 2003 18:17:22 -0000 1.39
+++ document.py 25 Sep 2003 19:33:49 -0000 1.40
@@ -285,11 +285,11 @@
if not Module.list.has_key(mname): continue
if moduleFilterList and not mctxt.module in moduleFilterList: continue
mcount+=1
- (mhours, mmins, msecs) = mctxt.elapsedTime();
+
x.write(' <tr><!-- %s -->\n' % (mname))
x.write(' <td><link href=\'%s\'>%s</link></td><td>%s</td>\n' % \
(getModuleRelativeUrl(mname),mname,getStateIcons(mctxt.aggregateStates())))
- x.write(' <td>%s:%s:%s</td>\n' % (str(mhours),str(mmins),str(msecs)))
+ x.write(' <td>%s</td>\n' % elapsedTimeToString(mctxt.elapsedTime()))
x.write(' </tr>\n\n')
if not mcount: x.write(' <tr><td>None</td></tr>')
endTableXDoc(x)
@@ -401,12 +401,11 @@
if projectFilterList and not pctxt.project in projectFilterList: continue
pname=pctxt.name
pcount+=1
-
- (phours, pmins, psecs) = pctxt.elapsedTime();
+
x.write(' <tr><!-- %s -->' % (pname))
x.write(' <td><link href=\'%s\'>%s</link></td><td>%s</td><td>%s</td>' % \
(getProjectRelativeUrl(pname),pname,stateName(pctxt.status),reasonString(pctxt.reason)))
- x.write(' <td>%s:%s:%s</td>' % (str(phours),str(pmins),str(psecs)))
+ x.write(' <td>%s</td>' % elapsedTimeToString(pctxt.elapsedTime()))
x.write(' </tr>')
if not pcount: x.write(' <tr><td>None</td></tr>')
@@ -536,7 +535,7 @@
x.write(' <tr><!-- %s -->' % (workTypeName(work.type)))
x.write(' <td><link href=\'%s\'>%s</link></td>' % (getWorkRelativeUrl(work.type,work.command.name),work.command.name))
x.write(' <td>%s</td>' % (workTypeName(work.type)))
- x.write(' <td>%s</td><td>%s secs.</td>' % (stateName(work.status), str(work.secs)))
+ x.write(' <td>%s</td><td>%s</td>' % (stateName(work.status), secsToString(work.secs)))
x.write(' </tr>')
x.write(' </table>\n')
endSectionXDoc(x)
@@ -680,9 +679,7 @@
startTableXDoc(x,'Modules By Elapsed')
for mctxt in stats.modulesByElapsed:
if moduleFilterList and not mctxt.module in moduleFilterList: continue
- (hours,mins,secs)=mctxt.elapsedTime()
- timeFormat=str(hours)+":"+str(mins)+":"+str(secs)
- titledXDataInTableXDoc(x,getContextLink(mctxt), timeFormat)
+ titledXDataInTableXDoc(x,getContextLink(mctxt), elapsedTimeToString(mctxt.elapsedTime()))
endTableXDoc(x)
@@ -982,7 +979,7 @@
# Build the URL
iconName=gumpSafeName(lower(replace(uniqueName,' ','_')))
- url = getUp(depth)+"resources/icons/"+iconName+".png";
+ url = getUp(depth)+"icons/"+iconName+".png";
# Build the <icon xdoc
return '<icon src=\'' + url + '\' alt=\'' + description +'\'/>'