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()