Upgrading wscript and run.py
This commit is contained in:
@@ -7,6 +7,44 @@ import os
|
||||
import subprocess
|
||||
import workerpool
|
||||
import multiprocessing
|
||||
import argparse
|
||||
|
||||
######################################################################
|
||||
######################################################################
|
||||
######################################################################
|
||||
|
||||
parser = argparse.ArgumentParser(description='Simulation runner')
|
||||
parser.add_argument('scenarios', metavar='scenario', type=str, nargs='*',
|
||||
help='Scenario to run')
|
||||
|
||||
parser.add_argument('-l', '--list', dest="list", action='store_true', default=False,
|
||||
help='Get list of available scenarios')
|
||||
|
||||
parser.add_argument('-s', '--simulate', dest="simulate", action='store_true', default=False,
|
||||
help='Run simulation and postprocessing (false by default)')
|
||||
|
||||
parser.add_argument('-g', '--no-graph', dest="graph", action='store_false', default=True,
|
||||
help='Do not build a graph for the scenario (builds a graph by default)')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.list and len(args.scenarios)==0:
|
||||
print "ERROR: at least one scenario need to be specified"
|
||||
parser.print_help()
|
||||
exit (1)
|
||||
|
||||
if args.list:
|
||||
print "Available scenarios: "
|
||||
else:
|
||||
if args.simulate:
|
||||
print "Simulating the following scenarios: " + ",".join (args.scenarios)
|
||||
|
||||
if args.graph:
|
||||
print "Building graphs for the following scenarios: " + ",".join (args.scenarios)
|
||||
|
||||
######################################################################
|
||||
######################################################################
|
||||
######################################################################
|
||||
|
||||
class SimulationJob (workerpool.Job):
|
||||
"Job to simulate things"
|
||||
@@ -18,38 +56,47 @@ class SimulationJob (workerpool.Job):
|
||||
|
||||
pool = workerpool.WorkerPool(size = multiprocessing.cpu_count())
|
||||
|
||||
class Runner:
|
||||
# def congestion_zoom (self):
|
||||
# cmdline = ["./build/congestion-zoom-ndn"]
|
||||
# job = SimulationJob (cmdline)
|
||||
# pool.put (job)
|
||||
class Processor:
|
||||
def run (self):
|
||||
if args.list:
|
||||
print " " + self.name
|
||||
return
|
||||
|
||||
# cmdline = ["./build/congestion-zoom-tcp"]
|
||||
# job = SimulationJob (cmdline)
|
||||
# pool.put (job)
|
||||
if "all" not in args.scenarios and self.name not in args.scenarios:
|
||||
return
|
||||
|
||||
# def congestion_pop (self):
|
||||
# runs = range(1,101)
|
||||
# for run in runs:
|
||||
# cmdline = ["./build/congestion-pop-ndn",
|
||||
# "--run=%d" % run
|
||||
# ]
|
||||
# job = SimulationJob (cmdline)
|
||||
# pool.put (job)
|
||||
if args.list:
|
||||
pass
|
||||
else:
|
||||
if args.simulate:
|
||||
self.simulate ()
|
||||
pool.join ()
|
||||
self.postprocess ()
|
||||
if args.graph:
|
||||
self.graph ()
|
||||
|
||||
# cmdline = ["./build/congestion-pop-tcp",
|
||||
# "--run=%d" % run
|
||||
# ]
|
||||
# job = SimulationJob (cmdline)
|
||||
# pool.put (job)
|
||||
def graph (self):
|
||||
subprocess.call ("./graphs/%s.R" % self.name, shell=True)
|
||||
|
||||
class Scenario (Processor):
|
||||
def __init__ (self, name):
|
||||
self.name = name
|
||||
# other initialization, if any
|
||||
|
||||
def simulate (self):
|
||||
cmdline = ["./build/SCENARIO_TO_RUN"]
|
||||
job = SimulationJob (cmdline)
|
||||
pool.put (job)
|
||||
|
||||
def postprocess (self):
|
||||
# any postprocessing, if any
|
||||
pass
|
||||
|
||||
try:
|
||||
runner = Runner ()
|
||||
# runner.congestion_zoom()
|
||||
runner.congestion_pop()
|
||||
# Simulation, processing, and graph building
|
||||
fig = Scenario (name="NAME_TO_CONFIGURE")
|
||||
fig.run ()
|
||||
|
||||
finally:
|
||||
pool.join ()
|
||||
pool.shutdown ()
|
||||
pool.wait ()
|
||||
|
||||
print "\n\n >>> FINISHED <<< \n\n"
|
||||
|
||||
@@ -47,6 +47,7 @@ def configure(conf):
|
||||
|
||||
if conf.options.debug:
|
||||
conf.define ('NS3_LOG_ENABLE', 1)
|
||||
conf.define ('NS3_ASSERT_ENABLE', 1)
|
||||
conf.define ('_DEBUG', 1)
|
||||
conf.env.append_value('CXXFLAGS', ['-O0', '-g3'])
|
||||
else:
|
||||
@@ -57,6 +58,7 @@ def configure(conf):
|
||||
|
||||
if conf.options.logging:
|
||||
conf.define ('NS3_LOG_ENABLE', 1)
|
||||
conf.define ('NS3_ASSERT_ENABLE', 1)
|
||||
|
||||
def build (bld):
|
||||
deps = 'BOOST BOOST_IOSTREAMS' + ' '.join (['ns3_'+dep for dep in ['core', 'network', 'internet', 'ndnSIM', 'topology-read', 'applications', 'mobility', 'visualizer']]).upper ()
|
||||
|
||||
Reference in New Issue
Block a user