summaryrefslogtreecommitdiff
path: root/src/bank-lib/taler-fakebank-run.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bank-lib/taler-fakebank-run.c')
-rw-r--r--src/bank-lib/taler-fakebank-run.c77
1 files changed, 64 insertions, 13 deletions
diff --git a/src/bank-lib/taler-fakebank-run.c b/src/bank-lib/taler-fakebank-run.c
index 7fa730469..c15145ecb 100644
--- a/src/bank-lib/taler-fakebank-run.c
+++ b/src/bank-lib/taler-fakebank-run.c
@@ -1,6 +1,6 @@
/*
This file is part of TALER
- Copyright (C) 2016, 2017 Taler Systems SA
+ Copyright (C) 2016-2022 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published
@@ -52,6 +52,10 @@ static struct TALER_FAKEBANK_Handle *fb;
*/
static struct GNUNET_SCHEDULER_Task *keepalive;
+/**
+ * Amount to credit an account with on /register.
+ */
+static struct TALER_Amount signup_bonus;
/**
* Stop the process.
@@ -101,8 +105,10 @@ run (void *cls,
const struct GNUNET_CONFIGURATION_Handle *cfg)
{
unsigned long long port = 8082;
- unsigned long long ram = 1024 * 1024 * 128; /* 128 M entries */
+ unsigned long long ram = 1024 * 128; /* 128 k entries */
char *currency_string;
+ char *hostname;
+ char *exchange_url;
(void) cls;
(void) args;
@@ -125,6 +131,23 @@ run (void *cls,
port);
}
if (GNUNET_OK !=
+ GNUNET_CONFIGURATION_get_value_string (cfg,
+ "bank",
+ "SUGGESTED_EXCHANGE",
+ &exchange_url))
+ {
+ /* no suggested exchange */
+ exchange_url = NULL;
+ }
+ if (GNUNET_OK !=
+ GNUNET_CONFIGURATION_get_value_string (cfg,
+ "bank",
+ "HOSTNAME",
+ &hostname))
+ {
+ hostname = GNUNET_strdup ("localhost");
+ }
+ if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_number (cfg,
"bank",
"RAM_LIMIT",
@@ -142,17 +165,37 @@ run (void *cls,
go |= TALER_MHD_GO_FORCE_CONNECTION_CLOSE;
TALER_MHD_setup (go);
}
- fb = TALER_FAKEBANK_start2 ((uint16_t) port,
+ if (GNUNET_OK !=
+ TALER_amount_is_valid (&signup_bonus))
+ {
+ GNUNET_assert (GNUNET_OK ==
+ TALER_amount_set_zero (currency_string,
+ &signup_bonus));
+ }
+ if (0 != strcmp (currency_string,
+ signup_bonus.currency))
+ {
+ fprintf (stderr,
+ "Signup bonus and main currency do not match\n");
+ ret = EXIT_INVALIDARGUMENT;
+ return;
+ }
+ fb = TALER_FAKEBANK_start3 (hostname,
+ (uint16_t) port,
+ exchange_url,
currency_string,
ram,
- num_threads);
+ num_threads,
+ &signup_bonus);
+ GNUNET_free (hostname);
+ GNUNET_free (exchange_url);
+ GNUNET_free (currency_string);
if (NULL == fb)
{
GNUNET_break (0);
ret = EXIT_FAILURE;
return;
}
- GNUNET_free (currency_string);
keepalive = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
&keepalive_task,
NULL);
@@ -183,16 +226,24 @@ main (int argc,
"NUM_THREADS",
"size of the thread pool",
&num_threads),
+ TALER_getopt_get_amount ('s',
+ "signup-bonus",
+ "AMOUNT",
+ "amount to credit newly registered account (created out of thin air)",
+ &signup_bonus),
GNUNET_GETOPT_OPTION_END
};
-
- if (GNUNET_OK !=
- GNUNET_PROGRAM_run (argc, argv,
- "taler-fakebank-run",
- "Runs the fakebank",
- options,
- &run,
- NULL))
+ enum GNUNET_GenericReturnValue iret;
+
+ iret = GNUNET_PROGRAM_run (argc, argv,
+ "taler-fakebank-run",
+ "Runs the fakebank",
+ options,
+ &run,
+ NULL);
+ if (GNUNET_SYSERR == iret)
return EXIT_INVALIDARGUMENT;
+ if (GNUNET_NO == iret)
+ return EXIT_SUCCESS;
return ret;
}