Convert all python code to use four-space indents instead of eight-space tabs.
Signed-off-by: John Admanski <jadmanski@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@1658 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/tko/parse.py b/tko/parse.py
index 6d88d83..bdccdda 100755
--- a/tko/parse.py
+++ b/tko/parse.py
@@ -8,194 +8,194 @@
def parse_args():
- # build up our options parser and parse sys.argv
- parser = optparse.OptionParser()
- parser.add_option("-m", help="Send mail for FAILED tests",
- dest="mailit", action="store_true")
- parser.add_option("-r", help="Reparse the results of a job",
- dest="reparse", action="store_true")
- parser.add_option("-o", help="Parse a single results directory",
- dest="singledir", action="store_true")
- parser.add_option("-l", help=("Levels of subdirectories to include "
- "in the job name"),
- type="int", dest="level", default=1)
- parser.add_option("-n", help="No blocking on an existing parse",
- dest="noblock", action="store_true")
- parser.add_option("-s", help="Database server hostname",
- dest="db_host", action="store")
- parser.add_option("-u", help="Database username", dest="db_user",
- action="store")
- parser.add_option("-p", help="Database password", dest="db_pass",
- action="store")
- parser.add_option("-d", help="Database name", dest="db_name",
- action="store")
- options, args = parser.parse_args()
+ # build up our options parser and parse sys.argv
+ parser = optparse.OptionParser()
+ parser.add_option("-m", help="Send mail for FAILED tests",
+ dest="mailit", action="store_true")
+ parser.add_option("-r", help="Reparse the results of a job",
+ dest="reparse", action="store_true")
+ parser.add_option("-o", help="Parse a single results directory",
+ dest="singledir", action="store_true")
+ parser.add_option("-l", help=("Levels of subdirectories to include "
+ "in the job name"),
+ type="int", dest="level", default=1)
+ parser.add_option("-n", help="No blocking on an existing parse",
+ dest="noblock", action="store_true")
+ parser.add_option("-s", help="Database server hostname",
+ dest="db_host", action="store")
+ parser.add_option("-u", help="Database username", dest="db_user",
+ action="store")
+ parser.add_option("-p", help="Database password", dest="db_pass",
+ action="store")
+ parser.add_option("-d", help="Database name", dest="db_name",
+ action="store")
+ options, args = parser.parse_args()
- # we need a results directory
- if len(args) == 0:
- tko_utils.dprint("ERROR: at least one results directory must "
- "be provided")
- parser.print_help()
- sys.exit(1)
+ # we need a results directory
+ if len(args) == 0:
+ tko_utils.dprint("ERROR: at least one results directory must "
+ "be provided")
+ parser.print_help()
+ sys.exit(1)
- # pass the options back
- return options, args
+ # pass the options back
+ return options, args
def format_failure_message(jobname, kernel, testname, status, reason):
- format_string = "%-12s %-20s %-12s %-10s %s"
- return format_string % (jobname, kernel, testname, status, reason)
+ format_string = "%-12s %-20s %-12s %-10s %s"
+ return format_string % (jobname, kernel, testname, status, reason)
def mailfailure(jobname, job, message):
- message_lines = [""]
- message_lines.append("The following tests FAILED for this job")
- message_lines.append("http://%s/results/%s" %
- (socket.gethostname(), jobname))
- message_lines.append("")
- message_lines.append(format_failure_message("Job name", "Kernel",
- "Test name", "FAIL/WARN",
- "Failure reason"))
- message_lines.append(format_failure_message("=" * 8, "=" * 6, "=" * 8,
- "=" * 8, "=" * 14))
- message_header = "\n".join(message_lines)
+ message_lines = [""]
+ message_lines.append("The following tests FAILED for this job")
+ message_lines.append("http://%s/results/%s" %
+ (socket.gethostname(), jobname))
+ message_lines.append("")
+ message_lines.append(format_failure_message("Job name", "Kernel",
+ "Test name", "FAIL/WARN",
+ "Failure reason"))
+ message_lines.append(format_failure_message("=" * 8, "=" * 6, "=" * 8,
+ "=" * 8, "=" * 14))
+ message_header = "\n".join(message_lines)
- subject = "AUTOTEST: FAILED tests from job %s" % jobname
- mail.send("", job.user, "", subject, message_header + message)
+ subject = "AUTOTEST: FAILED tests from job %s" % jobname
+ mail.send("", job.user, "", subject, message_header + message)
def parse_one(db, jobname, path, reparse, mail_on_failure):
- """
- Parse a single job. Optionally send email on failure.
- """
- tko_utils.dprint("\nScanning %s (%s)" % (jobname, path))
- if reparse and db.find_job(jobname):
- tko_utils.dprint("! Deleting old copy of job results to "
- "reparse it")
- db.delete_job(jobname)
- if db.find_job(jobname):
- tko_utils.dprint("! Job is already parsed, done")
- return
+ """
+ Parse a single job. Optionally send email on failure.
+ """
+ tko_utils.dprint("\nScanning %s (%s)" % (jobname, path))
+ if reparse and db.find_job(jobname):
+ tko_utils.dprint("! Deleting old copy of job results to "
+ "reparse it")
+ db.delete_job(jobname)
+ if db.find_job(jobname):
+ tko_utils.dprint("! Job is already parsed, done")
+ return
- # look up the status version
- try:
- job_keyval = utils.read_keyval(path)
- except IOError, e:
- if e.errno == errno.ENOENT:
- status_version = 0
- else:
- raise
- else:
- status_version = job_keyval.get("status_version", 0)
+ # look up the status version
+ try:
+ job_keyval = utils.read_keyval(path)
+ except IOError, e:
+ if e.errno == errno.ENOENT:
+ status_version = 0
+ else:
+ raise
+ else:
+ status_version = job_keyval.get("status_version", 0)
- # parse out the job
- parser = status_lib.parser(status_version)
- job = parser.make_job(path)
- status_log = os.path.join(path, "status.log")
- if not os.path.exists(status_log):
- status_log = os.path.join(path, "status")
- if not os.path.exists(status_log):
- tko_utils.dprint("! Unable to parse job, no status file")
- return
+ # parse out the job
+ parser = status_lib.parser(status_version)
+ job = parser.make_job(path)
+ status_log = os.path.join(path, "status.log")
+ if not os.path.exists(status_log):
+ status_log = os.path.join(path, "status")
+ if not os.path.exists(status_log):
+ tko_utils.dprint("! Unable to parse job, no status file")
+ return
- # parse the status logs
- tko_utils.dprint("+ Parsing dir=%s, jobname=%s" % (path, jobname))
- status_lines = open(status_log).readlines()
- parser.start(job)
- tests = parser.end(status_lines)
- job.tests = tests
+ # parse the status logs
+ tko_utils.dprint("+ Parsing dir=%s, jobname=%s" % (path, jobname))
+ status_lines = open(status_log).readlines()
+ parser.start(job)
+ tests = parser.end(status_lines)
+ job.tests = tests
- # check for failures
- message_lines = [""]
- for test in job.tests:
- if not test.subdir:
- continue
- tko_utils.dprint("* testname, status, reason: %s %s %s"
- % (test.subdir, test.status, test.reason))
- if test.status in ("FAIL", "WARN"):
- message_lines.append(format_failure_message(
- jobname, test.kernel.base, test.subdir,
- test.status, test.reason))
- message = "\n".join(message_lines)
+ # check for failures
+ message_lines = [""]
+ for test in job.tests:
+ if not test.subdir:
+ continue
+ tko_utils.dprint("* testname, status, reason: %s %s %s"
+ % (test.subdir, test.status, test.reason))
+ if test.status in ("FAIL", "WARN"):
+ message_lines.append(format_failure_message(
+ jobname, test.kernel.base, test.subdir,
+ test.status, test.reason))
+ message = "\n".join(message_lines)
- # send out a email report of failure
- if len(message) > 2 and mail_on_failure:
- tko_utils.dprint("Sending email report of failure on %s to %s"
- % (jobname, job.user))
- mailfailure(jobname, job, message)
+ # send out a email report of failure
+ if len(message) > 2 and mail_on_failure:
+ tko_utils.dprint("Sending email report of failure on %s to %s"
+ % (jobname, job.user))
+ mailfailure(jobname, job, message)
- # write the job into the database
- db.insert_job(jobname, job)
- db.commit()
+ # write the job into the database
+ db.insert_job(jobname, job)
+ db.commit()
def parse_path(db, path, level, reparse, mail_on_failure):
- machine_list = os.path.join(path, ".machines")
- if os.path.exists(machine_list):
- # multi-machine job
- for m in file(machine_list):
- machine = m.rstrip()
- if not machine:
- continue
- jobpath = os.path.join(path, machine)
- jobname = "%s/%s" % (os.path.basename(path), machine)
- try:
- db.run_with_retry(parse_one, db, jobname,
- path, reparse,
- mail_on_failure)
- except Exception:
- traceback.print_exc()
- continue
- else:
- # single machine job
- job_elements = path.split("/")[-level:]
- jobname = "/".join(job_elements)
- try:
- db.run_with_retry(parse_one, db, jobname, path,
- reparse, mail_on_failure)
- except Exception:
- traceback.print_exc()
+ machine_list = os.path.join(path, ".machines")
+ if os.path.exists(machine_list):
+ # multi-machine job
+ for m in file(machine_list):
+ machine = m.rstrip()
+ if not machine:
+ continue
+ jobpath = os.path.join(path, machine)
+ jobname = "%s/%s" % (os.path.basename(path), machine)
+ try:
+ db.run_with_retry(parse_one, db, jobname,
+ path, reparse,
+ mail_on_failure)
+ except Exception:
+ traceback.print_exc()
+ continue
+ else:
+ # single machine job
+ job_elements = path.split("/")[-level:]
+ jobname = "/".join(job_elements)
+ try:
+ db.run_with_retry(parse_one, db, jobname, path,
+ reparse, mail_on_failure)
+ except Exception:
+ traceback.print_exc()
def main():
- options, args = parse_args()
- results_dir = os.path.abspath(args[0])
- assert os.path.exists(results_dir)
+ options, args = parse_args()
+ results_dir = os.path.abspath(args[0])
+ assert os.path.exists(results_dir)
- # build up the list of job dirs to parse
- if options.singledir:
- jobs_list = [results_dir]
- else:
- jobs_list = [os.path.join(results_dir, subdir)
- for subdir in os.listdir(results_dir)]
+ # build up the list of job dirs to parse
+ if options.singledir:
+ jobs_list = [results_dir]
+ else:
+ jobs_list = [os.path.join(results_dir, subdir)
+ for subdir in os.listdir(results_dir)]
- # build up the database
- db = tko_db.db(autocommit=False, host=options.db_host,
- user=options.db_user, password=options.db_pass,
- database=options.db_name)
+ # build up the database
+ db = tko_db.db(autocommit=False, host=options.db_host,
+ user=options.db_user, password=options.db_pass,
+ database=options.db_name)
- # parse all the jobs
- for path in jobs_list:
- lockfile = open(os.path.join(path, ".parse.lock"), "w")
- flags = fcntl.LOCK_EX
- if options.noblock:
- flags != fcntl.LOCK_NB
- try:
- fcntl.flock(lockfile, flags)
- except IOError, e:
- # was this because the lock is unavailable?
- if e.errno == errno.EWOULDBLOCK:
- lockfile.close()
- continue
- else:
- raise # something unexpected happened
- try:
- parse_path(db, path, options.level, options.reparse,
- options.mailit)
- finally:
- fcntl.flock(lockfile, fcntl.LOCK_UN)
- lockfile.close()
+ # parse all the jobs
+ for path in jobs_list:
+ lockfile = open(os.path.join(path, ".parse.lock"), "w")
+ flags = fcntl.LOCK_EX
+ if options.noblock:
+ flags != fcntl.LOCK_NB
+ try:
+ fcntl.flock(lockfile, flags)
+ except IOError, e:
+ # was this because the lock is unavailable?
+ if e.errno == errno.EWOULDBLOCK:
+ lockfile.close()
+ continue
+ else:
+ raise # something unexpected happened
+ try:
+ parse_path(db, path, options.level, options.reparse,
+ options.mailit)
+ finally:
+ fcntl.flock(lockfile, fcntl.LOCK_UN)
+ lockfile.close()
if __name__ == "__main__":
- main()
+ main()