Exemplo n.º 1
0
def setupSimulation( theStore, database ):
    id = 0
    sitesFile = open( "input/Sites.txt", 'r' )
    for line in sitesFile:
        if line[0]=='#':
            continue
        ( name, space, cores, bandwidth ) = line.split()
        Site.Site.sites[name] = Site.Site( id, name, float(space), int(cores),
                                           float(bandwidth) )
        database.execute( "INSERT INTO Sites VALUES(%d,'%s',%f,%d,%f)"
                          % ( id, name, float(space), int(cores),
                              float(bandwidth) ) )
        id+=1
    print "Read in %d sites." % len(Site.Site.sites)
    sitesFile.close()

    networkFile = open( "input/Network.txt", 'r' )
    links=0
    for line in networkFile:
        if line[0]=='#':
            continue
        ( fromSite, toSite, bandwidth, quality, latency ) = line.split()
        addNetwork( Site.Site.sites, links, fromSite, toSite,
                    float(bandwidth), float(quality), float(latency) )
        database.execute( "INSERT INTO Links VALUES(?,?,?,?,?,?)",
                          ( links, Site.Site.sites[fromSite].id,
                            Site.Site.sites[toSite].id,
                            bandwidth, quality, latency ) )
        links+=1
    print "Read in %d network links." % links
    networkFile.close()

    if eventStoreInPickle:
        theStore.load( "input/EventStore.pkl" )
        print "Read in %d files." % theStore.size()
        print "Read in %d locations." % theStore.numLocations()
    else:
        filesFile = open( "input/Data.txt", 'r' )
        for line in filesFile:
            if line[0]=='#':
                continue
            ( lfn, size ) = line.split()
            theStore.addFile( lfn, float( size ) )
        print "Read in %d files." % theStore.size()
        filesFile.close()

        locationsFile = open( "input/EventStore.txt", 'r' )
        locations = 0
        for line in locationsFile:
            if line[0]=='#':
                continue
            ( lfn, site ) = line.split()
            theStore.addSite( lfn, site )
            locations+=1
            if locations % 1000 == 0:
                print "Done %d..." % locations
        print "Read in %d locations." % locations
        locationsFile.close()

        theStore.save( "input/EventStore.pkl" )

    latencyFile = open( "input/RemoteRead.txt", 'r' )
    latencyBins = 0
    for line in latencyFile:
        if line[0]=='#':
            continue
        ( binStart, effHit ) = line.split()
        Data.addLatencyBin( float(binStart), float(effHit) )
        latencyBins += 1
    print "Read in %d latency bins." % latencyBins
    latencyFile.close()
   
    transferFile = open( "input/FileTransfer.txt", 'r' )
    transferBins = 0
    for line in transferFile:
        if line[0]=='#':
            continue
        ( binStart, speed ) = line.split()
        Data.addTransferBin( float(binStart), float(speed) )
        transferBins += 1
    print "Read in %d transfer bins." % transferBins
    transferFile.close()

    setupJobEffMC()