def main(): global G_ROOT_FOLDER G_ROOT_FOLDER = os.getcwd() now = datetime.datetime.now() randseed = now.microsecond parser = OptionParser() parser.add_option("", "--testcasesdir", dest="testcasesdir", action="store", type="string") parser.add_option("", "--mutantid", dest="mutantid", action="store", type = "int") parser.add_option("", "--mukillfile", dest="mukillfile", action="store", type="string") (options, args) = parser.parse_args() # prepare mutant binary os.chdir('mutgen') myutils.exec_cmd('bash generateMutants.sh yaffs2.c yaffs2mutants %d'%(options.mutantid)) if os.path.exists('mutant1%06d_yaffs2.c'%(options.mutantid)): myutils.exec_cmd('cp mutant1%06d_yaffs2.c ../muyaffs2.c'%(options.mutantid)) else: assert(0) os.chdir(G_ROOT_FOLDER) myutils.exec_cmd('gcc -o yaffs2_oracle yaffs2/yaffs2.c testcaserunner.cpp -DNO_COVERAGE %s %s -lstdc++ -ldl'\ %(YAFFS2_COMPILE_OPTIONS, OPTIMIZATION)) myutils.exec_cmd('gcc -o yaffs2_mutant muyaffs2.c testcaserunner.cpp -DNO_COVERAGE %s %s -lstdc++ -ldl'\ %(YAFFS2_COMPILE_OPTIONS, OPTIMIZATION)) testcasefiles=glob.glob('%s/ts*.c'%(options.testcasesdir)) testcasefiles= testcasefiles +glob.glob('%s/ts*.c.cmin'%(options.testcasesdir)) # print testcasefiles testcasefiles.sort() myutils.exec_cmd('rm oracle_results.txt mutant_results.txt') files = [] for tsfile in testcasefiles: files.append(tsfile.split("/")[-1]) res = generateResultNew(tsfile, 'yaffs2_oracle') myutils.appendline2file('oracle_results.txt', res) res = generateResultNew(tsfile, 'yaffs2_mutant') myutils.appendline2file('mutant_results.txt', res) oracle_results=myutils.getFileLines('oracle_results.txt') mutant_results=myutils.getFileLines('mutant_results.txt') assert(len(oracle_results)==len(mutant_results)) cmpstr= 'M:' + str(options.mutantid) + ',' for i in range(0, len(oracle_results)): cmpstr += files[i]+':' if oracle_results[i] == mutant_results[i]: cmpstr += '0,' else: cmpstr += '1,' myutils.appendline2file(options.mukillfile, cmpstr)
def main(): global G_ROOT_FOLDER G_ROOT_FOLDER = os.getcwd() now = datetime.datetime.now() randseed = now.microsecond parser = OptionParser() parser.add_option("", "--testcasesdir", dest="testcasesdir", action="store", type="string") parser.add_option("", "--mutantid", dest="mutantid", action="store", type = "int") parser.add_option("", "--mukillfile", dest="mukillfile", action="store", type="string") (options, args) = parser.parse_args() # prepare mutant binary os.chdir('mutgen') myutils.exec_cmd('bash generateMutants.sh yaffs2.c yaffs2mutants %d'%(options.mutantid)) if os.path.exists('mutant1%06d_yaffs2.c'%(options.mutantid)): myutils.exec_cmd('cp mutant1%06d_yaffs2.c ../muyaffs2.c'%(options.mutantid)) else: assert(0) os.chdir(G_ROOT_FOLDER) myutils.exec_cmd('rm yaffs2_oracle yaffs2_mutant') myutils.exec_cmd('gcc -o yaffs2_oracle yaffs2/yaffs2.c testcaserunner.cpp -DNO_COVERAGE %s %s -lstdc++ -ldl'\ %(YAFFS2_COMPILE_OPTIONS, OPTIMIZATION)) myutils.exec_cmd('gcc -o yaffs2_mutant muyaffs2.c testcaserunner.cpp -DNO_COVERAGE %s %s -lstdc++ -ldl'\ %(YAFFS2_COMPILE_OPTIONS, OPTIMIZATION)) if not( os.path.exists('yaffs2_oracle') and os.path.exists('yaffs2_mutant')): return testcasefiles=glob.glob('%s/ts*.c'%(options.testcasesdir)) testcasefiles.sort() myutils.exec_cmd('rm oracle_results.txt mutant_results.txt') for tsfile in testcasefiles: res = generateResultNew(tsfile, 'yaffs2_oracle') myutils.appendline2file('oracle_results.txt', res) res = generateResultNew(tsfile, 'yaffs2_mutant') myutils.appendline2file('mutant_results.txt', res) oracle_results=myutils.getFileLines('oracle_results.txt') mutant_results=myutils.getFileLines('mutant_results.txt') assert(len(oracle_results)==len(mutant_results)) cmpstr='' for i in range(0, len(oracle_results)): if oracle_results[i] == mutant_results[i]: cmpstr += '0,' else: cmpstr += '1,' myutils.appendline2file(options.mukillfile, cmpstr)
def generateTestCases(startidx, endidx, eachsize, tslength, dir, configfile, randseed, strategy, format): # build test case generator myutils.exec_cmd('gcc -o testcasegenerator %s/testcasegenerator.cpp yaffs2/yaffs2.c -DENABLE_GMP -lgmp -I %s/include %s -lstdc++ -ldl'\ %(G_ROOT_FOLDER, TCLAP_LIB_PATH, YAFFS2_COMPILE_OPTIONS)) if not os.path.exists('testcasegenerator'): assert(0) global configs # only load configs file once if configfile != '' and configs == []: configs = myutils.getFileLines(configfile) for i in range(len(configs)): configs[i] = configs[i].replace('\n', '') if format == None: format = 'nonconcolic' os.chdir(G_TMP_FOLDER) myutils.ensuredir('%s/%06d'%(dir, tslength)) os.chdir(G_TMP_FOLDER) for i in range(startidx, endidx+1): disabledapilist = '' if len(configs) > 0: disabledapilist = configs[i % (len(configs))] if strategy == None: myutils.exec_cmd('%s/testcasegenerator --randseed %d --startidx %d --endidx %d --eachsize %d --dir %s/%06d --tclength %d --format %s %s'\ %(G_ROOT_FOLDER,random.randint(0,20000000), i, i, eachsize, dir, tslength, tslength, format, disabledapilist)) else: myutils.exec_cmd('%s/testcasegenerator --randseed %d --startidx %d --endidx %d --eachsize %d --dir %s/%06d --tclength %d --strategy %s --format %s %s'\ %(G_ROOT_FOLDER,random.randint(0,sys.maxint), i, i, eachsize, dir, tslength, tslength, strategy, format, disabledapilist)) os.chdir(G_ROOT_FOLDER)
def generateTestCases(startidx, endidx, eachsize, tslength, dir, configfile, randseed, strategy, format): # build test case generator myutils.exec_cmd('gcc -o testcasegenerator %s/testcasegenerator.cpp yaffs2/yaffs2.c -DENABLE_GMP -lgmp -I %s/include %s -lstdc++ -ldl'\ %(G_ROOT_FOLDER, TCLAP_LIB_PATH, YAFFS2_COMPILE_OPTIONS)) if not os.path.exists('testcasegenerator'): assert (0) global configs # only load configs file once if configfile != '' and configs == []: configs = myutils.getFileLines(configfile) for i in range(len(configs)): configs[i] = configs[i].replace('\n', '') if format == None: format = 'nonconcolic' os.chdir(G_TMP_FOLDER) myutils.ensuredir('%s/%06d' % (dir, tslength)) os.chdir(G_TMP_FOLDER) for i in range(startidx, endidx + 1): disabledapilist = '' if len(configs) > 0: disabledapilist = configs[i % (len(configs))] if strategy == None: myutils.exec_cmd('%s/testcasegenerator --randseed %d --startidx %d --endidx %d --eachsize %d --dir %s/%06d --tclength %d --format %s %s'\ %(G_ROOT_FOLDER,random.randint(0,20000000), i, i, eachsize, dir, tslength, tslength, format, disabledapilist)) else: myutils.exec_cmd('%s/testcasegenerator --randseed %d --startidx %d --endidx %d --eachsize %d --dir %s/%06d --tclength %d --strategy %s --format %s %s'\ %(G_ROOT_FOLDER,random.randint(0,sys.maxint), i, i, eachsize, dir, tslength, tslength, strategy, format, disabledapilist)) os.chdir(G_ROOT_FOLDER)
def getCoveredLines(filename, arr): lines = myutils.getFileLines(filename) for idx in range(len(lines)): line = lines[idx] parts = line.split(':') if parts[0].find('#####')>=0: lineno = parts[1].strip() arr[int(lineno)-1] = 1 # not covered
def getCoveredLines(filename, arr): lines = myutils.getFileLines(filename) for idx in range(len(lines)): line = lines[idx] parts = line.split(':') if parts[0].find('#####') >= 0: lineno = parts[1].strip() arr[int(lineno) - 1] = 1 # not covered
def generateCoverageInfo(startidx, endidx, tslength): myutils.exec_cmd('gcc -o yaffs2_gcov yaffs2/yaffs2.c testcaserunner.cpp -DNO_COVERAGE %s %s -lstdc++ -ldl'\ %(YAFFS2_COMPILE_OPTIONS, OPTIMIZATION)) # load mutants' lines information mutants = mkArray(1000) lines = myutils.getFileLines('yaffs2/mutants/m.txt') for idx in range(len(lines)): line = lines[idx] parts = line.split(':') lineno = parts[1].strip() #print(lineno) #print(idx) if len(lineno) > 0: mutants[idx] = int(lineno) #print mutants #return for tsidx in range(startidx, endidx + 1): myutils.exec_cmd('rm yaffs2.c.gcov') tsfile = '%s/testcases/%06d/ts%06d.c' % (G_WORKING_FOLDER, tslength, tsidx) myutils.exec_cmd('%s/yaffs2_gcov -start %d -num %d -testcasefile %s' % (G_ROOT_FOLDER, 0, 1, tsfile)) myutils.exec_cmd('gcov yaffs2.c') uncovered = mkArray(14761) getCoveredLines('yaffs2.c.gcov', uncovered) #print uncovered flags = mkArray(1000) for i in range(1000): if uncovered[mutants[i] - 1] == 1: flags[i] = 1 myutils.appendArray('filtertable', flags) os.chdir(G_ROOT_FOLDER)
def generateCoverageInfo(startidx, endidx, tslength): myutils.exec_cmd('gcc -o yaffs2_gcov yaffs2/yaffs2.c testcaserunner.cpp -DNO_COVERAGE %s %s -lstdc++ -ldl'\ %(YAFFS2_COMPILE_OPTIONS, OPTIMIZATION)) # load mutants' lines information mutants = mkArray(1000) lines = myutils.getFileLines('yaffs2/mutants/m.txt') for idx in range(len(lines)): line = lines[idx] parts = line.split(':') lineno = parts[1].strip() #print(lineno) #print(idx) if len(lineno) > 0: mutants[idx] = int(lineno) #print mutants #return for tsidx in range(startidx, endidx+1): myutils.exec_cmd('rm yaffs2.c.gcov') tsfile = '%s/testcases/%06d/ts%06d.c'%(G_WORKING_FOLDER, tslength, tsidx) myutils.exec_cmd('%s/yaffs2_gcov -start %d -num %d -testcasefile %s'%(G_ROOT_FOLDER, 0, 1, tsfile)) myutils.exec_cmd('gcov yaffs2.c') uncovered = mkArray(14761) getCoveredLines('yaffs2.c.gcov', uncovered) #print uncovered flags = mkArray(1000) for i in range(1000): if uncovered[ mutants[i]-1 ] == 1: flags[i] = 1 myutils.appendArray('filtertable', flags) os.chdir(G_ROOT_FOLDER)
import re import getopt, sys import glob from optparse import OptionParser from time import localtime, strftime import string import datetime import myutils import itertools import locale locale.setlocale(locale.LC_ALL, 'en_US') rate = range(1,11) times=[] for i in rate: cmdhistory='50KSwarm%d00/cmdhistory.txt'%(i) lines = myutils.getFileLines(cmdhistory) gentime = 0 for line in lines: if line.find('total test cases generated') >= 0: s = re.sub("\D", "", line) gentime = gentime + int(s) times.append(gentime) for time in times: print ('%d'%(time))