diff options
author | Rob Austein <sra@hactrn.net> | 2014-07-12 04:32:21 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2014-07-12 04:32:21 +0000 |
commit | 31519e146beaa4e6ac9d8077f82edada35589c26 (patch) | |
tree | c3ac2a3b430b7526397642df47e9350f5d3772a7 /ca/tests | |
parent | 00369f84c1c730094ea33847d08e276181dc76e8 (diff) |
Debug rpki-rtr BGPSEC test case and rpki-rtr-replay script.
svn path=/trunk/; revision=5894
Diffstat (limited to 'ca/tests')
-rwxr-xr-x | ca/tests/bgpsec-yaml.py | 71 | ||||
-rw-r--r-- | ca/tests/smoketest.py | 30 |
2 files changed, 78 insertions, 23 deletions
diff --git a/ca/tests/bgpsec-yaml.py b/ca/tests/bgpsec-yaml.py index fafaf7bd..49588258 100755 --- a/ca/tests/bgpsec-yaml.py +++ b/ca/tests/bgpsec-yaml.py @@ -28,26 +28,61 @@ import yaml root = "Root" -def kid(n): - name = "ISP-%03d" % n - ipv4 = "10.%d.0.0/16" % n - asn = n - router_id = n * 10000 - - return dict(name = name, - ipv4 = ipv4, - asn = asn, - hosted_by = root, - roa_request = [dict(asn = asn, ipv4 = ipv4)], - router_cert = [dict(asn = asn, router_id = router_id)]) +class Kid(object): + + def __init__(self, n): + self.name = "ISP-%03d" % n + self.ipv4 = "10.%d.0.0/16" % n + self.asn = n + self.router_id = n * 10000 + + @property + def declare(self): + return dict(name = self.name, + ipv4 = self.ipv4, + asn = self.asn, + hosted_by = root, + roa_request = [dict(asn = self.asn, ipv4 = self.ipv4)], + router_cert = [dict(asn = self.asn, router_id = self.router_id)]) + + @property + def del_routercert(self): + return dict(name = self.name, router_cert_del = [dict(asn = self.asn, router_id = self.router_id)]) + + @property + def add_routercert(self): + return dict(name = self.name, router_cert_add = [dict(asn = self.asn, router_id = self.router_id)]) + + +kids = [Kid(n + 1) for n in xrange(200)] + +shell_fmt = "shell set -x; ../../../rp/rpki-rtr/rpki-rtr cronjob rcynic-data/authenticated && tar %svf rpki-rtr.tar *.[ai]x.v*" +shell_first = shell_fmt % "c" +shell_next = shell_fmt % "u" + +sleeper = "sleep 30" + +docs = [dict(name = root, + valid_for = "1y", + kids = [kid.declare for kid in kids])] + +docs.append([shell_first, + sleeper]) + +gym = kids[50:70] + +for kid in gym: + docs.append([shell_next, + kid.del_routercert, + sleeper]) + +for kid in gym: + docs.append([shell_next, + kid.add_routercert, + sleeper]) print '''\ # This configuration was generated by a script. Edit at your own risk. ''' -print yaml.dump(dict(name = root, - crl_interval = "1h", - regen_margin = "20m", - valid_for = "1y", - kids = [kid(n + 1) for n in xrange(200)])) - +print yaml.safe_dump_all(docs, default_flow_style = False, allow_unicode = False) diff --git a/ca/tests/smoketest.py b/ca/tests/smoketest.py index 7f56843f..32f11cc3 100644 --- a/ca/tests/smoketest.py +++ b/ca/tests/smoketest.py @@ -162,6 +162,8 @@ def main(): log_handler = lambda: logging.StreamHandler(sys.stdout))) logger.info("Starting") + rpki.http.http_client.timeout = rpki.sundial.timedelta(hours = 1) + pubd_process = None rootd_process = None rsyncd_process = None @@ -383,6 +385,9 @@ class router_cert(object): """ _ecparams = None + _keypair = None + _pkcs10 = None + _gski = None @classmethod def ecparams(cls): @@ -393,18 +398,33 @@ class router_cert(object): def __init__(self, asn, router_id): self.asn = rpki.resource_set.resource_set_as("".join(str(asn).split())) self.router_id = router_id - self.keypair = rpki.x509.ECDSA.generate(self.ecparams()) - self.pkcs10 = rpki.x509.PKCS10.create(keypair = self.keypair) - self.gski = self.pkcs10.gSKI() self.cn = "ROUTER-%08x" % self.asn[0].min self.sn = "%08x" % self.router_id self.eku = rpki.oids.id_kp_bgpsec_router + @property + def keypair(self): + if self._keypair is None: + self._keypair = rpki.x509.ECDSA.generate(self.ecparams()) + return self._keypair + + @property + def pkcs10(self): + if self._pkcs10 is None: + self._pkcs10 = rpki.x509.PKCS10.create(keypair = self.keypair) + return self._pkcs10 + + @property + def gski(self): + if self._gski is None: + self._gski = self.pkcs10.gSKI() + return self._gski + def __eq__(self, other): - return self.asn == other.asn and self.sn == other.sn and self.gski == other.gski + return self.asn == other.asn and self.sn == other.sn def __hash__(self): - return tuple(self.asn).__hash__() + self.cn.__hash__() + self.sn.__hash__() + self.gski.__hash__() + return tuple(self.asn).__hash__() + self.cn.__hash__() + self.sn.__hash__() def __str__(self): return "%s: %s,%s: %s" % (self.asn, self.cn, self.sn, self.gski) |