From 2c388e07576a8ea1d7f661387f5a7ba44bc6f01e Mon Sep 17 00:00:00 2001 From: IWASE Yusuke Date: Tue, 15 May 2018 08:26:42 +0900 Subject: scenario_test: Wait for GoBGP starting up For the stability of some scenario tests, this patch fixes to wait for GoBGP starting up after restarting GoBGP daemon. Currently, there are cases that CLI command can be called without checking whether GoBGP daemon is surely started or not. Signed-off-by: IWASE Yusuke --- test/lib/gobgp.py | 8 +++++++- test/scenario_test/graceful_restart_test.py | 7 +++---- test/scenario_test/long_lived_graceful_restart_test.py | 3 +-- 3 files changed, 11 insertions(+), 7 deletions(-) (limited to 'test') diff --git a/test/lib/gobgp.py b/test/lib/gobgp.py index a4d697b1..3c33056b 100644 --- a/test/lib/gobgp.py +++ b/test/lib/gobgp.py @@ -15,6 +15,7 @@ from __future__ import absolute_import +import collections import json from itertools import chain from threading import Thread @@ -27,7 +28,6 @@ from fabric.utils import indent import netaddr import toml import yaml -import collections from lib.base import ( wait_for_completion, @@ -113,6 +113,12 @@ class GoBGPContainer(BGPContainer): local(cmd, capture=True) self.local("{0}/start.sh".format(self.SHARED_VOLUME), detach=True) + def start_gobgp(self, graceful_restart=False): + if self._is_running(): + raise RuntimeError('GoBGP is already running') + self._start_gobgp(graceful_restart=graceful_restart) + self._wait_for_boot() + def stop_gobgp(self): self.local("pkill -INT gobgpd") diff --git a/test/scenario_test/graceful_restart_test.py b/test/scenario_test/graceful_restart_test.py index ac4130d2..5d2c2b9d 100644 --- a/test/scenario_test/graceful_restart_test.py +++ b/test/scenario_test/graceful_restart_test.py @@ -78,8 +78,7 @@ class GoBGPTestBase(unittest.TestCase): self.assertTrue(p['stale']) g1.routes = {} - g1._start_gobgp(graceful_restart=True) - time.sleep(3) + g1.start_gobgp(graceful_restart=True) g1.add_route('10.10.20.0/24') def test_03_neighbor_established(self): @@ -134,7 +133,7 @@ class GoBGPTestBase(unittest.TestCase): g2 = self.bgpds['g2'] g3 = self.bgpds['g3'] - g1._start_gobgp() + g1.start_gobgp() g1.del_peer(g2) g1.del_peer(g3) @@ -157,7 +156,7 @@ class GoBGPTestBase(unittest.TestCase): g2.wait_for(expected_state=BGP_FSM_ACTIVE, peer=g1) g3.wait_for(expected_state=BGP_FSM_ACTIVE, peer=g1) - g1._start_gobgp(graceful_restart=True) + g1.start_gobgp(graceful_restart=True) count = 0 while (g1.get_neighbor_state(g2) != BGP_FSM_ESTABLISHED diff --git a/test/scenario_test/long_lived_graceful_restart_test.py b/test/scenario_test/long_lived_graceful_restart_test.py index a9f6a0ee..0a42afab 100644 --- a/test/scenario_test/long_lived_graceful_restart_test.py +++ b/test/scenario_test/long_lived_graceful_restart_test.py @@ -110,8 +110,7 @@ class GoBGPTestBase(unittest.TestCase): # withdrawn self.assertTrue(len(g4.get_global_rib('10.0.0.0/24')) == 0) - g2._start_gobgp(graceful_restart=True) - time.sleep(2) + g2.start_gobgp(graceful_restart=True) g2.local('gobgp global rib add 10.0.0.0/24') g2.local('gobgp global rib add 10.10.0.0/24') -- cgit v1.2.3