From ffd27e41f4dc4332e3f3e782c1bff1595cf2323b Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Tue, 12 Feb 2019 06:41:37 +0000 Subject: [PATCH 1/2] [warm/fast reboot] fail fast/warm reboot test if BGP GR timeout is detected Signed-off-by: Ying Xie --- .../roles/test/files/ptftests/advanced-reboot.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ansible/roles/test/files/ptftests/advanced-reboot.py b/ansible/roles/test/files/ptftests/advanced-reboot.py index 025da12a256..6a93cb7684c 100644 --- a/ansible/roles/test/files/ptftests/advanced-reboot.py +++ b/ansible/roles/test/files/ptftests/advanced-reboot.py @@ -214,6 +214,15 @@ def run(self): cli_data['bgp_v6'] = self.check_series_status(data, "bgp_route_v6", "BGP v6 routes") cli_data['po'] = self.check_change_time(samples, "po_changetime", "PortChannel interface") + route_timeout = log_data['route_timeout'] + cli_data['route_timeout'] = route_timeout + + # {'10.0.0.38': [(0, '4200065100)')], 'fc00::2d': [(0, '4200065100)')]} + for nei in route_timeout.keys(): + asn = route_timeout[nei][0] + msg = 'BGP route GR timeout: neighbor %s ASN %s' % (nei, asn) + self.fails.add(msg) + return self.fails, self.info, cli_data, log_data def extract_from_logs(self, regexp, data): @@ -242,6 +251,11 @@ def parse_logs(self, data): if_r = r'^(\S+\s+\d+\s+\S+) \S+ Ebra: %LINEPROTO-5-UPDOWN: Line protocol on Interface (\S+), changed state to (\S+)$' result_if, initial_time_if = self.extract_from_logs(if_r, data) + route_r = r'^(\S+\s+\d+\s+\S+) \S+ Rib: %BGP-5-BGP_GRACEFUL_RESTART_TIMEOUT: Deleting stale routes from peer (\S+) .+ (\S+)$' + result_rt, initial_time_rt = self.extract_from_logs(route_r, data) + + result['route_timeout'] = result_rt + if initial_time_bgp == -1 or initial_time_if == -1: return result @@ -940,7 +954,7 @@ def runTest(self): for ip in sorted(self.logs_info.keys()): self.log("Extracted log info from %s" % ip) for msg in sorted(self.logs_info[ip].keys()): - if msg != 'error': + if not msg in [ 'error', 'route_timeout' ]: self.log(" %s : %d" % (msg, self.logs_info[ip][msg])) else: self.log(" %s" % self.logs_info[ip][msg]) From 56ecf123c4593fce3b71a76fc88ce0548ff6ebf5 Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Tue, 12 Feb 2019 19:18:16 +0000 Subject: [PATCH 2/2] [warm/fast reboot] get the actual ASN for printing Signed-off-by: Ying Xie --- ansible/roles/test/files/ptftests/advanced-reboot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible/roles/test/files/ptftests/advanced-reboot.py b/ansible/roles/test/files/ptftests/advanced-reboot.py index 6a93cb7684c..4714c03f54a 100644 --- a/ansible/roles/test/files/ptftests/advanced-reboot.py +++ b/ansible/roles/test/files/ptftests/advanced-reboot.py @@ -219,8 +219,8 @@ def run(self): # {'10.0.0.38': [(0, '4200065100)')], 'fc00::2d': [(0, '4200065100)')]} for nei in route_timeout.keys(): - asn = route_timeout[nei][0] - msg = 'BGP route GR timeout: neighbor %s ASN %s' % (nei, asn) + asn = route_timeout[nei][0][-1] + msg = 'BGP route GR timeout: neighbor %s (ASN %s' % (nei, asn) self.fails.add(msg) return self.fails, self.info, cli_data, log_data