source: trunk/QA/parabix_wf.py @ 450

Last change on this file since 450 was 450, checked in by cameron, 9 years ago

Include xmlconf

File size: 2.7 KB
Line 
1import libxml2
2from subprocess import *
3import os
4import shutil
5import fnmatch                 
6import xml.parsers.expat
7from string import *
8
9parabix_home = "/home/likewise-open/ADSFU/cameron/proto/parabix2/compiled"
10xmlconf_home = "/home/likewise-open/ADSFU/cameron/proto/parabix2/compiled/QA/xmlconf"
11output_home = "/home/likewise-open/ADSFU/cameron/proto/parabix2/compiled/QA/testoutput"
12output_files = output_home+"/Files"
13output_messages = output_home+"/Messages"
14program_to_test = "xmlwf"
15edition5_program_to_test = 'markup_stats_5e'
16testcases = []
17
18subdir_prefix = ''
19
20def load(filename):
21    xml_conf = libxml2.createFileParserCtxt(filename)
22    xml_conf.replaceEntities(1)
23    xml_conf.parseDocument()
24    doc = xml_conf.doc()
25    return doc
26
27def start_element(name, attrs):
28        global subdir_prefix
29        if name == 'TESTCASES':
30                for a in attrs:
31                        if a == 'xml:base':
32                                subdir_prefix = '/'+attrs[a]   
33                               
34        elif name == 'TEST':
35                program = program_to_test
36                #for a in attrs:
37                        #if a == 'EDITION':
38                                #if attrs[a] == '5':
39                                        #program = edition5_program_to_test
40                for a in attrs:
41                        if a == 'URI':
42                                addr = attrs[a].split('/')
43                                filename = addr[len(addr)-1]
44                                subdir = attrs[a][:attrs[a].find(filename)]
45                                do_file(subdir, filename, program_to_test)
46
47def parser(xml_file):
48        p = xml.parsers.expat.ParserCreate()
49        p.StartElementHandler = start_element
50        p.Parse(xml_file, 1)
51               
52def do_file(subdir,filename,program):
53        global testcases
54        fulldir = subdir_prefix + subdir
55        exe_f = open(xmlconf_home + fulldir + filename, 'r')
56        filedata = exe_f.read()
57        if filedata.find('DOCTYPE')==-1:
58          encoding = filedata[:2].encode("hex")
59          if encoding != '0000' and encoding != 'feff' and encoding != 'fffe' and encoding != '003c' and encoding != '3c00' and encoding != '4c6f':
60            testcases.append((fulldir,filename,program))
61       
62         
63def run_test():
64    for testcase in testcases: 
65        print testcase[0] + testcase[1]
66        messagedir = output_messages + testcase[0]
67        outputdir = output_files  + testcase[0]
68        if os.path.exists(outputdir)==False:
69                os.makedirs(outputdir)
70        if os.path.exists(messagedir)==False:
71                os.makedirs(messagedir)
72        out_f = open(output_files + testcase[0] + testcase[1], 'w')
73        mes_f = open(output_messages + testcase[0] + testcase[1], 'w')
74        call([parabix_home + '/' + testcase[2], xmlconf_home + testcase[0] + testcase[1]], stderr=mes_f, stdout=out_f, cwd = xmlconf_home + testcase[0])
75        out_f.close()
76        mes_f.close()
77       
78               
79if __name__ == "__main__":
80        if os.path.exists(output_home + ".bak" ):
81                shutil.rmtree(output_home + ".bak")
82        if os.path.exists( output_home ):
83                shutil.move(output_home, output_home + ".bak")
84        os.mkdir(output_home)
85        os.mkdir(output_files)
86        os.mkdir(output_messages)
87       
88        doc = load(xmlconf_home+'/xmlconf.xml')
89        parser(str(doc))
90        run_test()
91       
92       
93       
94       
95       
96       
97       
98       
99       
100       
101       
102       
103       
104       
105       
Note: See TracBrowser for help on using the repository browser.