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
34 main (int argc, char *argv[])
37 char *readResultString;
38 int64_t testNumber = (int64_t)TESTNUMBER64;
42 char meta[1024*1024*10];
44 for(i=0;i<102400;i++){
47 for(j=0;j<1024*1024*10;j++){
50 char* fileName = GNUNET_DISK_mktemp ("gnunet_bio");
51 char* fileName2 = GNUNET_DISK_mktemp ("gnunet_zwei_bio");
52 char* fileName3 = GNUNET_DISK_mktemp ("gnunet_drei_bio");
53 char* fileName4 = GNUNET_DISK_mktemp ("gnunet_vier_bio");
55 struct GNUNET_BIO_ReadHandle *fileR,*fileR2,*fileR3,*fileR4;
56 struct GNUNET_BIO_WriteHandle *fileW,*fileW2,*fileW3,*fileW4;
57 struct GNUNET_CONTAINER_MetaData *metaDataW;
58 struct GNUNET_CONTAINER_MetaData *metaDataR;
59 struct GNUNET_BIO_ReadHandle *fileRNO;
60 struct GNUNET_BIO_WriteHandle *fileWNO;
61 struct GNUNET_CONTAINER_MetaData *metaData;
62 struct GNUNET_CONTAINER_MetaData *metaDataNO;
64 metaData = GNUNET_CONTAINER_meta_data_create();
65 metaDataNO = GNUNET_CONTAINER_meta_data_create();
66 metaDataR = GNUNET_CONTAINER_meta_data_create();
67 metaDataW = GNUNET_CONTAINER_meta_data_create();
68 GNUNET_CONTAINER_meta_data_add_publication_date(metaDataW);
69 GNUNET_CONTAINER_meta_data_add_publication_date(metaData);
70 GNUNET_assert(GNUNET_OK == GNUNET_CONTAINER_meta_data_insert(metaData,EXTRACTOR_COMMENT,meta));
73 fileW = GNUNET_BIO_write_open(fileName);
74 GNUNET_assert(NULL != fileW);
75 GNUNET_assert(GNUNET_OK == GNUNET_BIO_write_string(fileW, TESTSTRING));
76 GNUNET_assert(GNUNET_OK == GNUNET_BIO_write_meta_data(fileW,metaDataW));
77 GNUNET_assert(GNUNET_OK == GNUNET_BIO_write_int64(fileW,testNumber));
78 GNUNET_assert(GNUNET_OK == GNUNET_BIO_write_close(fileW));
79 fileW2 = GNUNET_BIO_write_open(fileName2);
80 GNUNET_assert(NULL != fileW2);
81 GNUNET_assert(GNUNET_OK == GNUNET_BIO_write_string(fileW2,NULL));
82 fileWNO = GNUNET_BIO_write_open(file);
83 fileW3 = GNUNET_BIO_write_open(fileName3);
84 GNUNET_assert(NULL != fileW3);
85 GNUNET_assert(GNUNET_OK == GNUNET_BIO_write_meta_data(fileW3,metaData));
86 fileW4 = GNUNET_BIO_write_open(fileName4);
87 GNUNET_assert(NULL != fileW4);
88 GNUNET_assert(GNUNET_OK == GNUNET_BIO_write_string(fileW4,""));
89 GNUNET_assert(NULL != fileWNO);
90 GNUNET_assert(GNUNET_SYSERR == GNUNET_BIO_write_string(fileWNO, TESTSTRING));
91 GNUNET_assert(GNUNET_SYSERR == GNUNET_BIO_write_meta_data(fileWNO,metaDataW));
92 GNUNET_assert(GNUNET_SYSERR == GNUNET_BIO_write_close(fileWNO));
95 fileRNO = GNUNET_BIO_read_open(file);
96 GNUNET_assert(NULL != fileRNO);
97 GNUNET_assert(GNUNET_SYSERR == GNUNET_BIO_read_string(fileRNO, "Read string error", &readResultString, 200));
98 GNUNET_assert(GNUNET_SYSERR == GNUNET_BIO_read_int64(fileRNO, &testNum));
99 GNUNET_assert(GNUNET_SYSERR == GNUNET_BIO_read_meta_data(fileRNO,"Read meta error", &metaDataNO));
100 fileR = GNUNET_BIO_read_open(fileName);
101 GNUNET_assert(NULL != fileR);
102 GNUNET_assert(GNUNET_OK == GNUNET_BIO_read_string(fileR, "Read string error", &readResultString, 200));
103 GNUNET_assert(GNUNET_OK == GNUNET_BIO_read_meta_data(fileR, "Read meta error", &metaDataR));
104 GNUNET_assert(GNUNET_YES == GNUNET_CONTAINER_meta_data_test_equal(metaDataR,metaDataW));
105 GNUNET_assert(GNUNET_OK == GNUNET_BIO_read_int64(fileR, &testNum));
106 fileR2 = GNUNET_BIO_read_open(fileName2);
107 GNUNET_assert(NULL != fileR2);
108 GNUNET_assert(GNUNET_SYSERR == GNUNET_BIO_read_string(fileR2, "Read string error", &readResultString, 200));
109 fileR3 = GNUNET_BIO_read_open(fileName3);
110 GNUNET_assert(NULL != fileR3);
111 GNUNET_assert(GNUNET_SYSERR == GNUNET_BIO_read_meta_data(fileR3, "Read meta error", &metaDataR));
112 fileR4 = GNUNET_BIO_read_open(fileName4);
113 GNUNET_assert(NULL != fileR4);
114 GNUNET_assert(GNUNET_OK == GNUNET_BIO_read_string(fileR4, "Read string error", &readResultString, 200));
115 GNUNET_BIO_read_close(fileR,&msg);
116 GNUNET_BIO_read_close(fileR2,&msg);
117 GNUNET_BIO_read_close(fileR3,&msg);
118 GNUNET_BIO_read_close(fileR4,&msg);
119 GNUNET_CONTAINER_meta_data_destroy(metaDataW);
120 GNUNET_CONTAINER_meta_data_destroy(metaDataNO);
121 GNUNET_CONTAINER_meta_data_destroy(metaDataR);
122 GNUNET_CONTAINER_meta_data_destroy(metaData);
123 GNUNET_free(fileName);
124 GNUNET_free(fileName2);
125 GNUNET_free(fileName3);
126 GNUNET_free(fileName4);