-
Notifications
You must be signed in to change notification settings - Fork 0
/
plot-queue.py
91 lines (80 loc) · 2.51 KB
/
plot-queue.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import optparse
import sys
import matplotlib
from pylab import *
# Class that parses a file of queue events and plots a graph over time
class Plotter:
def __init__(self,file):
""" Initialize plotter with a file name. """
self.file = "log.txt"
self.data = []
self.min_time = None
self.max_time = None
def parse(self):
""" Parse the data file """
first = None
f = open(self.file)
for line in f.readlines():
if line.startswith("#"):
continue
try:
t, event, eType, size, j, amax, ip = line.split()
# t,size = line.split()
if (event != 'Queue' or ip != '125.225.53.1'):
continue
# print t, " ", size, " ",line
except:
continue
t = float(t)
try:
size = int(size)
except:
# print size
pass
self.data.append((t,size))
if not self.min_time or t < self.min_time:
self.min_time = t
if not self.max_time or t > self.max_time:
self.max_time = t
def plot(self):
""" Create a line graph of the queue size over time. """
clf()
x = []
y = []
dropX = []
dropY = []
i = 0
max_queue = 10
max = None
for (t,size) in self.data:
if size == 'x':
dropX.append(t)
dropY.append(max_queue+1)
# print "Dropped Found"
else:
x.append(t)
y.append(size)
plot(x,y)
scatter(dropX,dropY,marker='x',color='black')
xlabel('Time (seconds)')
ylabel('Queue Size (packets)')
xlim([self.min_time,self.max_time])
ylim([0,max_queue+2])
savefig('reports/queue.png')
def parse_options():
# parse options
parser = optparse.OptionParser(usage = "%prog [options]",
version = "%prog 0.1")
parser.add_option("-f","--file",type="string",dest="file",
default=None,
help="file")
(options,args) = parser.parse_args()
return (options,args)
if __name__ == '__main__':
(options,args) = parse_options()
if options.file == None:
print "plot.py -f file"
sys.exit()
p = Plotter(options.file)
p.parse()
p.plot()