RPS tests/profiler: Keep files for dumping internals open
[oweals/gnunet.git] / src / rps / rps-test_util.h
1 /*
2      This file is part of GNUnet.
3      Copyright (C)
4
5      GNUnet is free software: you can redistribute it and/or modify it
6      under the terms of the GNU Affero General Public License as published
7      by the Free Software Foundation, either version 3 of the License,
8      or (at your option) any later version.
9
10      GNUnet is distributed in the hope that it will be useful, but
11      WITHOUT ANY WARRANTY; without even the implied warranty of
12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13      Affero General Public License for more details.
14     
15      You should have received a copy of the GNU Affero General Public License
16      along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 /**
20  * @file rps/rps-test_util.h
21  * @brief Some utils faciliating the view into the internals for the sampler
22  *        needed for evaluation
23  * @author Julius Bünger
24  */
25
26 #ifndef RPS_TEST_UTIL_H
27 #define RPS_TEST_UTIL_H
28
29 #define TO_FILE 1
30
31
32 char *
33 auth_key_to_string (struct GNUNET_CRYPTO_AuthKey auth_key);
34
35 struct GNUNET_CRYPTO_AuthKey
36 string_to_auth_key (const char *str);
37
38 char *
39 create_file (const char *name);
40
41 /**
42  * @brief Get file handle
43  *
44  * If necessary, create file handle and store it with the other file handles.
45  *
46  * @param name Name of the file
47  *
48  * @return File handle
49  */
50 struct GNUNET_DISK_FileHandle *
51 get_file_handle (const char *name);
52
53 /**
54  * @brief Close all files that were opened with #get_file_handle
55  *
56  * @return Success of iterating over files
57  */
58 int
59 close_all_files ();
60
61 /**
62  * This function is used to facilitate writing important information to disk
63  */
64 #ifdef TO_FILE
65 #define to_file(file_name, ...) do {GNUNET_assert (NULL != file_name);\
66     char tmp_buf[512] = "";\
67     int size;\
68     size = GNUNET_snprintf(tmp_buf,sizeof(tmp_buf),__VA_ARGS__);\
69     if (0 > size)\
70       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,\
71            "Failed to create tmp_buf\n");\
72     else\
73       GNUNET_DISK_file_write (get_file_handle (file_name),\
74                               tmp_buf,\
75                               strnlen (tmp_buf, 512));\
76   } while (0);
77
78
79 #define to_file_w_len(file_name, len, ...) do {char tmp_buf[len];\
80     int size;\
81     memset (tmp_buf, 0, len);\
82     size = GNUNET_snprintf(tmp_buf,sizeof(tmp_buf),__VA_ARGS__);\
83     if (0 > size)\
84       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,\
85            "Failed to create tmp_buf\n");\
86     else\
87       GNUNET_DISK_file_write (get_file_handle (file_name),\
88                               tmp_buf,\
89                               strnlen (tmp_buf, 512));\
90   } while (0);
91 #else /* TO_FILE */
92 #  define to_file(file_name, ...)
93 #  define to_file_w_len(file_name, len, ...)
94 #endif /* TO_FILE */
95
96 char *
97 store_prefix_file_name (const struct GNUNET_PeerIdentity *peer,
98                         const char *prefix);
99
100 void
101 to_file_raw (const char *file_name, const char *buf, size_t size_buf);
102
103 void
104 to_file_raw_unaligned (const char *file_name,
105                        const char *buf,
106                        size_t size_buf,
107                        unsigned bits_needed);
108
109 #endif /* RPS_TEST_UTIL_H */
110 /* end of gnunet-service-rps.c */