@@ -26,8 +26,12 @@ def run_pktvisor(context, status_port, role):
2626 assert_that (context .container_id , not_ (equal_to (None )), "Failed to provision pktvisor container" )
2727 if context .container_id not in context .containers_id .keys ():
2828 context .containers_id [context .container_id ] = str (context .pkt_port )
29- event = threading .Event ()
30- event .wait (1 )
29+ if availability [status_port ]:
30+ message = f"web server listening on localhost:{ context .pkt_port } "
31+ else :
32+ message = f"unable to bind to localhost:{ context .pkt_port } "
33+ server_listening , logs = get_logs_and_check (context .container_id , message )
34+ assert_that (server_listening , equal_to (True ), f"Message { message } not found on pkt logs: { logs } " )
3135
3236
3337@step ("that a pktvisor instance is running on port {status_port} with {role} permission" )
@@ -203,3 +207,32 @@ def check_successful_packets(return_command_tcpreplay):
203207 equal_to (int (return_command_tcpreplay ['Successfulpackets' ])), "Some packet may have failure" )
204208
205209 return return_command_tcpreplay
210+
211+
212+ @threading_wait_until
213+ def get_logs_and_check (container_id , expected_message , event = None ):
214+ """
215+
216+ :param container_id: pktvisor container ID
217+ :param (str) expected_message: message that we expect to find in the logs
218+ :param (obj) event: threading.event
219+ :return: (bool) if the expected message is found return True, if not, False
220+ """
221+ logs = get_pkt_logs (container_id )
222+ for log in logs :
223+ if expected_message in log :
224+ event .set ()
225+ return event .is_set (), logs
226+ return event .is_set (), logs
227+
228+
229+ def get_pkt_logs (container_id ):
230+ """
231+ Gets the logs from pkt container
232+
233+ :param (str) container_id: pktvisor container ID
234+ :returns: (list) of log lines
235+ """
236+ docker_client = docker .from_env ()
237+ container = docker_client .containers .get (container_id )
238+ return container .logs ().decode ("utf-8" ).split ("\n " )
0 commit comments