master-thesis/p4app/test.py

63 lines
1.8 KiB
Python
Raw Normal View History

2019-03-14 16:32:51 +00:00
from __future__ import unicode_literals
import struct
import sys
import re
import logging
import argparse
import subprocess
import ipaddress
logging.basicConfig()
log = logging.getLogger("main")
class TestStuff(object):
2019-03-14 19:19:50 +00:00
def __init__(self):
pass
2019-03-14 16:32:51 +00:00
2019-03-14 19:19:50 +00:00
def test_v6_static_mapping(self):
host = "h1"
nat64_prefix = ipaddress.ip_network("64:ff9b::/96")
dst_ipv4 = ipaddress.ip_address("10.0.0.1")
translated_ipv4 = nat64_prefix[int(dst_ipv4)]
2019-03-14 16:32:51 +00:00
2019-03-14 19:19:50 +00:00
log.info("Trying to reach {} ({}) from {}".format(dst_ipv4, translated_ipv4, host))
cmd = "mx h1 ping -c1 {}".format(translated_ipv4).split(" ")
2019-03-14 16:32:51 +00:00
2019-03-14 19:19:50 +00:00
subprocess.call(cmd)
2019-03-14 16:32:51 +00:00
def commandline(self):
parser = argparse.ArgumentParser(description='controller++')
2019-03-14 19:19:50 +00:00
methods_dir = dir(self)
methods = [m for m in methods_dir if re.match("^test", m)]
methods = [re.sub("^test_(.*)", r"\1", m) for m in methods]
parser.add_argument('--method', help="which method?", choices=methods, required=True)
2019-03-14 16:32:51 +00:00
parser.add_argument('--debug', help='Enable debug logging', action='store_true')
parser.add_argument('--verbose', help='Enable verbose logging', action='store_true')
parser.add_argument('--multicast-to-controller', help='Send debug multicast to controller', action='store_true')
self.args = parser.parse_args()
2019-03-14 19:19:50 +00:00
if self.args.debug:
log.setLevel(logging.DEBUG)
elif self.args.verbose:
log.setLevel(logging.INFO)
else:
log.setLevel(logging.WARNING)
f = getattr(self, "test_{}".format(self.args.method))
f()
2019-03-14 16:32:51 +00:00
if __name__ == "__main__":
import sys
import os
log.info("Booting...")
log.debug("Debug enabled.")
2019-03-14 19:19:50 +00:00
t = TestStuff()
t.commandline()