2 This file is part of GNUnet.
3 (C) 2009 Christian Grothoff (and other contributing authors)
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 2, or (at your
8 option) any later version.
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 General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
22 * @file util/test_bio.c
23 * @brief testcase for the buffered IO module
29 #include "gnunet_util_lib.h"
30 #define TESTSTRING "testString"
31 #define TESTNUMBER64 100000L
38 char *readResultString;
39 char *fileName = GNUNET_DISK_mktemp ("gnunet_bio");
40 struct GNUNET_BIO_WriteHandle *fileW;
41 struct GNUNET_BIO_ReadHandle *fileR;
42 struct GNUNET_CONTAINER_MetaData *metaDataW;
43 struct GNUNET_CONTAINER_MetaData *metaDataR;
44 metaDataW = GNUNET_CONTAINER_meta_data_create ();
45 metaDataR = GNUNET_CONTAINER_meta_data_create ();
46 GNUNET_CONTAINER_meta_data_add_publication_date (metaDataW);
48 fileW = GNUNET_BIO_write_open (fileName);
49 GNUNET_assert (NULL != fileW);
50 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_string (fileW, TESTSTRING));
51 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_meta_data (fileW, metaDataW));
52 GNUNET_assert (GNUNET_OK ==
53 GNUNET_BIO_write_int64 (fileW, (int64_t) TESTNUMBER64));
54 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_close (fileW));
56 fileR = GNUNET_BIO_read_open (fileName);
57 GNUNET_assert (NULL != fileR);
58 GNUNET_assert (GNUNET_OK ==
59 GNUNET_BIO_read_string (fileR, "Read string error",
60 &readResultString, 200));
61 GNUNET_assert (GNUNET_OK ==
62 GNUNET_BIO_read_meta_data (fileR, "Read meta error",
64 GNUNET_assert (GNUNET_YES ==
65 GNUNET_CONTAINER_meta_data_test_equal (metaDataR,
67 GNUNET_assert (GNUNET_OK == GNUNET_BIO_read_int64 (fileR, &testNum));
68 GNUNET_BIO_read_close (fileR, &msg);
69 GNUNET_CONTAINER_meta_data_destroy (metaDataW);
70 GNUNET_CONTAINER_meta_data_destroy (metaDataR);
71 GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName));
72 GNUNET_free (fileName);
80 char *readResultString = (char *) "not null";
81 struct GNUNET_BIO_WriteHandle *fileW;
82 struct GNUNET_BIO_ReadHandle *fileR;
83 char *fileName = GNUNET_DISK_mktemp ("gnunet_bio");
85 fileW = GNUNET_BIO_write_open (fileName);
86 GNUNET_assert (NULL != fileW);
87 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_string (fileW, NULL));
88 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_close (fileW));
90 fileR = GNUNET_BIO_read_open (fileName);
91 GNUNET_assert (NULL != fileR);
92 GNUNET_assert (GNUNET_OK ==
93 GNUNET_BIO_read_string (fileR, "Read string error",
94 &readResultString, 200));
95 GNUNET_assert (NULL == readResultString);
96 GNUNET_BIO_read_close (fileR, &msg);
97 GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName));
98 GNUNET_free (fileName);
104 test_emptystring_rw ()
107 char *readResultString;
108 struct GNUNET_BIO_WriteHandle *fileW;
109 struct GNUNET_BIO_ReadHandle *fileR;
110 char *fileName = GNUNET_DISK_mktemp ("gnunet_bio");
112 fileW = GNUNET_BIO_write_open (fileName);
113 GNUNET_assert (NULL != fileW);
114 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_string (fileW, ""));
115 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_close (fileW));
117 fileR = GNUNET_BIO_read_open (fileName);
118 GNUNET_assert (NULL != fileR);
119 GNUNET_assert (GNUNET_OK ==
120 GNUNET_BIO_read_string (fileR, "Read string error",
121 &readResultString, 200));
122 GNUNET_BIO_read_close (fileR, &msg);
123 GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName));
124 GNUNET_free (fileName);
132 char *readResultString;
133 struct GNUNET_BIO_WriteHandle *fileW;
134 struct GNUNET_BIO_ReadHandle *fileR;
135 char *fileName = GNUNET_DISK_mktemp ("gnunet_bio");
137 fileW = GNUNET_BIO_write_open (fileName);
138 GNUNET_assert (NULL != fileW);
139 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_string (fileW, TESTSTRING));
140 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_close (fileW));
142 fileR = GNUNET_BIO_read_open (fileName);
143 GNUNET_assert (NULL != fileR);
144 GNUNET_assert (GNUNET_SYSERR ==
145 GNUNET_BIO_read_string (fileR, "Read string error",
146 &readResultString, 1));
147 GNUNET_BIO_read_close (fileR, &msg);
148 GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName));
149 GNUNET_free (fileName);
157 static char meta[1024 * 1024 * 10];
158 memset (meta, 'b', sizeof (meta));
159 meta[sizeof (meta) - 1] = '\0';
160 struct GNUNET_BIO_WriteHandle *fileW;
161 struct GNUNET_BIO_ReadHandle *fileR;
162 char *fileName = GNUNET_DISK_mktemp ("gnunet_bio");
163 struct GNUNET_CONTAINER_MetaData *metaDataW;
164 struct GNUNET_CONTAINER_MetaData *metaDataR;
165 metaDataW = GNUNET_CONTAINER_meta_data_create ();
166 metaDataR = GNUNET_CONTAINER_meta_data_create ();
167 GNUNET_CONTAINER_meta_data_add_publication_date (metaDataW);
168 GNUNET_assert (GNUNET_OK ==
169 GNUNET_CONTAINER_meta_data_insert (metaDataW,
170 EXTRACTOR_COMMENT, meta));
172 fileW = GNUNET_BIO_write_open (fileName);
173 GNUNET_assert (NULL != fileW);
174 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_meta_data (fileW, metaDataW));
175 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_close (fileW));
177 fileR = GNUNET_BIO_read_open (fileName);
178 GNUNET_assert (NULL != fileR);
179 GNUNET_assert (GNUNET_SYSERR ==
180 GNUNET_BIO_read_meta_data (fileR, "Read meta error",
182 GNUNET_BIO_read_close (fileR, &msg);
183 GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName));
184 GNUNET_free (fileName);
191 char readResult[200];
192 const char *fileName = "/dev";
193 struct GNUNET_BIO_ReadHandle *fileR;
194 fileR = GNUNET_BIO_read_open (fileName);
195 GNUNET_assert (NULL != fileR);
196 GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_read (fileR, "Read error", readResult, 65537));
197 GNUNET_BIO_read_close (fileR, &msg);
206 char *readResultString;
207 static char fileNameNO[102401];
208 char readResult[200];
209 memset (fileNameNO, 'a', sizeof (fileNameNO));
210 fileNameNO[sizeof (fileNameNO) - 1] = '\0';
211 const char *fileName = "/dev/full";
212 const char *fileNameR = "/dev/null";
213 struct GNUNET_BIO_WriteHandle *fileW, *fileWNO;
214 struct GNUNET_BIO_ReadHandle *fileR, *fileRNO;
215 struct GNUNET_CONTAINER_MetaData *metaDataW;
216 struct GNUNET_CONTAINER_MetaData *metaDataR;
217 metaDataW = GNUNET_CONTAINER_meta_data_create ();
218 metaDataR = GNUNET_CONTAINER_meta_data_create ();
219 GNUNET_CONTAINER_meta_data_add_publication_date (metaDataW);
221 fileWNO = GNUNET_BIO_write_open (fileNameNO);
222 GNUNET_assert (NULL == fileWNO);
224 fileRNO = GNUNET_BIO_read_open (fileNameNO);
225 GNUNET_assert (NULL == fileRNO);
227 fileW = GNUNET_BIO_write_open (fileName);
228 GNUNET_assert (NULL != fileW);
229 GNUNET_assert (GNUNET_SYSERR ==
230 GNUNET_BIO_write (fileW, TESTSTRING, 65537));
231 GNUNET_assert (GNUNET_SYSERR ==
232 GNUNET_BIO_write_string (fileW, TESTSTRING));
233 GNUNET_assert (GNUNET_SYSERR ==
234 GNUNET_BIO_write_meta_data (fileW, metaDataW));
235 GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_write_close (fileW));
236 fileW = GNUNET_BIO_write_open (fileName);
237 GNUNET_assert (NULL != fileW);
238 GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_write_close (fileW));
240 fileR = GNUNET_BIO_read_open (fileNameR);
241 GNUNET_assert (NULL != fileR);
242 GNUNET_assert (GNUNET_SYSERR ==
243 GNUNET_BIO_read (fileR, "Read error", readResult, 65537));
244 GNUNET_assert (GNUNET_SYSERR ==
245 GNUNET_BIO_read_string (fileR, "Read string error",
246 &readResultString, 200));
247 GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_read_int64 (fileR, &testNum));
248 GNUNET_assert (GNUNET_SYSERR ==
249 GNUNET_BIO_read_meta_data (fileR, "Read meta error",
251 GNUNET_BIO_read_close (fileR, &msg);
256 test_fakestring_rw ()
261 struct GNUNET_BIO_WriteHandle *fileW;
262 struct GNUNET_BIO_ReadHandle *fileR;
263 char *fileName = GNUNET_DISK_mktemp ("gnunet_bio");
265 fileW = GNUNET_BIO_write_open (fileName);
266 GNUNET_assert (NULL != fileW);
267 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_int32 (fileW, tmpInt));
268 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_close (fileW));
270 fileR = GNUNET_BIO_read_open (fileName);
271 GNUNET_assert (NULL != fileR);
272 GNUNET_assert (GNUNET_SYSERR ==
273 GNUNET_BIO_read_string (fileR, "Read string error",
275 GNUNET_BIO_read_close (fileR, &msg);
276 GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName));
277 GNUNET_free (fileName);
286 struct GNUNET_BIO_WriteHandle *fileW;
287 struct GNUNET_BIO_ReadHandle *fileR;
288 char *fileName = GNUNET_DISK_mktemp ("gnunet_bio");
289 struct GNUNET_CONTAINER_MetaData *metaDataR;
290 metaDataR = GNUNET_CONTAINER_meta_data_create ();
292 fileW = GNUNET_BIO_write_open (fileName);
293 GNUNET_assert (NULL != fileW);
294 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_int32 (fileW, tmpInt));
295 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_close (fileW));
297 fileR = GNUNET_BIO_read_open (fileName);
298 GNUNET_assert (NULL != fileR);
299 GNUNET_assert (GNUNET_SYSERR ==
300 GNUNET_BIO_read_meta_data (fileR, "Read meta error",
302 GNUNET_BIO_read_close (fileR, &msg);
303 GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName));
304 GNUNET_free (fileName);
309 test_fakebigmeta_rw ()
312 int32_t tmpInt = 1024 * 1024 * 10;
313 struct GNUNET_BIO_WriteHandle *fileW;
314 struct GNUNET_BIO_ReadHandle *fileR;
315 char *fileName = GNUNET_DISK_mktemp ("gnunet_bio");
316 struct GNUNET_CONTAINER_MetaData *metaDataR;
317 metaDataR = GNUNET_CONTAINER_meta_data_create ();
319 fileW = GNUNET_BIO_write_open (fileName);
320 GNUNET_assert (NULL != fileW);
321 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_int32 (fileW, tmpInt));
322 GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_close (fileW));
324 fileR = GNUNET_BIO_read_open (fileName);
325 GNUNET_assert (NULL != fileR);
326 GNUNET_assert (GNUNET_SYSERR ==
327 GNUNET_BIO_read_meta_data (fileR, "Read meta error",
329 GNUNET_BIO_read_close (fileR, &msg);
330 GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName));
331 GNUNET_free (fileName);
338 GNUNET_assert (0 == test_nullstring_rw ());
339 GNUNET_assert (0 == test_emptystring_rw ());
340 GNUNET_assert (0 == test_bigstring_rw ());
341 GNUNET_assert (0 == test_fakestring_rw ());
348 GNUNET_assert (0 == test_fakebigmeta_rw ());
349 GNUNET_assert (0 == test_fakemeta_rw ());
350 GNUNET_assert (0 == test_bigmeta_rw ());
357 GNUNET_assert (0 == test_normal_rw ());
358 GNUNET_assert (0 == test_nullfile_rw ());
359 GNUNET_assert (0 == test_directory_r());
364 main (int argc, char *argv[]){
365 GNUNET_assert (0 == check_file_rw());
366 GNUNET_assert (0 == check_metadata_rw());
367 GNUNET_assert (0 == check_string_rw());