--- /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+" <testcase classname=\"BCFilter\" name=\""+key+"\" time=\""+str(round(time_taken,3))+"\">\n"
+ if res[2] == 'PASSED':
+ passed = passed + 1
+ else:
+ failed = failed + 1
+ ostr = ostr+" <failure message=\"Failed\" type=\"Failed\">Failed</failure>\n"
+ ostr = ostr+" <expresults>"+res[0]+"</expresults>\n"
+ ostr = ostr+" <actresults>"+res[1]+"</actresults>\n"
+ ostr = ostr+" </testcase>\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('<?xml version="1.0" encoding="UTF-8" standalone="no" ?>\n')
+ file.write('<?xml-stylesheet type="text/xsl" href="checkbctestresults.xsl"?>\n')
+ file.write("<testsuite errors=\"0\" failures=\""+str(failed)+"\" hostname=\""+platform.node()+"\" name=\"BCFilter\" tests=\""+str(totalCount)+"\" time=\""+str(round(total_time_taken,3))+"\" timestamp=\""+str(timeval)+"\">\n")
+ file.write("<properties>\n</properties>\n")
+
+def write_footer(file, db):
+ global ostr
+ file.write(ostr)
+ file.write("</testsuite>\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 <toolPathFile> [c] <outputfile> [<testcasefile>]"
+ print "<toolPathFile> - 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 "<outputfile> - report filename eg: report.xml"
+ print "[<testcasefile>] - 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