Line data Source code
1 : /*
2 : This file is part of
3 : (C) 2023 Taler Systems SA
4 :
5 : Challenger is free software; you can redistribute it and/or modify it under the
6 : terms of the GNU Lesser General Public License as published by the Free Software
7 : Foundation; either version 3, or (at your option) any later version.
8 :
9 : Challenger is distributed in the hope that it will be useful, but WITHOUT ANY
10 : WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11 : A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 :
13 : You should have received a copy of the GNU General Public License along with
14 : Challenger; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
15 : */
16 : /**
17 : * @file sync/test_sync_db.c
18 : * @brief testcase for sync postgres db plugin
19 : * @author Christian Grothoff
20 : */
21 : #include "platform.h"
22 : #include <gnunet/gnunet_util_lib.h>
23 : #include <taler/taler_util.h>
24 : #include "challenger_database_lib.h"
25 : #include "challenger-database/drop_tables.h"
26 : #include "challenger-database/create_tables.h"
27 : #include "challenger-database/preflight.h"
28 : #include "challenger-database/gc.h"
29 : #include "challenger_util.h"
30 :
31 :
32 : #define FAILIF(cond) \
33 : do { \
34 : if (! (cond)) { break;} \
35 : GNUNET_break (0); \
36 : goto drop; \
37 : } while (0)
38 :
39 : #define RND_BLK(ptr) \
40 : GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, ptr, sizeof (* \
41 : ptr))
42 :
43 : /**
44 : * Global return value for the test. Initially -1, set to 0 upon
45 : * completion. Other values indicate some kind of error.
46 : */
47 : static int result;
48 :
49 : /**
50 : * Handle to the database we are testing.
51 : */
52 : static struct CHALLENGERDB_PostgresContext *pg;
53 :
54 :
55 : /**
56 : * Main function that will be run by the scheduler.
57 : *
58 : * @param cls closure with config
59 : */
60 : static void
61 1 : run (void *cls)
62 : {
63 1 : struct GNUNET_CONFIGURATION_Handle *cfg = cls;
64 :
65 1 : if (NULL == (pg = CHALLENGERDB_connect (cfg,
66 : true)))
67 : {
68 0 : result = 77;
69 0 : return;
70 : }
71 1 : if (GNUNET_OK !=
72 1 : CHALLENGERDB_drop_tables (pg))
73 : {
74 1 : GNUNET_log (GNUNET_ERROR_TYPE_INFO,
75 : "Dropping tables failed\n");
76 : }
77 1 : if (GNUNET_OK !=
78 1 : CHALLENGERDB_create_tables (pg))
79 : {
80 0 : GNUNET_log (GNUNET_ERROR_TYPE_INFO,
81 : "Creating tables failed\n");
82 : }
83 1 : GNUNET_assert (GNUNET_OK ==
84 : CHALLENGERDB_preflight (pg));
85 : {
86 1 : struct GNUNET_TIME_Absolute ts = GNUNET_TIME_absolute_get ();
87 :
88 1 : FAILIF (0 >
89 : CHALLENGERDB_gc (pg,
90 : ts));
91 : }
92 1 : result = 0;
93 1 : drop:
94 1 : GNUNET_break (GNUNET_OK ==
95 : CHALLENGERDB_drop_tables (pg));
96 1 : CHALLENGERDB_disconnect (pg);
97 1 : pg = NULL;
98 : }
99 :
100 :
101 : int
102 1 : main (int argc,
103 : char *const argv[])
104 : {
105 : struct GNUNET_CONFIGURATION_Handle *cfg;
106 :
107 : (void) argc;
108 1 : result = EXIT_FAILURE;
109 1 : GNUNET_log_setup (argv[0],
110 : "DEBUG",
111 : NULL);
112 1 : cfg = GNUNET_CONFIGURATION_create (CHALLENGER_project_data ());
113 1 : if (GNUNET_OK !=
114 1 : GNUNET_CONFIGURATION_parse (cfg,
115 : "test_challenger_db_postgres.conf"))
116 : {
117 0 : GNUNET_break (0);
118 0 : return EXIT_NOTCONFIGURED;
119 : }
120 1 : GNUNET_SCHEDULER_run (&run, cfg);
121 1 : GNUNET_CONFIGURATION_destroy (cfg);
122 1 : return result;
123 : }
124 :
125 :
126 : /* end of test_challenger_db.c */
|