test generator
This commit is contained in:
parent
84ec123c75
commit
657b8b17b9
|
@ -0,0 +1,48 @@
|
|||
import random
|
||||
from ipaddress import IPv6Network
|
||||
|
||||
|
||||
def parse_rule(rule):
|
||||
parts = rule.split()
|
||||
prefix, next_hop = parts
|
||||
return prefix, int(next_hop)
|
||||
|
||||
|
||||
def generate_random_test_cases(rules, n):
|
||||
with open('../data/test-data', 'w') as f:
|
||||
for rule in rules:
|
||||
rule_prefix = rule[0]
|
||||
rule_next_hop = rule[1]
|
||||
rule_network = IPv6Network(rule_prefix)
|
||||
|
||||
for _ in range(n):
|
||||
next_hop = rule_next_hop
|
||||
address = rule_network.network_address + random.randint(0, rule_network.num_addresses - 1)
|
||||
|
||||
for oth_rule in rules:
|
||||
if oth_rule == rule:
|
||||
continue
|
||||
oth_prefix = oth_rule[0]
|
||||
oth_next_hop = oth_rule[1]
|
||||
if address in IPv6Network(oth_prefix) and rule_prefix < oth_prefix:
|
||||
next_hop = oth_next_hop
|
||||
f.write(f"{address} {next_hop}\n")
|
||||
# print(f"Generated test case: {address} {next_hop}")
|
||||
print("tests for rule ", rule_prefix, " with next hop ", rule_next_hop, " generated")
|
||||
|
||||
def main(): #1111:2222:3333:4444:5555:6666:7777:88 120
|
||||
rules = []
|
||||
|
||||
with open('../data/routing-data', 'r') as f:
|
||||
for line in f:
|
||||
rules.append(line.strip())
|
||||
|
||||
parsed_rules = [parse_rule(rule) for rule in rules]
|
||||
|
||||
num_tests = 10 # Change this to desired number of tests
|
||||
generate_random_test_cases(parsed_rules, num_tests)
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in New Issue