gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-twister] 01/03: Adding option to modify upload objec


From: gnunet
Subject: [GNUnet-SVN] [taler-twister] 01/03: Adding option to modify upload objects with custom values.
Date: Thu, 17 May 2018 22:19:06 +0200

This is an automated email from the git hooks/post-receive script.

marcello pushed a commit to branch master
in repository twister.

commit e87c597a85f0bfbe031c83f1cb47279380ffa6be
Author: Marcello Stanisci <address@hidden>
AuthorDate: Thu May 17 10:06:47 2018 +0200

    Adding option to modify upload objects with custom values.
---
 src/include/taler_twister_service.h       | 16 +++++---
 src/include/taler_twister_testing_lib.h   | 15 ++++---
 src/test/test_twister.sh                  |  6 +--
 src/twister/taler-twister-service.c       | 52 +++++++++++++++++-------
 src/twister/taler-twister.c               | 47 +++++++++++++++++-----
 src/twister/testing_api_cmd_exec_client.c | 67 ++++++++++++++++++++++++++-----
 src/twister/twister.h                     | 12 +++---
 src/twister/twister_api.c                 | 41 ++++++++++++++++---
 8 files changed, 198 insertions(+), 58 deletions(-)

diff --git a/src/include/taler_twister_service.h 
b/src/include/taler_twister_service.h
index ae16847..2672865 100644
--- a/src/include/taler_twister_service.h
+++ b/src/include/taler_twister_service.h
@@ -89,12 +89,18 @@ struct TALER_TWISTER_Operation;
  * @return operation handle.
  */
 struct TALER_TWISTER_Operation *
-TALER_TWISTER_modify_path (struct TALER_TWISTER_Handle *h,
-                           const char *path,
-                           const char *value,
-                           GNUNET_SCHEDULER_TaskCallback cb,
-                           void *cb_cls);
+TALER_TWISTER_modify_path_dl (struct TALER_TWISTER_Handle *h,
+                              const char *path,
+                              const char *value,
+                              GNUNET_SCHEDULER_TaskCallback cb,
+                              void *cb_cls);
 
+struct TALER_TWISTER_Operation *
+TALER_TWISTER_modify_path_ul (struct TALER_TWISTER_Handle *h,
+                              const char *path,
+                              const char *value,
+                              GNUNET_SCHEDULER_TaskCallback cb,
+                              void *cb_cls);
 /**
  * Randomly flip a character into the JSON string
  * object pointed to by @a path.
diff --git a/src/include/taler_twister_testing_lib.h 
b/src/include/taler_twister_testing_lib.h
index 9f3d7e5..6605eac 100644
--- a/src/include/taler_twister_testing_lib.h
+++ b/src/include/taler_twister_testing_lib.h
@@ -76,12 +76,15 @@ TALER_TESTING_cmd_delete_object (const char *label,
  * @return the command
  */
 struct TALER_TESTING_Command
-TALER_TESTING_cmd_modify_object (const char *label,
-                                 const char *config_filename,
-                                 const char *path,
-                                 const char *value);
-
-
+TALER_TESTING_cmd_modify_object_dl (const char *label,
+                                    const char *config_filename,
+                                    const char *path,
+                                    const char *value);
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_modify_object_ul (const char *label,
+                                    const char *config_filename,
+                                    const char *path,
+                                    const char *value);
 /**
  * This command makes the next response randomly malformed
  * (by truncating it).
diff --git a/src/test/test_twister.sh b/src/test/test_twister.sh
index f97b5db..f092e4b 100755
--- a/src/test/test_twister.sh
+++ b/src/test/test_twister.sh
@@ -67,7 +67,7 @@ fi
 
 # set boolean field
 taler-twister -c ./test_twister.conf \
-  --modobject "hello" \
+  -m "hello" \
   --value "true"
 modobject_body=$(curl -s ${TWISTER_URL})
 
@@ -83,7 +83,7 @@ fi
 
 # set field
 taler-twister -c ./test_twister.conf \
-  --modobject "hello" \
+  -m "hello" \
   --value "fake"
 modobject_body=$(curl -s ${TWISTER_URL})
 
@@ -98,7 +98,7 @@ fi
 
 # check if cumulative mods work.
 taler-twister -c ./test_twister.conf \
-  --modobject "hello" -V "world" \
+  -m "hello" -V "world" \
   --deleteobject "when"
 cum_mods=$(curl -s ${TWISTER_URL})
 
diff --git a/src/twister/taler-twister-service.c 
b/src/twister/taler-twister-service.c
index 6532cd4..f9f9c6f 100644
--- a/src/twister/taler-twister-service.c
+++ b/src/twister/taler-twister-service.c
@@ -263,7 +263,8 @@ static char flip_path_ul[TWISTER_PATH_LENGTH] = {'\0'};
 /**
  * Will point to a JSON object to modify
  */
-static char modify_path[TWISTER_PATH_LENGTH] = {'\0'};
+static char modify_path_dl[TWISTER_PATH_LENGTH] = {'\0'};
+static char modify_path_ul[TWISTER_PATH_LENGTH] = {'\0'};
 
 /**
  * If true, will randomly truncate the request body
@@ -974,7 +975,8 @@ walk_response_object (const char *path,
  */
 static void
 modify_object (struct MHD_Connection *con,
-               struct HttpRequest *hr)
+               json_t *json,
+               char *path)
 {
 
   char *target;
@@ -983,10 +985,10 @@ modify_object (struct MHD_Connection *con,
   json_t *new_value;
   json_error_t error;
 
-  if (GNUNET_OK != walk_response_object (modify_path,
+  if (GNUNET_OK != walk_response_object (path,
                                          &parent,
                                          &target,
-                                         hr->json))
+                                         json))
     return;
 
   /* At this point, the parent and the target are pointed to. */
@@ -1013,8 +1015,9 @@ modify_object (struct MHD_Connection *con,
     goto perform_modbody;
   }
 
-  TALER_LOG_ERROR ("Unvalid new value given: %s\n", modify_value);
-  modify_path[0] = '\0';
+  TALER_LOG_ERROR ("Unvalid new value given: %s\n",
+                   modify_value);
+  path[0] = '\0';
   GNUNET_free (target);
   json_decref (new_value);
   return;
@@ -1033,7 +1036,7 @@ modify_object (struct MHD_Connection *con,
     if (-1 == ret_modify)
       TALER_LOG_WARNING ("Could not replace '%s'\n", target);
 
-    modify_path[0] = '\0';
+    path[0] = '\0';
     GNUNET_free (target);
     json_decref (new_value);
     return;
@@ -1509,12 +1512,14 @@ create_response (void *cls,
     delete_object (con, hr);
   }
 
-  if ('\0' != modify_path[0])
+  if ('\0' != modify_path_dl[0])
   {
     TALER_LOG_DEBUG ("Will modify path: %s to value %s\n",
-                     modify_path,
+                     modify_path_dl,
                      modify_value);
-    modify_object (con, hr);
+    modify_object (con,
+                   hr->json,
+                   modify_path_dl);
   }
 
 
@@ -2018,12 +2023,24 @@ handle_malform_upload (void *cls,
  * @param src received message
  */
 static void
-handle_modify_path (void *cls,
-                    const struct TWISTER_ModifyPath *src)
+handle_modify_path_dl (void *cls,
+                       const struct TWISTER_ModifyPath *src)
+{
+  struct GNUNET_SERVICE_Client *c = cls;
+
+  strcpy (modify_path_dl, src->path);
+  strcpy (modify_value, src->value);
+
+  send_acknowledgement (c);
+}
+
+static void
+handle_modify_path_ul (void *cls,
+                       const struct TWISTER_ModifyPath *src)
 {
   struct GNUNET_SERVICE_Client *c = cls;
 
-  strcpy (modify_path, src->path);
+  strcpy (modify_path_ul, src->path);
   strcpy (modify_value, src->value);
 
   send_acknowledgement (c);
@@ -2103,8 +2120,13 @@ GNUNET_SERVICE_MAIN
                          struct TWISTER_SetResponseCode,
                          NULL),
 
- GNUNET_MQ_hd_fixed_size (modify_path,
-                         TWISTER_MESSAGE_TYPE_MODIFY_PATH,
+ GNUNET_MQ_hd_fixed_size (modify_path_ul,
+                         TWISTER_MESSAGE_TYPE_MODIFY_PATH_UL,
+                         struct TWISTER_ModifyPath,
+                         NULL),
+
+ GNUNET_MQ_hd_fixed_size (modify_path_dl,
+                         TWISTER_MESSAGE_TYPE_MODIFY_PATH_DL,
                          struct TWISTER_ModifyPath,
                          NULL),
 
diff --git a/src/twister/taler-twister.c b/src/twister/taler-twister.c
index 6806f74..83ce929 100644
--- a/src/twister/taler-twister.c
+++ b/src/twister/taler-twister.c
@@ -70,12 +70,15 @@ static char *flip_path_dl;
 static char *flip_path_ul;
 
 /**
- * Path to the object to modify.
+ * Path to the download object to modify.
  */
-static char *modify_path;
+static char *modify_path_dl;
+
+
+static char *modify_path_ul;
 
 /**
- * New value for the object pointed by `modify_path`.
+ * New value for the object pointed by `modify_path_(ul|dl)`.
  */
 static char *modify_value;
 
@@ -204,7 +207,7 @@ run (void *cls,
           NULL)) )
     num_ops++;
 
-  if (NULL != modify_path)
+  if (NULL != modify_path_ul)
   {
     if (NULL == modify_value)
     {
@@ -213,9 +216,27 @@ run (void *cls,
       return;
     }
 
-    if (NULL != TALER_TWISTER_modify_path
+    if (NULL != TALER_TWISTER_modify_path_ul
         (tth,
-         modify_path,
+         modify_path_ul,
+         modify_value,
+         &handle_acknowledgement,
+         NULL))
+      num_ops++;
+  }
+
+  if (NULL != modify_path_dl)
+  {
+    if (NULL == modify_value)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  "New value not given, give -V|--value also\n");
+      return;
+    }
+
+    if (NULL != TALER_TWISTER_modify_path_dl
+        (tth,
+         modify_path_dl,
          modify_value,
          &handle_acknowledgement,
          NULL))
@@ -243,12 +264,20 @@ main (int argc,
   struct GNUNET_GETOPT_CommandLineOption options[] = {
 
     GNUNET_GETOPT_option_string
+      ('X',
+       "modify-ul",
+       "PATH",
+       gettext_noop
+         ("Modify upload object pointed by PATH, require --value.\n"),
+       &modify_path_ul),
+
+    GNUNET_GETOPT_option_string
       ('m',
-       "modobject",
+       "modify-dl",
        "PATH",
        gettext_noop
-         ("Modify object pointed by PATH, require --value.\n"),
-       &modify_path),
+         ("Modify download object pointed by PATH, require --value.\n"),
+       &modify_path_dl),
 
     GNUNET_GETOPT_option_string
       ('F',
diff --git a/src/twister/testing_api_cmd_exec_client.c 
b/src/twister/testing_api_cmd_exec_client.c
index 8f651a5..19687ab 100644
--- a/src/twister/testing_api_cmd_exec_client.c
+++ b/src/twister/testing_api_cmd_exec_client.c
@@ -390,9 +390,9 @@ modify_object_traits (void *cls,
  * FIXME: document.
  */
 static void
-modify_object_run (void *cls,
-                   const struct TALER_TESTING_Command *cmd,
-                   struct TALER_TESTING_Interpreter *is)
+modify_object_dl_run (void *cls,
+                      const struct TALER_TESTING_Command *cmd,
+                      struct TALER_TESTING_Interpreter *is)
 {
   struct ModifyObjectState *mos = cls;
 
@@ -402,7 +402,32 @@ modify_object_run (void *cls,
                                        "taler-twister",
                                        "taler-twister",
                                        "-c", mos->config_filename,
-                                       "--modobject", mos->path,
+                                       "-m", mos->path,
+                                       "--value", mos->value,
+                                       NULL);
+  if (NULL == mos->proc)
+  {
+    GNUNET_break (0);
+    TALER_TESTING_interpreter_fail (is);
+    return;
+  }
+  TALER_TESTING_wait_for_sigchld (is);
+}
+
+static void
+modify_object_ul_run (void *cls,
+                      const struct TALER_TESTING_Command *cmd,
+                      struct TALER_TESTING_Interpreter *is)
+{
+  struct ModifyObjectState *mos = cls;
+
+  mos->proc = GNUNET_OS_start_process (GNUNET_NO,
+                                       GNUNET_OS_INHERIT_STD_ALL,
+                                       NULL, NULL, NULL,
+                                       "taler-twister",
+                                       "taler-twister",
+                                       "-c", mos->config_filename,
+                                       "-M", mos->path,
                                        "--value", mos->value,
                                        NULL);
   if (NULL == mos->proc)
@@ -854,10 +879,10 @@ TALER_TESTING_cmd_malform_response (const char *label,
  * @return the command
  */
 struct TALER_TESTING_Command
-TALER_TESTING_cmd_modify_object (const char *label,
-                                 const char *config_filename,
-                                 const char *path,
-                                 const char *value)
+TALER_TESTING_cmd_modify_object_dl (const char *label,
+                                    const char *config_filename,
+                                    const char *path,
+                                    const char *value)
 {
   struct ModifyObjectState *mos;
   struct TALER_TESTING_Command cmd;
@@ -868,10 +893,34 @@ TALER_TESTING_cmd_modify_object (const char *label,
   mos->config_filename = config_filename;
 
   cmd.label = label;
-  cmd.run = &modify_object_run;
+  cmd.run = &modify_object_dl_run;
   cmd.cleanup = &modify_object_cleanup;
   cmd.traits = &modify_object_traits;
   cmd.cls = mos;
 
   return cmd;
 }
+
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_modify_object_ul (const char *label,
+                                    const char *config_filename,
+                                    const char *path,
+                                    const char *value)
+{
+  struct ModifyObjectState *mos;
+  struct TALER_TESTING_Command cmd;
+
+  mos = GNUNET_new (struct ModifyObjectState);
+  mos->path = path;
+  mos->value = value;
+  mos->config_filename = config_filename;
+
+  cmd.label = label;
+  cmd.run = &modify_object_ul_run;
+  cmd.cleanup = &modify_object_cleanup;
+  cmd.traits = &modify_object_traits;
+  cmd.cls = mos;
+
+  return cmd;
+}
+
diff --git a/src/twister/twister.h b/src/twister/twister.h
index 59ae659..b22101c 100644
--- a/src/twister/twister.h
+++ b/src/twister/twister.h
@@ -45,15 +45,17 @@
 
 #define TWISTER_MESSAGE_TYPE_DELETE_PATH 3
 
-#define TWISTER_MESSAGE_TYPE_MODIFY_PATH 4
+#define TWISTER_MESSAGE_TYPE_MODIFY_PATH_DL 4
 
-#define TWISTER_MESSAGE_TYPE_MALFORM 5
+#define TWISTER_MESSAGE_TYPE_MODIFY_PATH_UL 5
 
-#define TWISTER_MESSAGE_TYPE_MALFORM_UPLOAD 6
+#define TWISTER_MESSAGE_TYPE_MALFORM 6
 
-#define TWISTER_MESSAGE_TYPE_FLIP_PATH_DL 7
+#define TWISTER_MESSAGE_TYPE_MALFORM_UPLOAD 7
 
-#define TWISTER_MESSAGE_TYPE_FLIP_PATH_UL 8
+#define TWISTER_MESSAGE_TYPE_FLIP_PATH_DL 8
+
+#define TWISTER_MESSAGE_TYPE_FLIP_PATH_UL 9
 
 GNUNET_NETWORK_STRUCT_BEGIN
 struct TWISTER_Malform
diff --git a/src/twister/twister_api.c b/src/twister/twister_api.c
index 672e434..c85804a 100644
--- a/src/twister/twister_api.c
+++ b/src/twister/twister_api.c
@@ -399,11 +399,11 @@ TALER_TWISTER_delete_path
  * @return operation handle.
  */
 struct TALER_TWISTER_Operation *
-TALER_TWISTER_modify_path (struct TALER_TWISTER_Handle *h,
-                           const char *path,
-                           const char *value,
-                           GNUNET_SCHEDULER_TaskCallback cb,
-                           void *cb_cls)
+TALER_TWISTER_modify_path_dl (struct TALER_TWISTER_Handle *h,
+                              const char *path,
+                              const char *value,
+                              GNUNET_SCHEDULER_TaskCallback cb,
+                              void *cb_cls)
 {
   struct TALER_TWISTER_Operation *op;
   struct GNUNET_MQ_Envelope *env;
@@ -418,7 +418,36 @@ TALER_TWISTER_modify_path (struct TALER_TWISTER_Handle *h,
                                     op);
   /* Prepare *env*elope. */
   env = GNUNET_MQ_msg
-    (src, TWISTER_MESSAGE_TYPE_MODIFY_PATH);
+    (src, TWISTER_MESSAGE_TYPE_MODIFY_PATH_DL);
+  /* Put data into the envelope. */
+  strcpy (src->path, path);
+  strcpy (src->value, value);
+  /* Send message. */
+  GNUNET_MQ_send (h->mq, env);
+  return op;
+}
+
+struct TALER_TWISTER_Operation *
+TALER_TWISTER_modify_path_ul (struct TALER_TWISTER_Handle *h,
+                              const char *path,
+                              const char *value,
+                              GNUNET_SCHEDULER_TaskCallback cb,
+                              void *cb_cls)
+{
+  struct TALER_TWISTER_Operation *op;
+  struct GNUNET_MQ_Envelope *env;
+  struct TWISTER_ModifyPath *src;
+
+  op = GNUNET_new (struct TALER_TWISTER_Operation);
+  op->h = h;
+  op->cb = cb;
+  op->cb_cls = cb_cls;
+  GNUNET_CONTAINER_DLL_insert_tail (h->op_head,
+                                    h->op_tail,
+                                    op);
+  /* Prepare *env*elope. */
+  env = GNUNET_MQ_msg
+    (src, TWISTER_MESSAGE_TYPE_MODIFY_PATH_UL);
   /* Put data into the envelope. */
   strcpy (src->path, path);
   strcpy (src->value, value);

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]