session: fix endpt cfg test (VPP-1492) 47/15947/5
authorFlorin Coras <fcoras@cisco.com>
Wed, 14 Nov 2018 17:32:07 +0000 (09:32 -0800)
committerDave Barach <openvpp@barachs.net>
Thu, 15 Nov 2018 12:01:20 +0000 (12:01 +0000)
Change-Id: I0f2266c4727a96b6410a3084dc079bae7bc649ab
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/plugins/unittest/session_test.c

index 5c2993e..182a8e8 100644 (file)
@@ -18,6 +18,7 @@
 #include <vnet/session/application.h>
 #include <vnet/session/session.h>
 #include <vnet/session/session_rules_table.h>
+#include <vnet/tcp/tcp.h>
 
 #define SESSION_TEST_I(_cond, _comment, _args...)              \
 ({                                                             \
@@ -268,10 +269,10 @@ static int
 session_test_endpoint_cfg (vlib_main_t * vm, unformat_input_t * input)
 {
   session_endpoint_cfg_t client_sep = SESSION_ENDPOINT_CFG_NULL;
+  u32 server_index, client_index, sw_if_index[2], tries = 0;
   u64 options[APP_OPTIONS_N_OPTIONS], dummy_secret = 1234;
   u16 dummy_server_port = 1234, dummy_client_port = 5678;
   session_endpoint_t server_sep = SESSION_ENDPOINT_NULL;
-  u32 server_index, client_index, sw_if_index[2];
   ip4_address_t intf_addr[3];
   transport_connection_t *tc;
   stream_session_t *s;
@@ -361,13 +362,20 @@ session_test_endpoint_cfg (vlib_main_t * vm, unformat_input_t * input)
     .app_index = client_index,
   };
 
+  connected_session_index = connected_session_thread = ~0;
+  accepted_session_index = accepted_session_thread = ~0;
   error = vnet_connect (&connect_args);
   SESSION_TEST ((error == 0), "connect should work");
 
   /* wait for stuff to happen */
-  vlib_process_suspend (vm, 10e-3);
-
+  while ((connected_session_index == ~0
+         || vec_len (tcp_main.wrk_ctx[0].pending_acks)) && ++tries < 100)
+    vlib_process_suspend (vm, 100e-3);
+  clib_warning ("waited %.1f seconds for connections", tries / 10.0);
   SESSION_TEST ((connected_session_index != ~0), "session should exist");
+  SESSION_TEST ((connected_session_thread != ~0), "thread should exist");
+  SESSION_TEST ((accepted_session_index != ~0), "session should exist");
+  SESSION_TEST ((accepted_session_thread != ~0), "thread should exist");
   s = session_get (connected_session_index, connected_session_thread);
   tc = session_get_transport (s);
   SESSION_TEST ((tc != 0), "transport should exist");