session: cleanup use of api_client_index
[vpp.git] / src / plugins / unittest / session_test.c
index 5c2993e..c1622d1 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...)              \
 ({                                                             \
@@ -215,6 +216,7 @@ session_test_basic (vlib_main_t * vm, unformat_input_t * input)
 
   vnet_app_detach_args_t detach_args = {
     .app_index = server_index,
+    .api_client_index = ~0,
   };
   vnet_application_detach (&detach_args);
   return 0;
@@ -268,10 +270,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 +363,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");
@@ -385,6 +394,7 @@ session_test_endpoint_cfg (vlib_main_t * vm, unformat_input_t * input)
 
   vnet_app_detach_args_t detach_args = {
     .app_index = server_index,
+    .api_client_index = ~0,
   };
   vnet_application_detach (&detach_args);
   detach_args.app_index = client_index;
@@ -409,7 +419,7 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input)
   u64 options[APP_OPTIONS_N_OPTIONS], dummy_secret = 1234;
   u32 server_index, server_st_index, server_local_st_index;
   u32 dummy_port = 1234, client_index, server_wrk_index;
-  u32 dummy_api_context = 4321, dummy_client_api_index = 1234;
+  u32 dummy_api_context = 4321, dummy_client_api_index = ~0;
   u32 dummy_server_api_index = ~0, sw_if_index = 0;
   session_endpoint_t server_sep = SESSION_ENDPOINT_NULL;
   session_endpoint_t client_sep = SESSION_ENDPOINT_NULL;
@@ -455,6 +465,7 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input)
 
   vnet_app_detach_args_t detach_args = {
     .app_index = 0,
+    .api_client_index = ~0,
   };
 
   ip4_address_t intf_addr = {
@@ -1482,7 +1493,7 @@ session_test_rules (vlib_main_t * vm, unformat_input_t * input)
   app_ns = app_namespace_get_from_id (ns_id);
 
   attach_args.namespace_id = ns_id;
-  attach_args.api_client_index = dummy_server_api_index - 1;
+  attach_args.api_client_index = dummy_server_api_index;
   error = vnet_application_attach (&attach_args);
   SESSION_TEST ((error == 0), "server2 attached");
   server_index2 = attach_args.app_index;
@@ -1554,6 +1565,7 @@ session_test_rules (vlib_main_t * vm, unformat_input_t * input)
   vec_free (args.table_args.tag);
   vnet_app_detach_args_t detach_args = {
     .app_index = server_index,
+    .api_client_index = ~0,
   };
   vnet_application_detach (&detach_args);
 
@@ -1669,6 +1681,7 @@ session_test_proxy (vlib_main_t * vm, unformat_input_t * input)
 
   vnet_app_detach_args_t detach_args = {
     .app_index = server_index,
+    .api_client_index = ~0,
   };
   vnet_application_detach (&detach_args);