From 6f8a625e9f750d61db9834b0ed3fb29fc6edabfe Mon Sep 17 00:00:00 2001 From: Ludwig Fueracker <ludwig.fueracker@fau.de> Date: Tue, 12 Jul 2016 13:38:46 +0200 Subject: [PATCH] script for validating hashes; already working for current musl records --- validate_hashes.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 validate_hashes.py diff --git a/validate_hashes.py b/validate_hashes.py new file mode 100755 index 0000000..310be3f --- /dev/null +++ b/validate_hashes.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python + +import fnmatch +import os +import sys + + +#TODO: alle generierten/gemessenen werte einlesen und vergleichen +# wsl am besten einfach beim neuesten commit anfangen und dann rueckwaerts vorgehen + +def getListOfFiles(directory): + for root, dirnames, filenames in os.walk(directory): + for filename in fnmatch.filter(filenames, '*.info'): + yield os.path.join(root, filename) + + +def printHashInfo(message, prevRecord, record, isError=True): + print "%s: file %s, commits %s to %s : %s" % ("ERROR" if isError else "INFO", record['filename'], prevRecord['commit-hash'], record['commit-hash'], message) + + +def validateHashes(records): + + #TODO: sort files by start-time + + iterRecords = iter(records) + prevRecord = next(iterRecords) + filename = prevRecord['filename'] + if 'ast-hash' not in prevRecord.keys(): + print "MISSING: no ast-hash in records for file " + filename + return + for record in records: + if prevRecord['ast-hash'] == record['ast-hash']: + if prevRecord['object-hash'] != record['object-hash']: + printHashInfo("ast hashes same, object hashes differ", prevRecord, record) + if prevRecord['object-hash'] != record['object-hash']: + if prevRecord['ast-hash'] == record['ast-hash']: + printHashInfo("object hashes differ, ast hashes same", prevRecord, record) + elif prevRecord['ast-hash'] != record['ast-hash']: + printHashInfo("ast hashes differ, object hashes same", prevRecord, record, False) + + prevRecord = record + + +################################################################################ + +if (len(sys.argv) > 1): + pathToRecords = sys.argv[1] + records = [] + for filename in getListOfFiles(pathToRecords): + records = [eval(line) for line in open(filename)] + validateHashes(records) +else: + print "Missing path to record files.\nUsage:\n\t%s pathToRecords" % sys.argv[0] + -- GitLab