diff -r bdd2944b914b -r a0eee409ff14 apicompatanamdw/compatanalysercmd/checkbc/tsrc/testcheckbc.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/apicompatanamdw/compatanalysercmd/checkbc/tsrc/testcheckbc.py Mon Sep 27 14:51:17 2010 +0530 @@ -0,0 +1,315 @@ +# +# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +import os +import time +import sys +import inspect +import testcases +import shutil +import platform + +if os.name == 'nt': + path = os.path.dirname(sys.argv[0]) +else: + path = os.getcwd() + +TC_DIR = path +TEMP_DIR = TC_DIR + os.sep + 'temp' +TOOLS_DIR = TC_DIR + os.sep + os.pardir + os.sep + os.pardir +EXEC_DIR = TC_DIR + os.sep + os.pardir + os.sep + "bin" + +time_taken = 0 +total_time_taken = 0 +totalCount = 0 +timeval = time.strftime("%a %b %d, %Y at %H:%M:%S", time.localtime()) + +if os.environ.get('RVCT22BIN') is None: + print 'Environment Variable RVCT22BIN must be set before starting the test harness' + sys.exit() + +report_file = 0 +passed = 0 +failed = 0 +ostr = "" + +def UpdateTimeTaken(tm): + global time_taken, total_time_taken + time_taken = tm + total_time_taken += tm + + +def write(key, res): + global passed + global failed + global totalCount + global ostr + totalCount = totalCount + 1 + ostr = ostr+" \n" + if res[2] == 'PASSED': + passed = passed + 1 + else: + failed = failed + 1 + ostr = ostr+" Failed\n" + ostr = ostr+" "+res[0]+"\n" + ostr = ostr+" "+res[1]+"\n" + ostr = ostr+" \n" + +class registry: + _register = {} + items = 0 + cur_item = -1 + keys = [] + def __init__(self): + pass + + def __iter__(self): + return self + + def __getitem__(self, item): + return self._register[item] + + def next(self): + if self.cur_item >= (self.items-1): + self.cur_item = -1 + raise StopIteration + else: + self.cur_item = self.cur_item + 1 + return tuple([ self.keys[self.cur_item],self._register[self.keys[self.cur_item]] ]) + + def register(self, key, val): + self._register[key] = val + self.items = self.items + 1 + self.keys.append(key) + + def deregister(self, key): + if self._register.has_key(key): + self._register.pop(key) + self.items = self.items - 1 + + def next_entry(self): + if self.cur_item < (self.items-1): + self.cur_item = self.cur_item + 1 + return tuple([ self.keys[self.cur_item],self._register[self.keys[self.cur_item]] ]) + else: + return tuple() + + def prev_entry(self): + if self.cur_item != -1: + self.cur_item = self.cur_item - 1 + return tuple([ self.keys[self.cur_item], self._register[self.keys[self.cur_item]] ]) + else: + return tuple() + + def count(): + return self.items + +def setUp(key): + print '\n---------------------------------------------------------------' + +def tearDown(): + print '\n---------------------------------------------------------------' + +def testAll(db): + global ostr + result = 0 + os.chdir(TC_DIR) + for key, value in db: + print '\n---------------------------------------------------------------' + stime = time.clock() + res = value() + etime = time.clock() + print '\n---------------------------------------------------------------' + UpdateTimeTaken(etime-stime) + write(key, res) + +def register_tc(db): + index = 3 + if 'c' == sys.argv[2]: + index = 4 + if len(sys.argv) > index: + cases = [] + file = open( sys.argv[index] ) + for line in file: + cases.append(line.rstrip('\r\n').lower()) + file.close() + for key,value in inspect.getmembers(testcases): + if inspect.isfunction(value) and key.split('_')[0] == 'test': + if len(sys.argv) > index: + if key in cases: + db.register(key, value) + else: + db.register(key, value) + + +def open_results(): + if os.path.exists(REPORT) and os.name == 'nt': + os.startfile(REPORT) + return + +def write_header(file): + global failed + global totalCount + global total_time_taken + file.write('\n') + file.write('\n') + file.write("\n") + file.write("\n\n") + +def write_footer(file, db): + global ostr + file.write(ostr) + file.write("\n") + file.close() + +def copy_toolset(): + dir = os.getcwd() + changed_TOOL_DIR = TOOLS_DIR; + HA="" + BCF="" + LA="" + + file = open( sys.argv[1] ) + cases = file.readlines() + file.close() + for tc in cases: + temp = tc.find('checkbc') + if(temp!=-1): + if(tc.split('=')[1].split(';')[0]== 'trunk'): + changed_TOOL_DIR = changed_TOOL_DIR+ os.sep + os.pardir + elif(tc.split('=')[1].split(';')[0]!= 'bin'): + changed_TOOL_DIR = changed_TOOL_DIR+ os.sep + os.pardir+ os.sep + os.pardir + + for tc in cases: + temp = tc.find('ha') + if(temp != -1): + haDir = tc.split('=')[1].split(';')[0] + if(haDir == 'trunk'): + HA = changed_TOOL_DIR+os.sep+"headeranalyser"+os.sep+"trunk"+os.sep+"bin" + elif(haDir != 'bin'): + HA = changed_TOOL_DIR+os.sep+"headeranalyser"+os.sep+"tags"+os.sep+haDir+os.sep+"bin" + else: + HA = changed_TOOL_DIR+os.sep+"headeranalyser"+os.sep+"bin" + + for tc in cases: + temp = tc.find('bcf') + if(temp != -1): + bcDir = tc.split('=')[1].split(';')[0] + if(bcDir == 'trunk'): + BCF = changed_TOOL_DIR+os.sep+"bcfilter"+os.sep+"trunk"+os.sep+"bin" + elif(bcDir != 'bin'): + BCF = changed_TOOL_DIR+os.sep+"bcfilter"+os.sep+"tags"+os.sep+bcDir+os.sep+"bin" + else: + BCF = changed_TOOL_DIR+os.sep+"bcfilter"+os.sep+"bin" + + for tc in cases: + temp = tc.find('la') + if(temp != -1): + laDir = tc.split('=')[1].split(';')[0] + if(laDir == 'trunk'): + LA = changed_TOOL_DIR+os.sep+"libraryanalyser"+os.sep+"trunk"+os.sep+"bin" + elif(laDir != 'bin'): + LA = changed_TOOL_DIR+os.sep+"libraryanalyser"+os.sep+"tags"+os.sep+laDir+os.sep+"bin" + else: + LA = changed_TOOL_DIR+os.sep+"ordinalchecker"+os.sep+"bin" + + os.chdir( TC_DIR + os.sep + os.pardir ) + if not os.path.exists(EXEC_DIR): + os.makedirs(EXEC_DIR) + + copy(HA+os.sep+"forced_9.1.h" ,"bin"+os.sep ) + copy(HA+os.sep+"forced_9.2.h" ,"bin"+os.sep ) + copy(HA+os.sep+"forced_9.3.h" ,"bin"+os.sep ) + copy(HA+os.sep+"forced_9.4.h" ,"bin"+os.sep ) + copy(HA+os.sep+"forced_9.4v2.h" ,"bin"+os.sep ) + copy(HA+os.sep+"forced_10.1.h" ,"bin"+os.sep ) + copy(HA+os.sep+"forced_mobileruntime.h" ,"bin"+os.sep ) + copy(HA+os.sep+"forced_kernel.h" ,"bin"+os.sep ) + copy(HA+os.sep+"forced_shai.h" ,"bin"+os.sep ) + + if os.name == 'nt': + copy(BCF+os.sep+"bcfilter.exe" ,"bin"+os.sep ) + copy(BCF+os.sep+"libxerces-c2_7_0.dll" ,"bin"+os.sep ) + + copy(HA+os.sep+"ha.exe" ,"bin"+os.sep ) + copy(HA+os.sep+"ha_gccxml_cc1plus.exe" ,"bin"+os.sep ) + copy(HA+os.sep+"boost_thread-gcc-mt-1_33_1.dll" ,"bin"+os.sep ) + copy(HA+os.sep+"mingwm10.dll" ,"bin"+os.sep ) + + copy(LA+os.sep+"la.exe" ,"bin"+os.sep ) + copy(LA+os.sep+"cfilt.exe" ,"bin"+os.sep ) + else: + copy(BCF+os.sep+"bcfilter" ,"bin"+os.sep ) + copy(BCF+os.sep+"libxerces-c2_7_0.dll" ,"bin"+os.sep ) + + copy(HA+os.sep+"ha" ,"bin"+os.sep ) + copy(HA+os.sep+"ha_gccxml_cc1plus" ,"bin"+os.sep ) + copy(HA+os.sep+"boost_thread-gcc-mt-1_33_1.dll" ,"bin"+os.sep ) + copy(HA+os.sep+"mingwm10.dll" ,"bin"+os.sep ) + + copy(LA+os.sep+"la" ,"bin"+os.sep ) + copy(LA+os.sep+"cfilt" ,"bin"+os.sep ) + os.chdir(dir) + +def copy(src, dst): + try: + shutil.copy(src, dst ) + except IOError, e: + print e + shutil.rmtree(EXEC_DIR) + sys.exit(1) + +if __name__ == '__main__': + #Check for proper python version and then continue execution + if not "2.4" <= platform.python_version() < "3.0": + python_error() + lst = [] + db = registry() + if len(sys.argv) < 3: + print "Usage: TestCheckBC.py [c] []" + print " - Text file with info regarding which path to be taken for each component." + print " These can be either bin / trunk / tag number" + print " - bin, if it is for S60 Release" + print " - trunk, if executable should be taken from trunk " + print " - tag number, specify the tag no from which executable should be taken" + print "[c] - Optional parameter to Copy binaries, if not already existing." + print " - report filename eg: report.xml" + print "[] - Optional parameter. Text file with list of test cases mentioned, those to be executed." + sys.exit(1) + if not os.path.exists(TEMP_DIR): + os.makedirs(TEMP_DIR) + if not os.path.exists(TEMP_DIR + os.sep + 'results'): + os.makedirs(TEMP_DIR + os.sep + 'results') + + if 'c' == sys.argv[2]: + copy_toolset() + if(len(sys.argv)== 3): + print '---------files copied--------' + sys.exit(0) + REPORT = TC_DIR + os.sep + 'reports' + os.sep + sys.argv[3] + else: + if not os.path.exists(EXEC_DIR): + copy_toolset() + print 'Toolset not found. New copy created' + REPORT = TC_DIR + os.sep + 'reports' + os.sep + sys.argv[2] + + register_tc(db) + report_file = open(REPORT, 'w') + testAll(db) + write_header(report_file) + write_footer(report_file, db) + shutil.rmtree(TEMP_DIR) + open_results() \ No newline at end of file