@ -178,7 +178,7 @@ class JobSpec(object):
def __cmp__ ( self , other ) :
return self . identity ( ) == other . identity ( )
def __repr__ ( self ) :
return ' JobSpec(shortname= %s , cmdline= %s ) ' % ( self . shortname , self . cmdline )
@ -191,7 +191,7 @@ class JobResult(object):
self . num_failures = 0
self . retries = 0
self . message = ' '
class Job ( object ) :
""" Manages one job. """
@ -239,9 +239,11 @@ class Job(object):
def state ( self , update_cache ) :
""" Poll current state of the job. Prints messages at completion. """
self . _tempfile . seek ( 0 )
stdout = self . _tempfile . read ( )
self . result . message = stdout [ - _MAX_RESULT_SIZE : ]
def stdout ( self = self ) :
self . _tempfile . seek ( 0 )
stdout = self . _tempfile . read ( )
self . result . message = stdout [ - _MAX_RESULT_SIZE : ]
return stdout
if self . _state == _RUNNING and self . _process . poll ( ) is not None :
elapsed = time . time ( ) - self . _start
self . result . elapsed_time = elapsed
@ -249,7 +251,7 @@ class Job(object):
if self . _retries < self . _spec . flake_retries :
message ( ' FLAKE ' , ' %s [ret= %d , pid= %d ] ' % (
self . _spec . shortname , self . _process . returncode , self . _process . pid ) ,
stdout , do_newline = True )
stdout ( ) , do_newline = True )
self . _retries + = 1
self . result . num_failures + = 1
self . result . retries = self . _timeout_retries + self . _retries
@ -259,7 +261,7 @@ class Job(object):
if not self . _suppress_failure_message :
message ( ' FAILED ' , ' %s [ret= %d , pid= %d ] ' % (
self . _spec . shortname , self . _process . returncode , self . _process . pid ) ,
stdout , do_newline = True )
stdout ( ) , do_newline = True )
self . result . state = ' FAILED '
self . result . num_failures + = 1
self . result . returncode = self . _process . returncode
@ -273,7 +275,7 @@ class Job(object):
update_cache . finished ( self . _spec . identity ( ) , self . _bin_hash )
elif self . _state == _RUNNING and time . time ( ) - self . _start > self . _spec . timeout_seconds :
if self . _timeout_retries < self . _spec . timeout_retries :
message ( ' TIMEOUT_FLAKE ' , ' %s [pid= %d ] ' % ( self . _spec . shortname , self . _process . pid ) , stdout , do_newline = True )
message ( ' TIMEOUT_FLAKE ' , ' %s [pid= %d ] ' % ( self . _spec . shortname , self . _process . pid ) , stdout ( ) , do_newline = True )
self . _timeout_retries + = 1
self . result . num_failures + = 1
self . result . retries = self . _timeout_retries + self . _retries
@ -282,7 +284,7 @@ class Job(object):
self . _process . terminate ( )
self . start ( )
else :
message ( ' TIMEOUT ' , ' %s [pid= %d ] ' % ( self . _spec . shortname , self . _process . pid ) , stdout , do_newline = True )
message ( ' TIMEOUT ' , ' %s [pid= %d ] ' % ( self . _spec . shortname , self . _process . pid ) , stdout ( ) , do_newline = True )
self . kill ( )
self . result . state = ' TIMEOUT '
self . result . num_failures + = 1
@ -297,7 +299,7 @@ class Job(object):
def suppress_failure_message ( self ) :
self . _suppress_failure_message = True
class Jobset ( object ) :
""" Manages one run of jobs. """