###testing.py ### ###Takes the same arguments as main.py, but allows for comparison against another rule engine. from rdflib.TripleStore import TripleStore from generator import generate from main import Pychinko #from ruletests.main import compareOutputs from pychinko.ruletests.main import compareOutputs import config import getopt import os import sys def run(cmd1, tag1, cmd2, tag2): print "\n%s time:" %(tag1) os.system('time ' + cmd1) print "\n%s time:" %(tag2) os.system('time ' + cmd2) def websiteTest(): cwmLoc = config.CWM pyLoc = config.PY cwmOutput = 'cwm.output' pychOutput = 'website.output' rulesFile = 'http://www.mindswap.org/~katz/rules/mindswap/website.n3' factsFile = 'http://www.mindswap.org/~katz/tests/mindswap/site-plain.n3' pychCmd = pyLoc + ' main.py --facts=' + factsFile + ' --rules=' + rulesFile + ' --output=' + pychOutput cwmCmd = cwmLoc + ' ' + factsFile + ' --triples --purge --think=' + rulesFile + ' > ' + cwmOutput run(pychCmd, "Pychinko", cwmCmd, "CWM") compareOutputs(cwmOutput, pychOutput) if __name__ == '__main__': if 0: websiteTest() sys.exit(0) opts, args = getopt.getopt(sys.argv[1:], 'ho:v', ['rules=', 'facts=']) rulesFile = None factsFile = None for option in opts: if option[0] == '--rules': rulesFile = option[1] elif option[0] == '--facts': factsFile = option[1] if not rulesFile: print "Defaulting to rules.n3" rulesFile = 'rules.n3' if not factsFile: print "No facts to test." sys.exit(0) cwmOutput = 'cwm.output' pychOutput = 'pychinko.output' cwmLoc = config.CWM pyLoc = config.PY cwmOutput = 'cwm.output' pychOutput = 'website.output' pychCmd = pyLoc + ' main.py --facts=' + factsFile + ' --rules=' + rulesFile + ' --output=' + pychOutput cwmCmd = cwmLoc + ' ' + factsFile + ' --triples --purge --think=' + rulesFile + ' > ' + cwmOutput run(pychCmd, "Pychinko", cwmCmd, "CWM") compareOutputs(cwmOutput, pychOutput)