diff --git a/tests/test.py b/tests/test.py new file mode 100644 index 0000000..131a487 --- /dev/null +++ b/tests/test.py @@ -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()