コード例 #1
0
    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])
コード例 #2
0
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}")
コード例 #3
0
    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'])
コード例 #4
0
    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])
コード例 #5
0
    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"]))
コード例 #6
0
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'
コード例 #7
0
ファイル: main.py プロジェクト: MECPerf/MECPerf_NetworkTrace
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))
コード例 #8
0
 def test_get_trace_list(self):
     trace_list = NetworkTraceManager.get_tracelist('inputFiles/mapping.json')
     self.assertEqual(288, len(trace_list))
コード例 #9
0
    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'))