diff options
Diffstat (limited to 'tests/topotests/lib/topotest.py')
| -rw-r--r-- | tests/topotests/lib/topotest.py | 34 | 
1 files changed, 23 insertions, 11 deletions
diff --git a/tests/topotests/lib/topotest.py b/tests/topotests/lib/topotest.py index e2c70cdccd..301f245b17 100644 --- a/tests/topotests/lib/topotest.py +++ b/tests/topotests/lib/topotest.py @@ -2244,17 +2244,39 @@ class Router(Node):                  else:                      logger.debug("%s: %s %s started", self, self.routertype, daemon) +        # Check if the daemons are running +        def _check_daemons_running(check_daemon_files): +            wait_time = 30 if (gdb_routers or gdb_daemons) else 10 +            timeout = Timeout(wait_time) +            for remaining in timeout: +                if not check_daemon_files: +                    break +                check = check_daemon_files[0] +                if self.path_exists(check): +                    check_daemon_files.pop(0) +                    continue +                self.logger.debug( +                    "Waiting {}s for {} to appear".format(remaining, check) +                ) +                time.sleep(0.5) +          # Start mgmtd first          if "mgmtd" in daemons_list:              start_daemon("mgmtd")              while "mgmtd" in daemons_list:                  daemons_list.remove("mgmtd") +            # Wait till mgmtd is up and running to some +            # very small extent before moving on +            _check_daemons_running(check_daemon_files)          # Start Zebra after mgmtd          if "zebra" in daemons_list:              start_daemon("zebra")              while "zebra" in daemons_list:                  daemons_list.remove("zebra") +            # Wait till zebra is up and running to some +            # very small extent before moving on +            _check_daemons_running(check_daemon_files)          # Start staticd next if required          if "staticd" in daemons_list: @@ -2290,17 +2312,7 @@ class Router(Node):                  start_daemon(daemon)          # Check if daemons are running. -        wait_time = 30 if (gdb_routers or gdb_daemons) else 10 -        timeout = Timeout(wait_time) -        for remaining in timeout: -            if not check_daemon_files: -                break -            check = check_daemon_files[0] -            if self.path_exists(check): -                check_daemon_files.pop(0) -                continue -            self.logger.debug("Waiting {}s for {} to appear".format(remaining, check)) -            time.sleep(0.5) +        _check_daemons_running(check_daemon_files)          if check_daemon_files:              assert False, "Timeout({}) waiting for {} to appear on {}".format(  | 
