Skip to content

Commit

Permalink
Alternative test data generator.
Browse files Browse the repository at this point in the history
  • Loading branch information
exhuma committed Feb 28, 2014
1 parent 878ac1d commit df694cc
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 15 deletions.
38 changes: 38 additions & 0 deletions ipmerge/genpool.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from ipaddress import ip_network
from random import randint


def generate(base, **kwargs):
for sub in base.subnets(**kwargs):
if randint(0, 100) > 50:
continue

if sub.prefixlen < 100 and randint(0, 100) < 50:
j = 0
for x in generate(sub, prefixlen_diff=randint(2, 8)):
yield x
j += 1
if j >= randint(0, 20):
break

yield(sub)


def gen(num):
base = ip_network('1234:1234::/30')
gen = generate(base, new_prefix=56)

i = 0
out = []
for val in gen:
out.append(val)
i += 1
if i >= num:
break
return out


if __name__ == '__main__':
import sys
for value in gen(int(sys.argv[1])):
print(value)
40 changes: 25 additions & 15 deletions ipmerge/mantest.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import sys
import timeit
from testdata import testdata, genv6
from merger import merge
from ipaddress import collapse_addresses
from merger import merge
from testdata import testdata


def run_tests_v4():
Expand All @@ -21,18 +21,28 @@ def run_tests_v4():


def run_tests_v6():
out = genv6(sys.argv[1])
#iterations = 1
#print('collapsing {} IPv6 networks {} times'.format(sys.argv[1],
# iterations))
##print('new: ', timeit.timeit('merge(genv6({}))'.format(sys.argv[1]),
## setup=('from merger import merge; '
## 'from testdata import genv6'),
## number=iterations) / iterations)
#print('old: ', timeit.timeit(
# 'collapse_addresses(genv6({}))'.format(sys.argv[1]),
# setup=('from ipaddress import collapse_addresses; '
# 'from testdata import genv6'),
# number=iterations) / iterations)
from genpool import gen
from datetime import datetime
testdata = gen(int(sys.argv[1]))
with open("testdata.txt", "w") as fp:
fp.writelines([str(_) for _ in testdata])
print('collapsing {} IPv6 networks'.format(sys.argv[1]))

before = datetime.now()
result = merge(testdata)
done = datetime.now()
with open("new_result.txt", "w") as fp:
fp.writelines([str(_) for _ in result])
print('new collapsed to {} networks in {}'.format(
len(result), done - before))

before = datetime.now()
result = collapse_addresses(testdata)
done = datetime.now()
resultlist = [str(_) for _ in result]
with open("old_result.txt", "w") as fp:
fp.writelines(resultlist)
print('old collapsed to {} networks in {}'.format(
len(resultlist), done - before))

run_tests_v6()

0 comments on commit df694cc

Please sign in to comment.