Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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      
Пример #6
0
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
Пример #7
0
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)
Пример #9
0
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))