session: add startup option to poll in main 39/30139/7
authorFlorin Coras <fcoras@cisco.com>
Wed, 25 Nov 2020 16:44:16 +0000 (08:44 -0800)
committerDamjan Marion <dmarion@me.com>
Wed, 25 Nov 2020 19:02:59 +0000 (19:02 +0000)
Type: improvement

Needed to support multi-worker tests

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I68d5590cece24a744513dc6c324dfb2861a38a94

src/plugins/quic/test/test_quic.py
src/vcl/test/test_vcl.py
src/vnet/session/session.c
src/vnet/session/session.h

index d2c2476..0a654cb 100644 (file)
@@ -110,7 +110,7 @@ class QUICTestCase(VppTestCase):
 class QUICEchoIntTestCase(QUICTestCase):
     """QUIC Echo Internal Test Case"""
     test_bytes = ' test-bytes'
-    extra_vpp_punt_config = ["session", "{", "enable", "}"]
+    extra_vpp_punt_config = ["session", "{", "enable", "poll-main", "}"]
 
     def setUp(self):
         super(QUICEchoIntTestCase, self).setUp()
@@ -177,7 +177,7 @@ class QUICEchoExtTestCase(QUICTestCase):
     server_fifo_size = "1M"
     client_fifo_size = "4M"
     extra_vpp_punt_config = ["session", "{",
-                             "enable", "evt_qs_memfd_seg",
+                             "enable", "poll-main", "evt_qs_memfd_seg",
                              "evt_qs_seg_size", "64M",
                              "event-queue-length", f"{evt_q_len}",
                              "preallocated-sessions", "1024",
index f6d6385..afb3848 100644 (file)
@@ -49,6 +49,7 @@ class VCLAppWorker(Worker):
 
 class VCLTestCase(VppTestCase):
     """ VCL Test Class """
+    extra_vpp_punt_config = ["session", "{", "poll-main", "}"]
 
     @classmethod
     def setUpClass(cls):
index 1f24805..b0a17bb 100644 (file)
@@ -1780,8 +1780,8 @@ session_node_enable_disable (u8 is_en)
                                          session_queue_process_node.index,
                                          SESSION_Q_PROCESS_STOP, 0);
          }
-
-       continue;
+       if (!session_main.poll_main)
+         continue;
       }
     vlib_node_set_state (this_vlib_main, session_queue_node.index,
                          state);
@@ -1818,6 +1818,7 @@ session_main_init (vlib_main_t * vm)
 
   smm->is_enabled = 0;
   smm->session_enable_asap = 0;
+  smm->poll_main = 0;
   smm->session_baseva = HIGH_SEGMENT_BASEVA;
 
 #if (HIGH_SEGMENT_BASEVA > (4ULL << 30))
@@ -1935,6 +1936,8 @@ session_config_fn (vlib_main_t * vm, unformat_input_t * input)
        ;
       else if (unformat (input, "use-app-socket-api"))
        appns_sapi_enable ();
+      else if (unformat (input, "poll-main"))
+       smm->poll_main = 1;
       else
        return clib_error_return (0, "unknown input `%U'",
                                  format_unformat_error, input);
index f6997fb..9b9cd29 100644 (file)
@@ -171,6 +171,9 @@ typedef struct session_main_
   /** Enable session manager at startup */
   u8 session_enable_asap;
 
+  /** Poll session node in main thread */
+  u8 poll_main;
+
   /** vpp fifo event queue configured length */
   u32 configured_event_queue_length;