-
Notifications
You must be signed in to change notification settings - Fork 0
/
stress_test.py
59 lines (44 loc) · 1.37 KB
/
stress_test.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
import ipaddress
from itertools import islice
from random import randint
from time import process_time
from subnet_removal import filter_out_subnets
def random_pfx():
"""
Caveman style random pfx generation
:return:
"""
while True:
rp = "{0}.{1}.{2}.{3}/{4}".format(
randint(1, 223),
randint(0, 255),
randint(0, 255),
randint(0, 254),
randint(8, 31),
)
pfx = str(ipaddress.IPv4Interface(rp).network.with_prefixlen)
yield pfx
if __name__ == "__main__":
for pow in range(3, 7):
pfxs = list(islice(random_pfx(), 0, 10 ** pow))
start = process_time()
filter_out_subnets(pfxs)
end = process_time()
print(
"It took {0:05.5f}s to process {1:,} random prefixes.".format(
end - start, 10 ** pow
)
)
with open("test_input/inet-pfxs.txt") as f:
pfxs = list(l.strip() for l in f)
inet_sz = len(pfxs)
start = process_time()
inet_flt = filter_out_subnets(pfxs)
end = process_time()
print("\n\nNow something more fun. Full Internet table!")
print(
"It took {0:05.5f}s to process {1:,} Internet prefixes.\n"
"After filtering out subnets we are left with {2:,} prefixes.".format(
end - start, inet_sz, len(inet_flt)
)
)