Solution architecture:
Perform the following scenarios like a battery of tests
UDP - single-node, multicast
TCP - single-node
TCP - single-node, multithread
https://stackoverflow.com/questions/39246259/tcp-threaded-python https://stackoverflow.com/questions/28840624/forking-server-in-python https://stackoverflow.com/questions/32654551/tcp-vs-udp-socket-latency-benchmark
Extrapolate to utils, scenario files
https://stackoverflow.com/questions/15909064/python-implementation-for-stop-and-wait-algorithm
airflow https://stackoverflow.com/questions/43386003/airflow-inside-docker-running-a-docker-container http://localhost:8080/admin/ http://michal.karzynski.pl/blog/2017/03/19/developing-workflows-with-apache-airflow/ https://airflow.apache.org/tutorial.html http://www.golangbootcamp.com/book/concurrency
In [1]:
import os
import pandas as pd
import utils
import plotly.graph_objs as go
import plotly.figure_factory as ff
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
init_notebook_mode(connected=True)
In [2]:
%%bash
ls -l data/ | grep csv
In [3]:
root, dirs, files = os.walk('data/').__next__()
metadata_files = [file for file in files if file.startswith('metadata')]
print(metadata_files)
In [4]:
lst_df = []
for file in metadata_files:
lst_df.append(pd.read_csv(root + file))
df = pd.concat(lst_df)
df.reset_index(inplace=True)
df.Time = pd.to_timedelta(df.Time)
df['SizeBytes'] = df['Size(MB)'].apply(utils.parseSize)
df = df[['Protocol', 'Type', 'Location',
'Setup', 'Mode', 'Rounds', 'Time',
'Count', 'SizeBytes', 'Size(MB)']]
df = df.sort_values('Rounds').sort_values('Protocol')
df.reset_index(inplace=True, drop=True)
df.info()
df.head(df.shape[0])
Out[4]:
In [5]:
delta_udp_time = []
delta_udp_count = []
delta_udp_bytes = []
delta_udp_mb = []
In [6]:
delta_udp = df[df.Protocol == 'UDP']
delta_udp
Out[6]:
In [7]:
(delta_udp.iloc[1].Time - delta_udp.iloc[0].Time)# .seconds
Out[7]:
In [8]:
# delta_udp_time = delta_udp[delta_udp.Type == 'server'].Time - delta_udp[delta_udp.Type == 'client'].Time
delta_udp_time.append((delta_udp.iloc[1].Time - delta_udp.iloc[0].Time))
delta_udp_time.append((delta_udp.iloc[3].Time - delta_udp.iloc[2].Time))
delta_udp_time.append((delta_udp.iloc[4].Time - delta_udp.iloc[5].Time)) # diff
delta_udp_time
Out[8]:
In [9]:
y = delta_udp_time
trace = [go.Box(
y=y,
jitter=0.3,
pointpos=-1.8,
boxpoints = 'suspectedoutliers',
marker = dict(
color = 'rgb(8,81,156)',
outliercolor = 'rgba(219, 64, 82, 0.6)',
line = dict(
outliercolor = 'rgba(219, 64, 82, 0.6)',
outlierwidth = 2)
),
# name = name + ' - suspected outliers'
)]
iplot(trace)
In [10]:
# delta_udp_size = delta_udp[delta_udp.Type == 'client'].SizeBytes - delta_udp[delta_udp.Type == 'server'].SizeBytes
delta_udp_bytes.append((delta_udp.iloc[0].SizeBytes - delta_udp.iloc[1].SizeBytes))
delta_udp_bytes.append((delta_udp.iloc[2].SizeBytes - delta_udp.iloc[3].SizeBytes))
delta_udp_bytes.append((delta_udp.iloc[4].SizeBytes - delta_udp.iloc[5].SizeBytes))
print(delta_udp_bytes)
delta_udp_mb.append(utils.convert_size(delta_udp_bytes[0]))
delta_udp_mb.append(utils.convert_size(delta_udp_bytes[1]))
delta_udp_mb.append(utils.convert_size(delta_udp_bytes[2]))
print(delta_udp_mb)
In [11]:
y = delta_udp_bytes
trace = [go.Box(
y=y,
jitter=0.3,
pointpos=-1.8,
boxpoints = 'suspectedoutliers',
marker = dict(
color = 'rgb(8,81,156)',
outliercolor = 'rgba(219, 64, 82, 0.6)',
line = dict(
outliercolor = 'rgba(219, 64, 82, 0.6)',
outlierwidth = 2)
),
# name = name + ' - suspected outliers'
)]
iplot(trace)
In [12]:
delta_udp_count.append((delta_udp.iloc[0].Count - delta_udp.iloc[1].Count))
delta_udp_count.append((delta_udp.iloc[2].Count - delta_udp.iloc[3].Count))
delta_udp_count.append((delta_udp.iloc[4].Count - delta_udp.iloc[5].Count))
print(delta_udp_count)
In [13]:
y = delta_udp_count
trace = [go.Box(
y=y,
jitter=0.3,
pointpos=-1.8,
boxpoints = 'suspectedoutliers',
marker = dict(
color = 'rgb(8,81,156)',
outliercolor = 'rgba(219, 64, 82, 0.6)',
line = dict(
outliercolor = 'rgba(219, 64, 82, 0.6)',
outlierwidth = 2)
),
# name = name + ' - suspected outliers'
)]
iplot(trace)
In [14]:
delta_zmq_time = []
delta_zmq_count = []
delta_zmq_bytes = []
delta_zmq_mb = []
In [15]:
delta_zmq = df[df.Protocol == 'ZeroMQ']
delta_zmq
Out[15]:
In [16]:
# delta_zmq_time = delta_zmq[delta_zmq.Type == 'server'].Time - delta_zmq[delta_zmq.Type == 'client'].Time
delta_zmq_time.append((delta_zmq.iloc[1].Time - delta_zmq.iloc[0].Time))
delta_zmq_time.append((delta_zmq.iloc[2].Time - delta_zmq.iloc[3].Time)) # diff
delta_zmq_time.append((delta_zmq.iloc[4].Time - delta_zmq.iloc[5].Time))
delta_zmq_time
Out[16]:
In [17]:
# delta_zmq_size = delta_udp[delta_udp.Type == 'client'].SizeBytes - delta_udp[delta_udp.Type == 'server'].SizeBytes
delta_zmq_bytes.append((delta_zmq.iloc[0].SizeBytes - delta_zmq.iloc[1].SizeBytes))
delta_zmq_bytes.append((delta_zmq.iloc[2].SizeBytes - delta_zmq.iloc[3].SizeBytes))
delta_zmq_bytes.append((delta_zmq.iloc[4].SizeBytes - delta_zmq.iloc[5].SizeBytes))
print(delta_zmq_bytes)
delta_zmq_mb.append(utils.convert_size(delta_zmq_bytes[0]))
delta_zmq_mb.append(utils.convert_size(delta_zmq_bytes[1]))
delta_zmq_mb.append(utils.convert_size(delta_zmq_bytes[2]))
print(delta_udp_mb)
In [18]:
delta_zmq_count.append((delta_zmq.iloc[0].Count - delta_zmq.iloc[1].Count))
delta_zmq_count.append((delta_zmq.iloc[2].Count - delta_zmq.iloc[3].Count))
delta_zmq_count.append((delta_zmq.iloc[4].Count - delta_zmq.iloc[5].Count))
print(delta_udp_count)
In [ ]:
In [ ]:
In [ ]: