62                     raise
  63                 self.stream.close()
  64                 self.stream = self._open()
  65                 self.tries += 1
  66 
  67 class Result(object):
  68     total = 0
  69     runresults = {'PASS': 0, 'FAIL': 0, 'SKIP': 0, 'KILLED': 0}
  70 
  71     def __init__(self):
  72         self.starttime = None
  73         self.returncode = None
  74         self.runtime = ''
  75         self.stdout = []
  76         self.stderr = []
  77         self.result = ''
  78 
  79     def done(self, proc, killed):
  80         """
  81         Finalize the results of this Cmd.
  82         """
  83         Result.total += 1
  84         m, s = divmod(time() - self.starttime, 60)
  85         self.runtime = '%02d:%02d' % (m, s)
  86         self.returncode = proc.returncode
  87         if killed:
  88             self.result = 'KILLED'
  89             Result.runresults['KILLED'] += 1
  90         elif self.returncode is 0:
  91             self.result = 'PASS'
  92             Result.runresults['PASS'] += 1
  93         elif self.returncode is not 0:
  94             self.result = 'FAIL'
  95             Result.runresults['FAIL'] += 1
  96 
  97 
  98 class Output(object):
  99     """
 100     This class is a slightly modified version of the 'Stream' class found
 101     here: http://goo.gl/aSGfv
 102     """
 103     def __init__(self, stream):
 104         self.stream = stream
 105         self._buf = ''
 106         self.lines = []
 107 
 108     def fileno(self):
 109         return self.stream.fileno()
 110 
 111     def read(self, drain=0):
 112         """
 
 | 
 
 
  62                     raise
  63                 self.stream.close()
  64                 self.stream = self._open()
  65                 self.tries += 1
  66 
  67 class Result(object):
  68     total = 0
  69     runresults = {'PASS': 0, 'FAIL': 0, 'SKIP': 0, 'KILLED': 0}
  70 
  71     def __init__(self):
  72         self.starttime = None
  73         self.returncode = None
  74         self.runtime = ''
  75         self.stdout = []
  76         self.stderr = []
  77         self.result = ''
  78 
  79     def done(self, proc, killed):
  80         """
  81         Finalize the results of this Cmd.
  82         Report SKIP for return codes 3,4 (NOTINUSE, UNSUPPORTED)
  83         as defined in ../stf/include/stf.shlib
  84         """
  85         Result.total += 1
  86         m, s = divmod(time() - self.starttime, 60)
  87         self.runtime = '%02d:%02d' % (m, s)
  88         self.returncode = proc.returncode
  89         if killed:
  90             self.result = 'KILLED'
  91             Result.runresults['KILLED'] += 1
  92         elif self.returncode is 0:
  93             self.result = 'PASS'
  94             Result.runresults['PASS'] += 1
  95         elif self.returncode is 3 or self.returncode is 4:
  96             self.result = 'SKIP'
  97             Result.runresults['SKIP'] += 1
  98         elif self.returncode is not 0:
  99             self.result = 'FAIL'
 100             Result.runresults['FAIL'] += 1
 101 
 102 
 103 class Output(object):
 104     """
 105     This class is a slightly modified version of the 'Stream' class found
 106     here: http://goo.gl/aSGfv
 107     """
 108     def __init__(self, stream):
 109         self.stream = stream
 110         self._buf = ''
 111         self.lines = []
 112 
 113     def fileno(self):
 114         return self.stream.fileno()
 115 
 116     def read(self, drain=0):
 117         """
 
 |