gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] 02/03: worked on truth upload


From: gnunet
Subject: [taler-anastasis] 02/03: worked on truth upload
Date: Tue, 24 Nov 2020 11:19:01 +0100

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

dennis-neufeld pushed a commit to branch master
in repository anastasis.

commit 56af39d5ccdd84d73840c984f1976029c2e45d49
Author: Dennis Neufeld <dennis.neufeld@students.bfh.ch>
AuthorDate: Tue Nov 24 10:04:34 2020 +0100

    worked on truth upload
---
 src/cli/test_anastasis_reducer_enter_secret.sh | 59 ++++++++++++++++-
 src/include/anastasis_redux.h                  |  4 +-
 src/lib/anastasis_api_backup_redux.c           | 87 +++++++++++++++++++++-----
 3 files changed, 130 insertions(+), 20 deletions(-)

diff --git a/src/cli/test_anastasis_reducer_enter_secret.sh 
b/src/cli/test_anastasis_reducer_enter_secret.sh
index 5165b31..61a7dab 100755
--- a/src/cli/test_anastasis_reducer_enter_secret.sh
+++ b/src/cli/test_anastasis_reducer_enter_secret.sh
@@ -21,11 +21,15 @@ function cleanup()
     do
         kill $n 2> /dev/null || true
     done
-    rm -f $SFILE
+    rm -f $TFILE $CONF_1 $CONF_2 $CONF_3 $CONF_4 
     wait
 }
 
 # Install cleanup handler (except for kill -9)
+CONF_1=`mktemp test_reducerXXXXXX_1.conf`
+CONF_2=`mktemp test_reducerXXXXXX_2.conf`
+CONF_3=`mktemp test_reducerXXXXXX_3.conf`
+CONF_4=`mktemp test_reducerXXXXXX_4.conf`
 SFILE=test_reducer_stateSESTATE
 TFILE=`mktemp test_reducer_stateXXXXXX`
 
@@ -36,6 +40,59 @@ echo -n "Testing for jq"
 jq -h > /dev/null || exit_skip "jq required"
 echo " FOUND"
 
+echo -n "Testing for anastasis-httpd"
+anastasis-httpd -h >/dev/null </dev/null || exit_skip " MISSING"
+echo " FOUND"
+
+# Name of the Postgres database we will use for the script.
+# Will be dropped, do NOT use anything that might be used
+# elsewhere
+TARGET_DB=anastasischeck
+
+# Configuration file will be edited, so we create one
+# from the template.
+cp test_anastasis_reducer.conf $CONF_1
+cp test_anastasis_reducer_1.conf $CONF_2
+cp test_anastasis_reducer_2.conf $CONF_3
+cp test_anastasis_reducer_3.conf $CONF_4
+
+# reset database
+dropdb $TARGET_DB >/dev/null 2>/dev/null || true
+createdb $TARGET_DB || exit_skip "Could not create database $TARGET_DB"
+
+# Launch services
+echo "Launching anastasis service"
+anastasis-httpd -c $CONF_1 2> anastasis-httpd_1.log &
+anastasis-httpd -c $CONF_2 2> anastasis-httpd_2.log &
+anastasis-httpd -c $CONF_3 2> anastasis-httpd_3.log &
+anastasis-httpd -c $CONF_4 2> anastasis-httpd_4.log &
+
+# Wait for anastasis service to be available
+for n in `seq 1 50`
+do
+    echo -n "."
+    sleep 0.1
+    OK=0
+    # anastasis_01
+    wget http://localhost:8086/ -o /dev/null -O /dev/null >/dev/null || 
continue
+    # anastasis_02
+    wget http://localhost:8087/ -o /dev/null -O /dev/null >/dev/null || 
continue
+    # anastasis_03
+    wget http://localhost:8088/ -o /dev/null -O /dev/null >/dev/null || 
continue
+    # anastasis_04
+    wget http://localhost:8089/ -o /dev/null -O /dev/null >/dev/null || 
continue
+    OK=1
+    break
+done
+
+if [ 1 != $OK ]
+then
+    exit_skip "Failed to launch anastasis services"
+fi
+
+echo " ANASTASIS SETUP DONE"
+echo " "
+echo " "
 echo " "
 echo "Beginning with actual reducer test"
 
diff --git a/src/include/anastasis_redux.h b/src/include/anastasis_redux.h
index 143c967..c7129b8 100644
--- a/src/include/anastasis_redux.h
+++ b/src/include/anastasis_redux.h
@@ -52,7 +52,7 @@ enum ANASTASIS_GenericState
   REDUX_STATE (POLICIES_REVIEWING)   \
   REDUX_STATE (SECRET_EDITING) \
   REDUX_STATE (POLICIES_PAYING) \
-  REDUX_STATE (FINISHED)
+  REDUX_STATE (BACKUP_FINISHED)
 
 #define GENERATE_BACKUP_ENUM(ENUM) ANASTASIS_BACKUP_STATE_ ## ENUM,
 
@@ -68,7 +68,7 @@ enum ANASTASIS_BackupState
   REDUX_STATE (CHALLENGE_SELECTING)  \
   REDUX_STATE (CHALLENGE_PAYING)   \
   REDUX_STATE (CHALLENGE_SOLVING)  \
-  REDUX_STATE (FINISHED)
+  REDUX_STATE (RECOVERY_FINISHED)
 
 #define GENERATE_RECOVERY_ENUM(ENUM) ANASTASIS_RECOVERY_STATE_ ## ENUM,
 
diff --git a/src/lib/anastasis_api_backup_redux.c 
b/src/lib/anastasis_api_backup_redux.c
index 37e0dae..e08736e 100644
--- a/src/lib/anastasis_api_backup_redux.c
+++ b/src/lib/anastasis_api_backup_redux.c
@@ -115,9 +115,14 @@ struct TruthUploadState
   struct ANASTASIS_TruthUpload *tuo;
 
   /**
-   * Closure for the payment callback.
+   * Action callback.
    */
-  void *tpc_cls;
+  ANASTASIS_ActionCallback cb;
+
+  /**
+   * Closure for action callback.
+   */
+  void *cb_cls;
 
   /**
    * Truth object.
@@ -1045,6 +1050,34 @@ done_policy_review (json_t *state,
 }
 
 
+/**
+ * Check if all uploads passed (status code 204).
+ *
+ * @param uploads json array representing uploads (truth, recovery document)
+ * @return true if all uploads passed, else false
+ */
+static bool
+check_uploads (json_t *uploads)
+{
+  GNUNET_assert (json_is_array (uploads));
+  size_t index;
+  json_t *upload;
+  bool pass = true;
+
+  json_array_foreach (uploads, index, upload)
+  {
+    int status = json_integer_value (json_object_get (upload,
+                                                      "status"));
+    if (status != 204)
+    {
+      pass = false;
+      break;
+    }
+  }
+  return pass;
+}
+
+
 /**
 * Upload information
 * caller MUST free 't' using ANASTASIS_truth_free()
@@ -1061,19 +1094,34 @@ truth_upload_cb (void *cls,
 
   if (NULL == t)
   {
-    GNUNET_break (0);
+    ANASTASIS_redux_fail (tus->cb,
+                          tus->cb_cls,
+                          TALER_EC_ANASTASIS_REDUCER_ACTION_INVALID, // FIXME: 
Error Code
+                          "enter_secret or pay");
     return;
   }
-  json_t *truth_upload = json_array_get (
-    json_object_get (tus->state,
-                     "truth_uploads"),
-    tus->index);
+  json_t *uploads = json_object_get (tus->state,
+                                     "truth_uploads");
+  json_t *truth_upload = json_array_get (uploads,
+                                         tus->index);
   GNUNET_assert (NULL != truth_upload);
   GNUNET_assert (0 ==
                  json_object_set (truth_upload,
                                   "status",
                                   json_integer ((json_int_t) 204)));
   tus->truth = t;
+
+
+  if (check_uploads (uploads))
+  {
+    set_state (tus->state,
+               ANASTASIS_backup_state_to_string (
+                 ANASTASIS_BACKUP_STATE_BACKUP_FINISHED));
+  }
+
+  tus->cb (tus->cb_cls,
+           ANASTASIS_EC_NONE,
+           tus->state);
 }
 
 
@@ -1107,9 +1155,19 @@ truth_payment_cb (void *cls,
                    json_object_set (truth_upload,
                                     "pay_url",
                                     json_string (taler_pay_url)));
+    set_state (tus->state,
+               ANASTASIS_backup_state_to_string (
+                 ANASTASIS_BACKUP_STATE_POLICIES_PAYING));
+    tus->cb (tus->cb_cls,
+             ANASTASIS_EC_NONE,
+             tus->state);
+    return;
   }
+  ANASTASIS_redux_fail (tus->cb,
+                        tus->cb_cls,
+                        ec,
+                        "enter_secret or pay");
   // FIXME: Payment handling
-  return;
 }
 
 
@@ -1199,6 +1257,8 @@ enter_secret (json_t *state,
       tus->id_data = json_object_get (state,
                                       "identity_attributes");
       tus->index = truth_index;
+      tus->cb = cb;
+      tus->cb_cls = cb_cls;
 
       if (0 == strcmp ("question", tus->method))
       {
@@ -1233,20 +1293,13 @@ enter_secret (json_t *state,
                                          tus->truth_data,
                                          tus->truth_data_size,
                                          &truth_payment_cb,
-                                         tus->tpc_cls,
+                                         tus,
                                          &truth_upload_cb,
                                          tus);
     }
   }
 
   // try uploading recovery document
-  set_state (state,
-             ANASTASIS_backup_state_to_string (
-               ANASTASIS_BACKUP_STATE_POLICIES_PAYING));
-
-  cb (cb_cls,
-      ANASTASIS_EC_NONE,
-      state);
   return NULL;
 }
 
@@ -1405,7 +1458,7 @@ ANASTASIS_backup_action_ (struct GNUNET_CURL_Context *ctx,
       &pay_policy
     },
     {
-      ANASTASIS_BACKUP_STATE_FINISHED,
+      ANASTASIS_BACKUP_STATE_BACKUP_FINISHED,
       "back",
       &back_finished
     },

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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