fix memory leaks in test case
This commit is contained in:
parent
4cc86b52d2
commit
fc19601efc
@ -23,7 +23,7 @@
|
|||||||
;; drop requirements and this file into a directory in your `load-path',
|
;; drop requirements and this file into a directory in your `load-path',
|
||||||
;; and put these lines into your .emacs file.
|
;; and put these lines into your .emacs file.
|
||||||
|
|
||||||
;; (require 'uncrusfify-mode)
|
;; (require 'uncrustify-mode)
|
||||||
;; (add-hook 'c-mode-common-hook
|
;; (add-hook 'c-mode-common-hook
|
||||||
;; '(lambda ()
|
;; '(lambda ()
|
||||||
;; (uncrustify-mode 1)))
|
;; (uncrustify-mode 1)))
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
/*
|
/*
|
||||||
This file is part of TALER
|
This file is part of TALER
|
||||||
Copyright (C) 2016, 2017 GNUnet e.V.
|
Copyright (C) 2016, 2017, 2019 GNUnet e.V.
|
||||||
|
|
||||||
TALER is free software; you can redistribute it and/or modify
|
TALER is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as
|
it under the terms of the GNU General Public License as
|
||||||
published by the Free Software Foundation; either version 3,
|
published by the Free Software Foundation; either version 3,
|
||||||
or (at your option) any later version.
|
or (at your option) any later version.
|
||||||
|
|
||||||
TALER is distributed in the hope that it will be useful,
|
TALER is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty
|
but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||||
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||||
the GNU General Public License for more details.
|
the GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public
|
You should have received a copy of the GNU General Public
|
||||||
License along with TALER; see the file COPYING. If not, see
|
License along with TALER; see the file COPYING. If not, see
|
||||||
<http://www.gnu.org/licenses/>
|
<http://www.gnu.org/licenses/>
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* @file bank/test_bank_api.c
|
* @file bank/test_bank_api.c
|
||||||
* @brief testcase to test bank's HTTP API interface
|
* @brief testcase to test bank's HTTP API interface
|
||||||
@ -156,15 +156,20 @@ main (int argc,
|
|||||||
|
|
||||||
if (NULL == (dbconn = getenv ("TALER_EXCHANGEDB_POSTGRES_CONFIG")))
|
if (NULL == (dbconn = getenv ("TALER_EXCHANGEDB_POSTGRES_CONFIG")))
|
||||||
dbconn = defaultdb;
|
dbconn = defaultdb;
|
||||||
char *purgedb_cmd;
|
|
||||||
GNUNET_asprintf (&purgedb_cmd,
|
|
||||||
"taler-bank-manage -c bank.conf --with-db=%s django flush --no-input",
|
|
||||||
dbconn);
|
|
||||||
if (0 != system (purgedb_cmd))
|
|
||||||
{
|
{
|
||||||
fprintf (stderr,
|
char *purgedb_cmd;
|
||||||
"Could not purge database\n");
|
|
||||||
return 77;
|
GNUNET_asprintf (&purgedb_cmd,
|
||||||
|
"taler-bank-manage -c bank.conf --with-db=%s django flush --no-input",
|
||||||
|
dbconn);
|
||||||
|
if (0 != system (purgedb_cmd))
|
||||||
|
{
|
||||||
|
fprintf (stderr,
|
||||||
|
"Could not purge database\n");
|
||||||
|
GNUNET_free (purgedb_cmd);
|
||||||
|
return 77;
|
||||||
|
}
|
||||||
|
GNUNET_free (purgedb_cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
bankd = GNUNET_OS_start_process (GNUNET_NO,
|
bankd = GNUNET_OS_start_process (GNUNET_NO,
|
||||||
@ -182,7 +187,7 @@ main (int argc,
|
|||||||
{
|
{
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
"Failed to launch taler-bank-manage, skipping test\n");
|
"Failed to launch taler-bank-manage, skipping test\n");
|
||||||
return 77; /* report 'skip' */
|
return 77; /* report 'skip' */
|
||||||
}
|
}
|
||||||
/* give child time to start and bind against the socket */
|
/* give child time to start and bind against the socket */
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
|
@ -28,8 +28,15 @@
|
|||||||
#include "taler_testing_bank_lib.h"
|
#include "taler_testing_bank_lib.h"
|
||||||
#include "taler_fakebank_lib.h"
|
#include "taler_fakebank_lib.h"
|
||||||
|
|
||||||
/* Keep each bank account credentials at index:
|
|
||||||
* bank account number - 1 */
|
#define BANK_FAIL() \
|
||||||
|
do {GNUNET_break (0); return NULL; } while (0)
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Keep each bank account credentials at index:
|
||||||
|
* bank account number - 1
|
||||||
|
*/
|
||||||
struct TALER_BANK_AuthenticationData AUTHS[] = {
|
struct TALER_BANK_AuthenticationData AUTHS[] = {
|
||||||
|
|
||||||
/* Bank credentials */
|
/* Bank credentials */
|
||||||
@ -97,7 +104,7 @@ TALER_TESTING_has_in_name (const char *prog_name,
|
|||||||
size_t name_pos;
|
size_t name_pos;
|
||||||
size_t pos;
|
size_t pos;
|
||||||
|
|
||||||
if (!prog_name || !marker)
|
if (! prog_name || ! marker)
|
||||||
return GNUNET_NO;
|
return GNUNET_NO;
|
||||||
|
|
||||||
pos = 0;
|
pos = 0;
|
||||||
@ -110,7 +117,7 @@ TALER_TESTING_has_in_name (const char *prog_name,
|
|||||||
}
|
}
|
||||||
if (name_pos == pos)
|
if (name_pos == pos)
|
||||||
return GNUNET_YES;
|
return GNUNET_YES;
|
||||||
return strstr(prog_name + name_pos, marker) != NULL;
|
return strstr (prog_name + name_pos, marker) != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -137,7 +144,6 @@ TALER_TESTING_run_bank (const char *config_filename,
|
|||||||
char *serve_arg;
|
char *serve_arg;
|
||||||
struct GNUNET_CONFIGURATION_Handle *cfg;
|
struct GNUNET_CONFIGURATION_Handle *cfg;
|
||||||
|
|
||||||
|
|
||||||
cfg = GNUNET_CONFIGURATION_create ();
|
cfg = GNUNET_CONFIGURATION_create ();
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
GNUNET_CONFIGURATION_load (cfg,
|
GNUNET_CONFIGURATION_load (cfg,
|
||||||
@ -173,13 +179,15 @@ TALER_TESTING_run_bank (const char *config_filename,
|
|||||||
"serve");
|
"serve");
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
GNUNET_CONFIGURATION_destroy (cfg);
|
GNUNET_CONFIGURATION_destroy (cfg);
|
||||||
|
GNUNET_free (database);
|
||||||
exit (77);
|
exit (77);
|
||||||
}
|
}
|
||||||
|
GNUNET_CONFIGURATION_destroy (cfg);
|
||||||
|
|
||||||
serve_arg = "serve-http";
|
serve_arg = "serve-http";
|
||||||
if (0 != strcmp ("http", serve_cfg))
|
if (0 != strcmp ("http", serve_cfg))
|
||||||
serve_arg = "serve-uwsgi";
|
serve_arg = "serve-uwsgi";
|
||||||
|
GNUNET_free (serve_cfg);
|
||||||
bank_proc = GNUNET_OS_start_process
|
bank_proc = GNUNET_OS_start_process
|
||||||
(GNUNET_NO,
|
(GNUNET_NO,
|
||||||
GNUNET_OS_INHERIT_STD_ALL,
|
GNUNET_OS_INHERIT_STD_ALL,
|
||||||
@ -189,8 +197,11 @@ TALER_TESTING_run_bank (const char *config_filename,
|
|||||||
"-c", config_filename,
|
"-c", config_filename,
|
||||||
"--with-db", database,
|
"--with-db", database,
|
||||||
serve_arg, NULL);
|
serve_arg, NULL);
|
||||||
|
GNUNET_free (database);
|
||||||
if (NULL == bank_proc)
|
if (NULL == bank_proc)
|
||||||
|
{
|
||||||
BANK_FAIL ();
|
BANK_FAIL ();
|
||||||
|
}
|
||||||
|
|
||||||
GNUNET_asprintf (&wget_cmd,
|
GNUNET_asprintf (&wget_cmd,
|
||||||
"wget -q -t 1 -T 1 %s"
|
"wget -q -t 1 -T 1 %s"
|
||||||
@ -212,6 +223,7 @@ TALER_TESTING_run_bank (const char *config_filename,
|
|||||||
SIGTERM);
|
SIGTERM);
|
||||||
GNUNET_OS_process_wait (bank_proc);
|
GNUNET_OS_process_wait (bank_proc);
|
||||||
GNUNET_OS_process_destroy (bank_proc);
|
GNUNET_OS_process_destroy (bank_proc);
|
||||||
|
GNUNET_free (wget_cmd);
|
||||||
BANK_FAIL ();
|
BANK_FAIL ();
|
||||||
}
|
}
|
||||||
fprintf (stderr, ".");
|
fprintf (stderr, ".");
|
||||||
@ -219,6 +231,7 @@ TALER_TESTING_run_bank (const char *config_filename,
|
|||||||
iter++;
|
iter++;
|
||||||
}
|
}
|
||||||
while (0 != system (wget_cmd));
|
while (0 != system (wget_cmd));
|
||||||
|
GNUNET_free (wget_cmd);
|
||||||
fprintf (stderr, "\n");
|
fprintf (stderr, "\n");
|
||||||
|
|
||||||
return bank_proc;
|
return bank_proc;
|
||||||
@ -248,12 +261,17 @@ TALER_TESTING_prepare_bank (const char *config_filename)
|
|||||||
|
|
||||||
cfg = GNUNET_CONFIGURATION_create ();
|
cfg = GNUNET_CONFIGURATION_create ();
|
||||||
|
|
||||||
if (GNUNET_OK != GNUNET_CONFIGURATION_load
|
if (GNUNET_OK !=
|
||||||
(cfg, config_filename))
|
GNUNET_CONFIGURATION_load (cfg, config_filename))
|
||||||
|
{
|
||||||
|
GNUNET_CONFIGURATION_destroy (cfg);
|
||||||
BANK_FAIL ();
|
BANK_FAIL ();
|
||||||
|
}
|
||||||
if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string
|
if (GNUNET_OK !=
|
||||||
(cfg, "bank", "DATABASE", &database))
|
GNUNET_CONFIGURATION_get_value_string (cfg,
|
||||||
|
"bank",
|
||||||
|
"DATABASE",
|
||||||
|
&database))
|
||||||
{
|
{
|
||||||
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
|
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
|
||||||
"bank",
|
"bank",
|
||||||
@ -262,13 +280,17 @@ TALER_TESTING_prepare_bank (const char *config_filename)
|
|||||||
BANK_FAIL ();
|
BANK_FAIL ();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_number
|
if (GNUNET_OK !=
|
||||||
(cfg, "bank", "HTTP_PORT", &port))
|
GNUNET_CONFIGURATION_get_value_number (cfg,
|
||||||
|
"bank",
|
||||||
|
"HTTP_PORT",
|
||||||
|
&port))
|
||||||
{
|
{
|
||||||
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
|
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
|
||||||
"bank",
|
"bank",
|
||||||
"HTTP_PORT");
|
"HTTP_PORT");
|
||||||
GNUNET_CONFIGURATION_destroy (cfg);
|
GNUNET_CONFIGURATION_destroy (cfg);
|
||||||
|
GNUNET_free (database);
|
||||||
BANK_FAIL ();
|
BANK_FAIL ();
|
||||||
}
|
}
|
||||||
GNUNET_CONFIGURATION_destroy (cfg);
|
GNUNET_CONFIGURATION_destroy (cfg);
|
||||||
@ -298,8 +320,10 @@ TALER_TESTING_prepare_bank (const char *config_filename)
|
|||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||||
"Failed to flush the bank db.\n");
|
"Failed to flush the bank db.\n");
|
||||||
|
GNUNET_free (database);
|
||||||
BANK_FAIL ();
|
BANK_FAIL ();
|
||||||
}
|
}
|
||||||
|
GNUNET_free (database);
|
||||||
|
|
||||||
if (GNUNET_SYSERR ==
|
if (GNUNET_SYSERR ==
|
||||||
GNUNET_OS_process_wait_status (dbreset_proc,
|
GNUNET_OS_process_wait_status (dbreset_proc,
|
||||||
|
@ -48,9 +48,6 @@
|
|||||||
|
|
||||||
/* ********************* Helper functions ********************* */
|
/* ********************* Helper functions ********************* */
|
||||||
|
|
||||||
#define BANK_FAIL() \
|
|
||||||
do {GNUNET_break (0); return NULL; } while (0)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start the (Python) bank process. Assume the port
|
* Start the (Python) bank process. Assume the port
|
||||||
* is available and the database is clean. Use the "prepare
|
* is available and the database is clean. Use the "prepare
|
||||||
|
Loading…
Reference in New Issue
Block a user