def run_test(self, settings, output_path): settings = settings.copy() settings.load_test() res = resultset.new(settings) if settings.EXTENDED_METADATA: record_extended_metadata(res, settings.REMOTE_METADATA) if not settings.HOSTS: raise RuntimeError("Must specify host (-H option).") self.agg = aggregators.new(settings) res = self.agg.postprocess(self.agg.aggregate(res)) if self.killed: return res.dump_dir(output_path) formatter = formatters.new(settings) formatter.format([res]) self.tests_run += 1
def run_test(self, settings, output_path): settings = settings.copy() settings.load_test() res = resultset.new(settings) if settings.EXTENDED_METADATA: record_extended_metadata(res, settings.REMOTE_METADATA) if not settings.HOSTS: raise RuntimeError("Must specify host (-H option).") self.agg = aggregators.new(settings) res = self.agg.postprocess(self.agg.aggregate(res)) if self.killed: return if settings.EXTENDED_METADATA: record_postrun_metadata(res, settings.REMOTE_METADATA) res.dump_dir(output_path) formatter = formatters.new(settings) formatter.format([res]) self.tests_run += 1
def load(): (dummy,args) = parser.parse_args(values=settings) # If run with no args and no controlling TTY, launch the GUI by default if not sys.stdin.isatty() and not sys.stdout.isatty() and not sys.stderr.isatty() \ and len(sys.argv) < 2: settings.GUI = True if hasattr(settings, 'LIST_TESTS') and settings.LIST_TESTS: list_tests() if hasattr(settings, 'PLOT'): settings.FORMAT = 'plot' for a in args: if os.path.exists(a): if settings.SCALE_MODE and settings.INPUT: settings.SCALE_DATA.append(a) else: settings.INPUT.append(a) else: settings.load_test_or_host(a) settings.load_rcfile() if settings.INPUT: results = [] test_name = None for filename in settings.INPUT: r = ResultSet.load_file(filename) if test_name is not None and test_name != r.meta("NAME"): raise RuntimeError("Result sets must be from same test (found %s/%s)" % (test_name, r.meta("NAME"))) test_name = r.meta("NAME") results.append(r) if settings.GUI: load_gui(settings) settings.update(results[0].meta()) settings.load_test() elif settings.GUI: load_gui(settings) else: settings.load_test() results = [ResultSet(NAME=settings.NAME, HOST=settings.HOST, HOSTS=settings.HOSTS, TIME=settings.TIME, LOCAL_HOST=settings.LOCAL_HOST, TITLE=settings.TITLE, NOTE=settings.NOTE, LENGTH=settings.LENGTH, TOTAL_LENGTH=settings.TOTAL_LENGTH, STEP_SIZE=settings.STEP_SIZE, NETPERF_WRAPPER_VERSION=VERSION, IP_VERSION=settings.IP_VERSION)] if settings.EXTENDED_METADATA: record_extended_metadata(results[0], settings.REMOTE_METADATA) if settings.SCALE_DATA: scale_data = [] for filename in settings.SCALE_DATA: if filename == settings.INPUT: # Do not load input file twice - makes it easier to select a set # of files for plot scaling and supply each one to -i without # having to change the other command line options each time. continue r = ResultSet.load_file(filename) if r.meta("NAME") != settings.NAME: raise RuntimeError("Setting name mismatch between test " "data and scale file %s" % filename) scale_data.append(r) settings.SCALE_DATA = scale_data if hasattr(settings, 'LIST_PLOTS') and settings.LIST_PLOTS: list_plots() if not settings.HOSTS and not results[0]: raise RuntimeError("Must specify host (-H option).") return settings, results
def load(): global LOGFILE_HANDLE (dummy,args) = parser.parse_args(values=settings) if settings.LOG_FILE: LOGFILE_HANDLE = open(settings.LOG_FILE, "a") writeLog("logfile opened") # If run with no args and no controlling TTY, launch the GUI by default if not sys.stdin.isatty() and not sys.stdout.isatty() and not sys.stderr.isatty() \ and len(sys.argv) < 2: settings.GUI = True if hasattr(settings, 'LIST_TESTS') and settings.LIST_TESTS: list_tests() if hasattr(settings, 'PLOT'): settings.FORMAT = 'plot' for a in args: if os.path.exists(a): if settings.SCALE_MODE and settings.INPUT: settings.SCALE_DATA.append(a) else: settings.INPUT.append(a) else: settings.load_test_or_host(a) settings.load_rcfile() if settings.INPUT: results = [] test_name = None for filename in settings.INPUT: r = ResultSet.load_file(filename) if test_name is not None and test_name != r.meta("NAME"): raise RuntimeError("Result sets must be from same test (found %s/%s)" % (test_name, r.meta("NAME"))) test_name = r.meta("NAME") #print "Appending results for test %s" % (test_name) results.append(r) if settings.GUI: load_gui(settings) settings.update(results[0].meta()) settings.load_test() elif settings.GUI: load_gui(settings) else: settings.RESULT_LOCATION_BASE2 = '${HOME}/tempResult%s' % (timeStamped(t=settings.TIME).strip().replace(' ', '')) settings.SERVERS = settings.HOSTS if settings.TOTAL_CLIENTS > 0 : if len(settings.CLIENTS) >= settings.TOTAL_CLIENTS: settings.CLIENTS = settings.CLIENTS[:settings.TOTAL_CLIENTS] else: client_count = len(settings.CLIENTS) for i in range(0, (settings.TOTAL_CLIENTS - client_count)) : settings.CLIENTS.append(settings.CLIENTS[i % client_count]) else : settings.TOTAL_CLIENTS = len(settings.CLIENTS) print "Final client list is %s" % (settings.CLIENTS) for m in settings.SERVERS: settings.MINFO_SERVER[m] = record_machine_metadata(m, settings.TARGET) settings.SERVERS_IF[m] = settings.MINFO_SERVER[m]["EGRESS_INFO"]["iface"] settings.SERVERS_DRV[m] = settings.MINFO_SERVER[m]["EGRESS_INFO"]["driver"] settings.SERVERS_CORECOUNT[m] = int(settings.MINFO_SERVER[m]['CORECOUNT']) for m in settings.CLIENTS: settings.MINFO_CLIENT[m] = record_machine_metadata(m, settings.TARGET) settings.CLIENTS_IF[m] = settings.MINFO_CLIENT[m]["EGRESS_INFO"]["iface"] settings.CLIENTS_CORECOUNT[m] = int(settings.MINFO_CLIENT[m]['CORECOUNT']) if settings.SERVER_ONLOAD_LATENCY: settings.SERVER_ONLOAD_CMDLINE = "onload --profile=latency --preload=/usr/lib64/libonload.so" elif settings.SERVER_ONLOAD_ENABLED : settings.SERVER_ONLOAD_CMDLINE = "onload --preload=/usr/lib64/libonload.so" else : settings.SERVER_ONLOAD_CMDLINE = "" if len(settings.SERVERS) > 1 : print "ERROR: More than one server specified. This is not supporte d yet" sys.exit(1) srvname = settings.SERVERS[0] for i in range(0, settings.SERVERS_INSTANCES): settings.RUN_CONF[0] = {} settings.RUN_CONF[0]['SERVER'] = {} settings.BRUST_SIZE = settings.CONCURRENCY settings.TCONCURRENCY = (settings.CONCURRENCY * settings.CLIENT_CORES * (len(settings.CLIENTS) - settings.SPECIAL_CLIENTS_COUNT)) settings.load_test() results = [ResultSet(NAME=settings.NAME, HOST=settings.HOST, HOSTS=settings.HOSTS, SERVERS=settings.SERVERS, MINFO_SERVER=settings.MINFO_SERVER, MINFO_CLIENT=settings.MINFO_CLIENT, RESULT_LOCATION_BASE2=settings.RESULT_LOCATION_BASE2, TOOLS_LOCATION=settings.TOOLS_LOCATION, PKT_SIZE=settings.PKT_SIZE, TARGET=settings.TARGET, USE_TCP=settings.USE_TCP, SERVER_CORES=settings.SERVER_CORES, HWQUEUES=settings.HWQUEUES, SPECIAL_CLIENTS_COUNT = settings.SPECIAL_CLIENTS_COUNT, SPECIAL_SERVERS_COUNT = settings.SPECIAL_SERVERS_COUNT, BRUST_SIZE=settings.BRUST_SIZE, CONCURRENCY = settings.CONCURRENCY, TCONCURRENCY = settings.TCONCURRENCY, CLIENT_CORES=settings.CLIENT_CORES, CLIENT_PORTS_SHIFT=settings.CLIENT_PORTS_SHIFT, CLIENTS=settings.CLIENTS, TOTAL_CLIENTS=settings.TOTAL_CLIENTS, CLIENTS_IF=settings.CLIENTS_IF, CLIENTS_CORECOUNT=settings.CLIENTS_CORECOUNT, SERVERS_IF=settings.SERVERS_IF, SERVERS_DRV=settings.SERVERS_DRV, SERVERS_CORECOUNT=settings.SERVERS_CORECOUNT, SERVERS_INSTANCES=settings.SERVERS_INSTANCES, SERVER_CORESHIFT=settings.SERVER_CORESHIFT, TIME=settings.TIME, LOCAL_HOST=settings.LOCAL_HOST, TITLE=settings.TITLE, NOTE=settings.NOTE, SERVER_ONLOAD_LATENCY=settings.SERVER_ONLOAD_LATENCY, DRAGONET_COST_FUNCTION=settings.DRAGONET_COST_FUNCTION, SERVER_ONLOAD_ENABLED=settings.SERVER_ONLOAD_ENABLED, SERVER_ONLOAD_CMDLINE=settings.SERVER_ONLOAD_CMDLINE, LENGTH=settings.LENGTH, TOTAL_LENGTH=settings.TOTAL_LENGTH, DELAY=settings.DELAY, STEP_SIZE=settings.STEP_SIZE, ITERATIONS=settings.ITERATIONS, ECHO_SERVER=settings.ECHO_SERVER, NETPERF_WRAPPER_VERSION=VERSION, IP_VERSION=settings.IP_VERSION)] if settings.EXTENDED_METADATA: record_extended_metadata(results[0], settings.REMOTE_METADATA) if settings.SCALE_DATA: scale_data = [] for filename in settings.SCALE_DATA: if filename == settings.INPUT: # Do not load input file twice - makes it easier to select a set # of files for plot scaling and supply each one to -i without # having to change the other command line options each time. continue r = ResultSet.load_file(filename) if r.meta("NAME") != settings.NAME: raise RuntimeError("Setting name mismatch between test " "data and scale file %s" % filename) scale_data.append(r) settings.SCALE_DATA = scale_data if hasattr(settings, 'LIST_PLOTS') and settings.LIST_PLOTS: list_plots() if not settings.HOSTS and not results[0]: raise RuntimeError("Must specify host (-H option).") print "Running experiment for time of %d" % (settings.TOTAL_LENGTH) return settings, results