summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorMarcello Stanisci <stanisci.m@gmail.com>2019-04-10 17:03:24 +0200
committerMarcello Stanisci <stanisci.m@gmail.com>2019-04-10 17:07:14 +0200
commit5c496633092de5ebccd43e7040db2cc92b72c332 (patch)
tree3ee5337ad7a29bcaf50828cc30fd116ed41ef90b /src/lib
parentca718b9f1f76cd987d38572385d67b45114d4807 (diff)
downloadexchange-5c496633092de5ebccd43e7040db2cc92b72c332.tar.gz
exchange-5c496633092de5ebccd43e7040db2cc92b72c332.tar.bz2
exchange-5c496633092de5ebccd43e7040db2cc92b72c332.zip
Fixing twisted tests.
It has been observed that when a "twisted" test has "very little" commands in the stack, it uses to fail since the proxied service cannot be reached. This commit puts some delay before the first command gets run by the test interpreter; both in the form of a "blind" sleep, and with a more structured 'wget' loop.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/test_exchange_api_twisted.c2
-rw-r--r--src/lib/testing_api_cmd_sleep.c119
2 files changed, 118 insertions, 3 deletions
diff --git a/src/lib/test_exchange_api_twisted.c b/src/lib/test_exchange_api_twisted.c
index 7cc63c2c4..74d848206 100644
--- a/src/lib/test_exchange_api_twisted.c
+++ b/src/lib/test_exchange_api_twisted.c
@@ -144,8 +144,6 @@ static void
run (void *cls,
struct TALER_TESTING_Interpreter *is)
{
-
-
/**
* This batch aims to trigger the 409 Conflict
* response from a refresh-reveal operation.
diff --git a/src/lib/testing_api_cmd_sleep.c b/src/lib/testing_api_cmd_sleep.c
index 165d0aae4..188671bee 100644
--- a/src/lib/testing_api_cmd_sleep.c
+++ b/src/lib/testing_api_cmd_sleep.c
@@ -40,6 +40,25 @@ struct SleepState
unsigned int duration;
};
+/**
+ * No traits to offer, just provide a stub to be called when
+ * some CMDs iterates through the list of all the commands.
+ *
+ * @param cls closure.
+ * @param ret[out] result.
+ * @param trait name of the trait.
+ * @param index index number of the trait to return.
+ *
+ * @return #GNUNET_OK on success.
+ */
+static int
+sleep_traits (void *cls,
+ const void **ret,
+ const char *trait,
+ unsigned int index)
+{
+ return GNUNET_NO;
+}
/**
* Run the command.
@@ -97,8 +116,106 @@ TALER_TESTING_cmd_sleep (const char *label,
.cls = ss,
.label = label,
.run = &sleep_run,
- .cleanup = &sleep_cleanup
+ .cleanup = &sleep_cleanup,
+ .traits = &sleep_traits
};
return cmd;
}
+
+/**
+ * Cleanup the state from a "wait service" CMD.
+ *
+ * @param cls closure.
+ * @param cmd the command which is being cleaned up.
+ */
+static void
+wait_service_cleanup (void *cls,
+ const struct TALER_TESTING_Command *cmd)
+{
+ /* nothing to clean. */
+ return;
+}
+
+/**
+ * No traits to offer, just provide a stub to be called when
+ * some CMDs iterates through the list of all the commands.
+ *
+ * @param cls closure.
+ * @param ret[out] result.
+ * @param trait name of the trait.
+ * @param index index number of the trait to return.
+ *
+ * @return #GNUNET_OK on success.
+ */
+static int
+wait_service_traits (void *cls,
+ const void **ret,
+ const char *trait,
+ unsigned int index)
+{
+ return GNUNET_NO;
+}
+
+/**
+ * Run a "wait service" CMD.
+ *
+ * @param cls closure.
+ * @param cmd the command being run.
+ * @param is the interpreter state.
+ */
+static void
+wait_service_run (void *cls,
+ const struct TALER_TESTING_Command *cmd,
+ struct TALER_TESTING_Interpreter *is)
+{
+ unsigned int iter = 0;
+ const char *url = cmd->cls;
+ char *wget_cmd;
+
+ GNUNET_asprintf (&wget_cmd,
+ "wget -q -t 1 -T 1 %s\n",
+ url);
+ do
+ {
+ fprintf (stderr, ".");
+
+ if (10 == iter++)
+ {
+ TALER_LOG_ERROR ("Could not reach the proxied service\n");
+ TALER_TESTING_interpreter_fail (is);
+ GNUNET_free (wget_cmd);
+ return;
+ }
+ }
+ while (0 != system (wget_cmd));
+
+ GNUNET_free (wget_cmd);
+ TALER_TESTING_interpreter_next (is);
+}
+
+
+/**
+ * This CMD simply tries to connect via HTTP to the
+ * service addressed by @a url. It attemps 10 times
+ * before giving up and make the test fail.
+ *
+ * @param label label for the command.
+ * @param url complete URL to connect to.
+ */
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_wait_service (const char *label,
+ const char *url)
+{
+ struct TALER_TESTING_Command cmd = {
+ .label = label,
+ .run = wait_service_run,
+ .cleanup = wait_service_cleanup,
+ .traits = wait_service_traits,
+ .cls = (void *) url
+ };
+
+ return cmd;
+}
+
+/* end of testing_api_cmd_sleep.c */