gnunet-svn
[Top][All Lists]
Advanced

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

[taler-sync] 01/02: more work on testing logic


From: gnunet
Subject: [taler-sync] 01/02: more work on testing logic
Date: Fri, 29 Nov 2019 21:40:45 +0100

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

grothoff pushed a commit to branch master
in repository sync.

commit f39e8c62450a13705722563401410c7ebd7da0d8
Author: Christian Grothoff <address@hidden>
AuthorDate: Fri Nov 29 21:23:31 2019 +0100

    more work on testing logic
---
 src/include/sync_testing_lib.h                     |  20 +--
 src/lib/test_sync_api.c                            |   6 +-
 .../.local/share/taler/auditors/auditor.out        | Bin 42328 -> 42328 bytes
 src/lib/testing_api_cmd_backup_upload.c            | 158 ++++++++++++++++++---
 src/lib/testing_api_helpers.c                      |   6 +-
 src/lib/testing_api_trait_account_priv.c           |   2 +-
 src/lib/testing_api_trait_account_pub.c            |   2 +-
 src/lib/testing_api_trait_hash.c                   |   2 +-
 8 files changed, 162 insertions(+), 34 deletions(-)

diff --git a/src/include/sync_testing_lib.h b/src/include/sync_testing_lib.h
index 25594e1..79e7eec 100644
--- a/src/include/sync_testing_lib.h
+++ b/src/include/sync_testing_lib.h
@@ -63,8 +63,8 @@ SYNC_TESTING_get_trait_hash (const struct 
TALER_TESTING_Command *cmd,
  * @return #GNUNET_OK on success.
  */
 struct TALER_TESTING_Trait
-TALER_TESTING_make_trait_hash (unsigned int index,
-                               const struct GNUNET_HashCode *h);
+SYNC_TESTING_make_trait_hash (unsigned int index,
+                              const struct GNUNET_HashCode *h);
 
 
 /**
@@ -89,8 +89,8 @@ SYNC_TESTING_get_trait_account_pub (const struct 
TALER_TESTING_Command *cmd,
  * @return #GNUNET_OK on success.
  */
 struct TALER_TESTING_Trait
-TALER_TESTING_make_trait_account_pub (unsigned int index,
-                                      const struct SYNC_AccountPublicKeyP *h);
+SYNC_TESTING_make_trait_account_pub (unsigned int index,
+                                     const struct SYNC_AccountPublicKeyP *h);
 
 
 /**
@@ -116,9 +116,9 @@ SYNC_TESTING_get_trait_account_priv (const struct 
TALER_TESTING_Command *cmd,
  * @return #GNUNET_OK on success.
  */
 struct TALER_TESTING_Trait
-TALER_TESTING_make_trait_account_priv (unsigned int index,
-                                       const struct
-                                       SYNC_AccountPrivateKeyP *priv);
+SYNC_TESTING_make_trait_account_priv (unsigned int index,
+                                      const struct
+                                      SYNC_AccountPrivateKeyP *priv);
 
 
 /**
@@ -132,8 +132,8 @@ TALER_TESTING_make_trait_account_priv (unsigned int index,
  *         be started.
  */
 struct GNUNET_OS_Process *
-TALER_TESTING_run_sync (const char *config_filename,
-                        const char *sync_url);
+SYNC_TESTING_run_sync (const char *config_filename,
+                       const char *sync_url);
 
 
 /**
@@ -145,7 +145,7 @@ TALER_TESTING_run_sync (const char *config_filename,
  *         by the caller.
  */
 char *
-TALER_TESTING_prepare_sync (const char *config_filename);
+SYNC_TESTING_prepare_sync (const char *config_filename);
 
 
 /**
diff --git a/src/lib/test_sync_api.c b/src/lib/test_sync_api.c
index 3403127..9f18d39 100644
--- a/src/lib/test_sync_api.c
+++ b/src/lib/test_sync_api.c
@@ -249,6 +249,7 @@ run (void *cls,
                                    fakebank_url);
 }
 
+
 int
 main (int argc,
       char *const *argv)
@@ -271,7 +272,7 @@ main (int argc,
     return 77;
 
   if (NULL ==
-      (sync_url = TALER_TESTING_prepare_sync (CONFIG_FILE)))
+      (sync_url = SYNC_TESTING_prepare_sync (CONFIG_FILE)))
     return 77;
 
   TALER_TESTING_cleanup_files (CONFIG_FILE);
@@ -293,7 +294,7 @@ main (int argc,
       return 1;
 
     if (NULL == (syncd =
-                   TALER_TESTING_run_sync (CONFIG_FILE, sync_url)))
+                   SYNC_TESTING_run_sync (CONFIG_FILE, sync_url)))
       return 1;
 
     ret = TALER_TESTING_setup_with_exchange (&run,
@@ -319,4 +320,5 @@ main (int argc,
   return 0;
 }
 
+
 /* end of test_sync_api.c */
diff --git a/src/lib/test_sync_api_home/.local/share/taler/auditors/auditor.out 
b/src/lib/test_sync_api_home/.local/share/taler/auditors/auditor.out
index a15de52..5af8228 100644
Binary files 
a/src/lib/test_sync_api_home/.local/share/taler/auditors/auditor.out and 
b/src/lib/test_sync_api_home/.local/share/taler/auditors/auditor.out differ
diff --git a/src/lib/testing_api_cmd_backup_upload.c 
b/src/lib/testing_api_cmd_backup_upload.c
index 6880205..9809942 100644
--- a/src/lib/testing_api_cmd_backup_upload.c
+++ b/src/lib/testing_api_cmd_backup_upload.c
@@ -26,6 +26,7 @@
 #include "sync_testing_lib.h"
 #include <taler/taler_util.h>
 #include <taler/taler_testing_lib.h>
+#include "sync_testing_lib.h"
 
 /**
  * State for a "backup upload" CMD.
@@ -136,9 +137,56 @@ backup_upload_cb (void *cls,
     TALER_TESTING_interpreter_fail (bus->is);
     return;
   }
-
-  // FIXME: check ud, store result!
-
+  if (NULL != ud)
+  {
+    switch (ud->us)
+    {
+    case SYNC_US_SUCCESS:
+      if (0 != GNUNET_memcmp (&bus->curr_hash,
+                              ud->details.curr_backup_hash))
+      {
+        GNUNET_break (0);
+        TALER_TESTING_interpreter_fail (bus->is);
+        return;
+      }
+      break;
+    case SYNC_US_PAYMENT_REQUIRED:
+      bus->payment_order_id = GNUNET_strdup (ud->details.payment_request);
+      break;
+    case SYNC_US_CONFLICTING_BACKUP:
+      {
+        const struct TALER_TESTING_Command *ref;
+        const struct GNUNET_HashCode *h;
+
+        ref = TALER_TESTING_interpreter_lookup_command
+                (bus->is,
+                bus->prev_upload);
+        GNUNET_assert (NULL != ref);
+        GNUNET_assert (GNUNET_OK ==
+                       SYNC_TESTING_get_trait_hash (ref,
+                                                    
SYNC_TESTING_TRAIT_HASH_CURRENT,
+                                                    &h));
+        if (0 != GNUNET_memcmp (h,
+                                &ud->details.recovered_backup.
+                                existing_backup_hash))
+        {
+          GNUNET_break (0);
+          TALER_TESTING_interpreter_fail (bus->is);
+          return;
+        }
+      }
+    case SYNC_US_HTTP_ERROR:
+      break;
+    case SYNC_US_CLIENT_ERROR:
+      GNUNET_break (0);
+      TALER_TESTING_interpreter_fail (bus->is);
+      return;
+    case SYNC_US_SERVER_ERROR:
+      GNUNET_break (0);
+      TALER_TESTING_interpreter_fail (bus->is);
+      return;
+    }
+  }
   TALER_TESTING_interpreter_next (bus->is);
 }
 
@@ -161,7 +209,6 @@ backup_upload_run (void *cls,
   if (NULL != bus->prev_upload)
   {
     const struct TALER_TESTING_Command *ref;
-    const struct BackupUploadState *prev;
 
     ref = TALER_TESTING_interpreter_lookup_command
             (is,
@@ -172,19 +219,62 @@ backup_upload_run (void *cls,
       TALER_TESTING_interpreter_fail (bus->is);
       return;
     }
-    if (ref->run != &backup_upload_run)
     {
-      GNUNET_break (0);
-      TALER_TESTING_interpreter_fail (bus->is);
-      return;
+      const struct GNUNET_HashCode *h;
+
+      if (GNUNET_OK !=
+          SYNC_TESTING_get_trait_hash (ref,
+                                       SYNC_TESTING_TRAIT_HASH_CURRENT,
+                                       &h))
+      {
+        GNUNET_break (0);
+        TALER_TESTING_interpreter_fail (bus->is);
+        return;
+      }
+      bus->prev_hash = *h;
+    }
+    {
+      const struct SYNC_AccountPrivateKeyP *priv;
+
+      if (GNUNET_OK !=
+          SYNC_TESTING_get_trait_account_priv (ref,
+                                               0,
+                                               &priv))
+      {
+        GNUNET_break (0);
+        TALER_TESTING_interpreter_fail (bus->is);
+        return;
+      }
+      bus->sync_priv = *priv;
+    }
+    {
+      const struct SYNC_AccountPublicKeyP *pub;
+
+      if (GNUNET_OK !=
+          SYNC_TESTING_get_trait_account_pub (ref,
+                                              0,
+                                              &pub))
+      {
+        GNUNET_break (0);
+        TALER_TESTING_interpreter_fail (bus->is);
+        return;
+      }
+      bus->sync_pub = *pub;
     }
-    prev = ref->cls;
-    bus->sync_priv = prev->sync_priv;
-    bus->sync_pub = prev->sync_pub;
-    bus->prev_hash = prev->curr_hash;
     if (0 != (SYNC_TESTING_UO_REFERENCE_ORDER_ID & bus->uopt))
     {
-      bus->payment_order_req = prev->payment_order_id;
+      const char *order_id;
+
+      if (GNUNET_OK !=
+          TALER_TESTING_get_trait_order_id (ref,
+                                            0,
+                                            &order_id))
+      {
+        GNUNET_break (0);
+        TALER_TESTING_interpreter_fail (bus->is);
+        return;
+      }
+      bus->payment_order_req = order_id;
       if (NULL == bus->payment_order_req)
       {
         GNUNET_break (0);
@@ -255,6 +345,43 @@ backup_upload_cleanup (void *cls,
 }
 
 
+/**
+ * Offer internal data to other commands.
+ *
+ * @param cls closure
+ * @param ret[out] result (could be anything)
+ * @param trait name of the trait
+ * @param index index number of the object to extract.
+ * @return #GNUNET_OK on success
+ */
+static int
+backup_upload_traits (void *cls,
+                      const void **ret,
+                      const char *trait,
+                      unsigned int index)
+{
+  struct BackupUploadState *bus = cls;
+  struct TALER_TESTING_Trait traits[] = {
+    SYNC_TESTING_make_trait_hash (SYNC_TESTING_TRAIT_HASH_CURRENT,
+                                  &bus->curr_hash),
+    SYNC_TESTING_make_trait_hash (SYNC_TESTING_TRAIT_HASH_PREVIOUS,
+                                  &bus->prev_hash),
+    SYNC_TESTING_make_trait_account_pub (0,
+                                         &bus->sync_pub),
+    SYNC_TESTING_make_trait_account_priv (0,
+                                          &bus->sync_priv),
+    TALER_TESTING_make_trait_order_id (0,
+                                       bus->payment_order_id),
+    TALER_TESTING_trait_end ()
+  };
+
+  return TALER_TESTING_get_trait (traits,
+                                  ret,
+                                  trait,
+                                  index);
+}
+
+
 /**
  * Make the "backup upload" command.
  *
@@ -288,14 +415,13 @@ SYNC_TESTING_cmd_backup_upload (const char *label,
   bus->sync_url = sync_url;
   bus->backup = backup_data;
   bus->backup_size = backup_data_size;
-  // FIXME: traits!
-
   {
     struct TALER_TESTING_Command cmd = {
       .cls = bus,
       .label = label,
       .run = &backup_upload_run,
-      .cleanup = &backup_upload_cleanup
+      .cleanup = &backup_upload_cleanup,
+      .traits = &backup_upload_traits
     };
 
     return cmd;
diff --git a/src/lib/testing_api_helpers.c b/src/lib/testing_api_helpers.c
index a55b038..7b6e6ad 100644
--- a/src/lib/testing_api_helpers.c
+++ b/src/lib/testing_api_helpers.c
@@ -39,8 +39,8 @@
  *         be started.
  */
 struct GNUNET_OS_Process *
-TALER_TESTING_run_sync (const char *config_filename,
-                        const char *sync_url)
+SYNC_TESTING_run_sync (const char *config_filename,
+                       const char *sync_url)
 {
   struct GNUNET_OS_Process *sync_proc;
   unsigned int iter;
@@ -104,7 +104,7 @@ TALER_TESTING_run_sync (const char *config_filename,
  *         by the caller.
  */
 char *
-TALER_TESTING_prepare_sync (const char *config_filename)
+SYNC_TESTING_prepare_sync (const char *config_filename)
 {
   struct GNUNET_CONFIGURATION_Handle *cfg;
   unsigned long long port;
diff --git a/src/lib/testing_api_trait_account_priv.c 
b/src/lib/testing_api_trait_account_priv.c
index 213ca34..b8bfb5b 100644
--- a/src/lib/testing_api_trait_account_priv.c
+++ b/src/lib/testing_api_trait_account_priv.c
@@ -57,7 +57,7 @@ SYNC_TESTING_get_trait_account_priv
  * @return #GNUNET_OK on success.
  */
 struct TALER_TESTING_Trait
-TALER_TESTING_make_trait_account_priv
+SYNC_TESTING_make_trait_account_priv
   (unsigned int index,
   const struct SYNC_AccountPrivateKeyP *priv)
 {
diff --git a/src/lib/testing_api_trait_account_pub.c 
b/src/lib/testing_api_trait_account_pub.c
index f5bbdeb..9fecb18 100644
--- a/src/lib/testing_api_trait_account_pub.c
+++ b/src/lib/testing_api_trait_account_pub.c
@@ -57,7 +57,7 @@ SYNC_TESTING_get_trait_account_pub
  * @return #GNUNET_OK on success.
  */
 struct TALER_TESTING_Trait
-TALER_TESTING_make_trait_account_pub
+SYNC_TESTING_make_trait_account_pub
   (unsigned int index,
   const struct SYNC_AccountPublicKeyP *h)
 {
diff --git a/src/lib/testing_api_trait_hash.c b/src/lib/testing_api_trait_hash.c
index 810174d..10b10d8 100644
--- a/src/lib/testing_api_trait_hash.c
+++ b/src/lib/testing_api_trait_hash.c
@@ -57,7 +57,7 @@ SYNC_TESTING_get_trait_hash
  * @return #GNUNET_OK on success.
  */
 struct TALER_TESTING_Trait
-TALER_TESTING_make_trait_hash
+SYNC_TESTING_make_trait_hash
   (unsigned int index,
   const struct GNUNET_HashCode *h)
 {

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



reply via email to

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