hsa: vcl test client option to close only client 37/35937/3
authorFlorin Coras <fcoras@cisco.com>
Tue, 12 Apr 2022 02:28:11 +0000 (19:28 -0700)
committerDamjan Marion <dmarion@me.com>
Tue, 12 Apr 2022 08:06:16 +0000 (08:06 +0000)
Type: improvement

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

src/plugins/hs_apps/vcl/vcl_test.h
src/plugins/hs_apps/vcl/vcl_test_client.c

index 4f67e03..d51e204 100644 (file)
@@ -80,6 +80,7 @@ typedef enum
   VCL_TEST_TYPE_UNI,
   VCL_TEST_TYPE_BI,
   VCL_TEST_TYPE_EXIT,
+  VCL_TEST_TYPE_EXIT_CLIENT,
 } vcl_test_t;
 
 typedef enum
@@ -201,7 +202,7 @@ static inline void
 vcl_test_cfg_init (vcl_test_cfg_t * cfg)
 {
   cfg->magic = VCL_TEST_CFG_CTRL_MAGIC;
-  cfg->test = VCL_TEST_TYPE_NONE;
+  cfg->test = VCL_TEST_TYPE_UNI;
   cfg->ctrl_handle = ~0;
   cfg->num_test_sessions = 1;
   cfg->num_test_sessions_perq = 1;
index 182de8f..730df55 100644 (file)
@@ -701,7 +701,7 @@ vtc_process_opts (vcl_test_client_main_t * vcm, int argc, char **argv)
   int c, v;
 
   opterr = 0;
-  while ((c = getopt (argc, argv, "chnp:w:XE:I:N:R:T:UBV6DLs:q:S")) != -1)
+  while ((c = getopt (argc, argv, "chnp:w:xXE:I:N:R:T:UBV6DLs:q:S")) != -1)
     switch (c)
       {
       case 'c':
@@ -759,6 +759,9 @@ vtc_process_opts (vcl_test_client_main_t * vcm, int argc, char **argv)
        vcm->post_test = VCL_TEST_TYPE_EXIT;
        break;
 
+      case 'x':
+       vcm->post_test = VCL_TEST_TYPE_NONE;
+
       case 'E':
        if (strlen (optarg) > ctrl->txbuf_size)
          {
@@ -947,6 +950,10 @@ vtc_ctrl_session_exit (void)
   vcl_test_session_t *ctrl = &vcm->ctrl_session;
   int verbose = ctrl->cfg.verbose;
 
+  /* Only clients exits, server can accept new connections */
+  if (vcm->post_test == VCL_TEST_TYPE_EXIT_CLIENT)
+    return;
+
   ctrl->cfg.test = VCL_TEST_TYPE_EXIT;
   vtinf ("(fd %d): Sending exit cfg to server...", ctrl->fd);
   if (verbose)
@@ -1027,6 +1034,7 @@ main (int argc, char **argv)
   int rv;
 
   vcm->n_workers = 1;
+  vcm->post_test = VCL_TEST_TYPE_EXIT_CLIENT;
   vcl_test_cfg_init (&ctrl->cfg);
   vcl_test_session_buf_alloc (ctrl);
   vtc_process_opts (vcm, argc, argv);
@@ -1082,6 +1090,7 @@ main (int argc, char **argv)
       switch (vcm->post_test)
        {
        case VCL_TEST_TYPE_EXIT:
+       case VCL_TEST_TYPE_EXIT_CLIENT:
          switch (ctrl->cfg.test)
            {
            case VCL_TEST_TYPE_EXIT: