From: Lou Berger Date: Sat, 30 Jun 2018 19:18:33 +0000 (-0400) Subject: lib: add and use Router.checkRouterVersion (based on bdpd version) X-Git-Tag: frr-7.1-dev~151^2~65 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=fb80b81b2673a0826640450c0eef2be65b652f1d;p=mirror%2Ffrr.git lib: add and use Router.checkRouterVersion (based on bdpd version) Signed-off-by: Lou Berger --- diff --git a/tests/topotests/lib/topogen.py b/tests/topotests/lib/topogen.py index 63d3a5afdd..9e4132e8fb 100644 --- a/tests/topotests/lib/topogen.py +++ b/tests/topotests/lib/topogen.py @@ -776,23 +776,7 @@ class TopoRouter(TopoGear): Usage example: router.has_version('>', '1.0') """ - rversion = self.version_info()['version'] - if rversion is None: - return False - - result = topotest.version_cmp(rversion, version) - if cmpop == '>=': - return result >= 0 - if cmpop == '>': - return result > 0 - if cmpop == '=': - return result == 0 - if cmpop == '<': - return result < 0 - if cmpop == '<': - return result < 0 - if cmpop == '<=': - return result <= 0 + return self.tgen.net[self.name].checkRouterVersion(cmpop, version) def has_type(self, rtype): """ diff --git a/tests/topotests/lib/topotest.py b/tests/topotests/lib/topotest.py index 655a05cbd4..f0412dc2df 100644 --- a/tests/topotests/lib/topotest.py +++ b/tests/topotests/lib/topotest.py @@ -489,6 +489,7 @@ class Router(Node): 'ldpd': 0, 'eigrpd': 0, 'nhrpd': 0} self.daemons_options = {'zebra': ''} self.reportCores = True + self.version = None def _config_frr(self, **params): "Configure FRR binaries" @@ -688,6 +689,9 @@ class Router(Node): self.cmd('umask 000') #Re-enable to allow for report per run self.reportCores = True + if self.version == None: + self.version = self.cmd(os.path.join(self.daemondir, 'bgpd')+' -v').split()[2] + logger.info('{}: running version: {}'.format(self.name,self.version)) # Start Zebra first if self.daemons['zebra'] == 1: zebra_path = os.path.join(self.daemondir, 'zebra') @@ -797,6 +801,37 @@ class Router(Node): return "%s: Daemon %s not running" % (self.name, daemon) return "" + + def checkRouterVersion(self, cmpop, version): + """ + Compares router version using operation `cmpop` with `version`. + Valid `cmpop` values: + * `>=`: has the same version or greater + * '>': has greater version + * '=': has the same version + * '<': has a lesser version + * '<=': has the same version or lesser + + Usage example: router.checkRouterVersion('>', '1.0') + """ + rversion = self.version + if rversion is None: + return False + + result = version_cmp(rversion, version) + if cmpop == '>=': + return result >= 0 + if cmpop == '>': + return result > 0 + if cmpop == '=': + return result == 0 + if cmpop == '<': + return result < 0 + if cmpop == '<': + return result < 0 + if cmpop == '<=': + return result <= 0 + def get_ipv6_linklocal(self): "Get LinkLocal Addresses from interfaces"