From: Sverre Rabbelier <srabbelier@gmail.com>
To: git@vger.kernel.org
Cc: dsymonds@gmail.com, Sverre Rabbelier <srabbelier@gmail.com>
Subject: [PATCH 2/3] A simple python script to parse the results from the testcases
Date: Mon, 12 May 2008 11:33:51 +0200 [thread overview]
Message-ID: <1210584832-16402-3-git-send-email-srabbelier@gmail.com> (raw)
In-Reply-To: <1210584832-16402-1-git-send-email-srabbelier@gmail.com>
This is a simple script that aggregates key:value pairs in a file.
I am sure this can be done better with a 'grep | sed | awk' combination,
my skills with awk / your program of choice is not as profound.
This script serves more as a demonstration on how to use the testcase output.
Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
---
t/key_value_parser.py | 78 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 78 insertions(+), 0 deletions(-)
create mode 100755 t/key_value_parser.py
diff --git a/t/key_value_parser.py b/t/key_value_parser.py
new file mode 100755
index 0000000..e172df1
--- /dev/null
+++ b/t/key_value_parser.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+
+"""Module for parsing files with 'key value' pairs.
+
+Usage summary: key_value_parser.py "path/to/file"
+"""
+
+def parseFile(path):
+ """Parses a file containing pair value couples.
+
+ The values are expected to be integers.
+ If more than one value for a pair is found, these values are aggregated.
+ The size of the longest key is stored in '__maxsize'.
+ A dictionairy with only '__maxsize:0' is returned if an error occured.
+ """
+
+ dict = {"__maxsize" : 0}
+
+ try:
+ file = open(path)
+ for line in file:
+ if line == '\n':
+ continue
+
+ pos = line.index(' ')
+ key = line[:pos]
+
+ # Skip the space and the trailing newline
+ value = line[pos+1:-1]
+ intvalue = int(value)
+
+ if key in dict:
+ dict[key] = intvalue + dict[key]
+ else:
+ dict[key] = intvalue
+
+ if len(key) > dict["__maxsize"]:
+ dict["__maxsize"] = len(key)
+
+ except IOError:
+ print("Cannot open or read from file " + path)
+ except ValueError:
+ print("Malformed line in file ")
+
+ return dict
+
+def main(argv):
+ """ Invokes parseFile on the path specified as argument.
+
+ If no argument is specified, a default of
+ '/tmp/git-test-results' is used.
+
+ The resulting dictionary is printed, ignoring keys starting with '__'.
+ All output is left justified to the size of the largest key.
+ """
+ path = "/tmp/git-test-results"
+
+ # If a path was specified as argument, use that
+ if len(argv) > 1:
+ path = argv[1]
+
+ # Parse the file
+ dict = parseFile(path)
+
+ # Retreive the max size and add one space for readability
+ maxsize = dict["__maxsize"] + 1
+
+ # Print the result
+ for key,value in dict.iteritems():
+ # Don't print meta-data
+ if key.startswith("__"):
+ continue
+
+ print(key.ljust(maxsize) + str(value))
+
+if __name__ == '__main__':
+ import sys
+ main(sys.argv)
--
1.5.5.1.178.g1f811
next prev parent reply other threads:[~2008-05-12 10:01 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-12 9:33 [PATCH 0/3] Aggregate testcase results Sverre Rabbelier
2008-05-12 9:33 ` [PATCH 1/3] Modified test-lib.sh to output stats to /tmp/git-test-results Sverre Rabbelier
2008-05-12 14:55 ` Vegard Nossum
2008-05-12 9:33 ` Sverre Rabbelier [this message]
2008-05-12 10:14 ` [PATCH 2/3] A simple python script to parse the results from the testcases Jakub Narebski
2008-05-12 10:16 ` Sverre Rabbelier
2008-05-12 13:00 ` Johannes Schindelin
2008-05-12 13:05 ` Sverre Rabbelier
2008-05-12 13:24 ` Johannes Schindelin
2008-06-08 0:18 ` [PATCH] A simple " Miklos Vajna
2008-06-08 0:34 ` Sverre Rabbelier
2008-06-08 0:49 ` Miklos Vajna
2008-06-08 0:56 ` Sverre Rabbelier
2008-06-08 2:26 ` Miklos Vajna
2008-06-08 11:43 ` Sverre Rabbelier
2008-06-08 17:27 ` Johannes Schindelin
2008-06-08 17:30 ` Sverre Rabbelier
2008-06-08 18:06 ` Mikael Magnusson
2008-06-08 18:09 ` Sverre Rabbelier
2008-05-12 9:33 ` [PATCH 3/3] Hook up the result aggregation in the test makefile Sverre Rabbelier
2008-05-12 15:03 ` Vegard Nossum
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1210584832-16402-3-git-send-email-srabbelier@gmail.com \
--to=srabbelier@gmail.com \
--cc=dsymonds@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).