def __init__(self, identifier: int, rng: random.Random): self.identifier = identifier self.time = 0 config = configparser.ConfigParser() config['myconf1'] = {} config['myconf1']['mapping_file'] = 'inputFiles/mapping.json' config['myconf1']['max_tracegap_seconds'] = str(365 * 86400) # 1 year config['myconf1']['startingitemseed'] = str(0) config['myconf1']['typeofmeasure'] = 'active' config['myconf1']['protocol'] = 'TCP' config['myconf1']['command'] = 'TCPRTT' config['myconf1']['observerPos'] = 'edge' config['myconf1']['sender-identity'] = 'Observer' config['myconf1']['receiver-identity'] = 'Client' config['myconf1']['first-endpoint'] = 'Observer' config['myconf1']['second-endpoint'] = 'Client' config['myconf2'] = config['myconf1'] config['myconf1']['access-technology'] = rng.choice(['wifi', 'lte']) config['myconf1']['cross-traffic'] = rng.choice( [f'{x}M' for x in range(0, 51, 10)]) config['myconf1']['traceseed'] = str(identifier) config['myconf2']['access-technology'] = rng.choice(['wifi', 'lte']) config['myconf2']['cross-traffic'] = rng.choice( [f'{x}M' for x in range(0, 51, 10)]) config['myconf2']['traceseed'] = str(identifier + 10000) self.rtt_values = (NetworkTraceManager( config["myconf1"]).get_rtt_timeseries()[1], NetworkTraceManager( config["myconf2"]).get_rtt_timeseries()[1]) assert len(self.rtt_values[0]) == len(self.rtt_values[1])
def printRtt(num_seeds: int): config = configparser.ConfigParser() config['myconf'] = {} config['myconf']['mapping_file'] = 'inputFiles/mapping.json' config['myconf']['max_tracegap_seconds'] = str(365 * 86400) # 1 year config['myconf']['startingitemseed'] = str(0) config['myconf']['typeofmeasure'] = 'active' config['myconf']['protocol'] = 'TCP' config['myconf']['command'] = 'TCPRTT' config['myconf']['observerPos'] = 'edge' config['myconf']['sender-identity'] = 'Observer' config['myconf']['receiver-identity'] = 'Client' config['myconf']['first-endpoint'] = 'Observer' config['myconf']['second-endpoint'] = 'Client' access = ['wifi', 'lte'] cross = [f'{x}M' for x in range(0, 51, 10)] for seed in range(num_seeds): for a in access: for c in cross: config['myconf']['access-technology'] = a config['myconf']['cross-traffic'] = c config['myconf']['traceseed'] = str(seed) rtt = NetworkTraceManager( config["myconf"]).get_rtt_timeseries()[1] print(f"#{seed} {a} {c} {rtt}")
def test_get_trace_list_custom(self): with tempfile.NamedTemporaryFile() as mapping_file: mapping_file.write( b'''[ { "direction": "upstream", "noise": "0M", "typeofmeasure": "active", "last_timestamp": "2020-01-31 21:16:45.000000", "first_timestamp": "2020-01-24 15:36:55.000000", "path": "inputFiles/active/wifi-TCPBandwidth-upstream-noise0M_Client-Observer_edge.txt", "ObserverPos": "edge", "receiverIdentity": "Observer", "access-technology": "wifi", "senderIdentity": "Client", "command": "TCPBandwidth" } ] ''') mapping_file.flush() trace_list = NetworkTraceManager.get_tracelist(mapping_file.name) self.assertEqual(1, len(trace_list)) self.assertEqual('active', trace_list[0]['typeofmeasure']) self.assertEqual('TCPBandwidth', trace_list[0]['command']) self.assertEqual('edge', trace_list[0]['ObserverPos']) self.assertEqual('0M', trace_list[0]['noise']) self.assertEqual('wifi', trace_list[0]['access-technology']) self.assertEqual('upstream', trace_list[0]['direction']) self.assertEqual('Client', trace_list[0]['senderIdentity']) self.assertEqual('Observer', trace_list[0]['receiverIdentity'])
def test_get_timeseries(self): with tempfile.NamedTemporaryFile() as conf_file: TestNetworkTraceManager.write_to_conf_file(conf_file) config = configparser.ConfigParser() config.read(conf_file.name) trace = NetworkTraceManager(config["confGood"]) rtt_timeseries = trace.get_rtt_timeseries() self.assertEqual(2, len(rtt_timeseries)) self.assertEqual(len(rtt_timeseries[0]), len(rtt_timeseries[1])) self.assertEqual(0, rtt_timeseries[0][0]) for i in range(1, len(rtt_timeseries)): self.assertLessEqual(rtt_timeseries[0][i-1], rtt_timeseries[0][i]) bw_timeseries = trace.get_bandwidth_timeseries() self.assertEqual(2, len(bw_timeseries)) self.assertEqual(len(bw_timeseries[0]), len(bw_timeseries[1])) self.assertEqual(0, bw_timeseries[0][0]) for i in range(1, len(bw_timeseries)): self.assertLessEqual(bw_timeseries[0][i-1], bw_timeseries[0][i])
def test_valid_invalid_configuration(self): config = None with tempfile.NamedTemporaryFile() as conf_file: TestNetworkTraceManager.write_to_conf_file(conf_file) config = configparser.ConfigParser() config.read(conf_file.name) self.assertIsNotNone(config) # good conf good_conf = NetworkTraceManager(config["confGood"]) self.assertEqual(0, good_conf._status) good_conf.print_instanceconfiguration() # non-existing conf self.assertRaises(KeyError, lambda : NetworkTraceManager(config["confx"])) # bad conf self.assertRaises(InvalidConfiguration, lambda : NetworkTraceManager(config["confBad"]))
config['myconf']['second-endpoint'] = args.receiver config['myconf']['direction'] = args.direction config['myconf']['trace'] = 'True' data_type = 'timeseries' if args.histo_values: if args.histo_time: sys.stderr.write( 'Can only specify one of --histo_time and --histo_values\n') sys.exit(1) data_type = 'histo_values' elif args.histo_time: data_type = 'histo_time' try: trace = NetworkTraceManager(config['myconf']) assert args.metric in ['RTT', 'bandwidth'] timeseries = trace.get_rtt_timeseries() \ if args.metric == 'RTT' \ else trace.get_bandwidth_timeseries() if args.save: save(timeseries, args.save, data_type) else: plot(timeseries, data_type) except InvalidConfiguration: sys.stderr.write( 'Invalid configuration:\n\n{}\n\nPlease check command-line arguments\n'
from network_trace_manager import NetworkTraceManager logging.basicConfig( filename="file.log", filemode='w', format= '%(asctime)s,%(msecs)d %(name)s %(levelname)s %(funcName)s(): %(message)s', datefmt='%H:%M:%S', level=logging.DEBUG) config = configparser.ConfigParser() config.read("conf.ini") for elem in NetworkTraceManager.get_tracelist("inputFiles/mapping.json", command="TCPRTT", direction="upstream", typeofmeasure="active"): print(elem) network_trace1 = NetworkTraceManager(config["conf1"]) network_trace2 = NetworkTraceManager(config["conf2"]) print(network_trace1.get_rtt(1)) print(network_trace1.get_rtt(3.1)) print(network_trace1.get_rtt(2.3)) print(network_trace1.get_rtt(4.2)) print("\n") print(network_trace2.get_rtt(1)) print(network_trace2.get_rtt(6)) print(network_trace2.get_rtt(8))
def test_get_trace_list(self): trace_list = NetworkTraceManager.get_tracelist('inputFiles/mapping.json') self.assertEqual(288, len(trace_list))
def test_get_all_values(self): with tempfile.NamedTemporaryFile() as conf_file: TestNetworkTraceManager.write_to_conf_file(conf_file) config = configparser.ConfigParser() config.read(conf_file.name) trace = NetworkTraceManager(config["confGood"]) self.assertEqual({'active'}, trace.get_all_values('typeofmeasure')) self.assertEqual( {'TCPBandwidth', 'UDPBandwidth', 'TCPRTT', 'UDPRTT'}, trace.get_all_values('command')) self.assertEqual({'edge', 'cloud'}, trace.get_all_values('ObserverPos')) self.assertEqual(set([f'{x}M' for x in range(0,51, 10)]), trace.get_all_values('noise')) self.assertEqual({'wifi', 'lte'}, trace.get_all_values('access-technology')) self.assertEqual({'upstream', 'downstream'}, trace.get_all_values('direction')) self.assertEqual({'Observer', 'Client', 'Server'}, trace.get_all_values('senderIdentity')) self.assertEqual({'Observer', 'Client', 'Server'}, trace.get_all_values('receiverIdentity')) self.assertEqual({'Client', 'Server'}, trace.get_all_values('first-endpoint')) self.assertEqual({'Observer'}, trace.get_all_values('second-endpoint'))