X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_bio.c;h=c88b784263437c457dff2388c70664b5fca84631;hb=17516001adc7afeea0c32a226e0cd7090813241a;hp=06dcfacc8d29d3d9c384a36232a835de43f44a66;hpb=024450ec8ac7d00b5c7c830d34ee1843b6c3a753;p=oweals%2Fgnunet.git diff --git a/src/util/test_bio.c b/src/util/test_bio.c index 06dcfacc8..c88b78426 100644 --- a/src/util/test_bio.c +++ b/src/util/test_bio.c @@ -1,10 +1,10 @@ /* This file is part of GNUnet. - (C) 2009 Christian Grothoff (and other contributing authors) + Copyright (C) 2009 GNUnet e.V. GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 2, or (at your + by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /** @@ -28,10 +28,10 @@ #include "platform.h" #include "gnunet_util_lib.h" #define TESTSTRING "testString" -#define TESTNUMBER64 100000L +#define TESTNUMBER64 ((int64_t)100000L) static int -test_normal_rw (void) +test_normal_rw () { char *msg; int64_t testNum; @@ -41,29 +41,32 @@ test_normal_rw (void) struct GNUNET_BIO_ReadHandle *fileR; struct GNUNET_CONTAINER_MetaData *metaDataW; struct GNUNET_CONTAINER_MetaData *metaDataR; + metaDataW = GNUNET_CONTAINER_meta_data_create (); - metaDataR = GNUNET_CONTAINER_meta_data_create (); + metaDataR = NULL; GNUNET_CONTAINER_meta_data_add_publication_date (metaDataW); fileW = GNUNET_BIO_write_open (fileName); GNUNET_assert (NULL != fileW); GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_string (fileW, TESTSTRING)); GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_meta_data (fileW, metaDataW)); - GNUNET_assert (GNUNET_OK == - GNUNET_BIO_write_int64 (fileW, (int64_t) TESTNUMBER64)); + GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_int64 (fileW, TESTNUMBER64)); GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_close (fileW)); fileR = GNUNET_BIO_read_open (fileName); GNUNET_assert (NULL != fileR); + readResultString = NULL; GNUNET_assert (GNUNET_OK == GNUNET_BIO_read_string (fileR, "Read string error", &readResultString, 200)); + GNUNET_assert (NULL != readResultString); + GNUNET_assert (0 == strcmp (TESTSTRING, readResultString)); + GNUNET_free (readResultString); GNUNET_assert (GNUNET_OK == GNUNET_BIO_read_meta_data (fileR, "Read meta error", &metaDataR)); GNUNET_assert (GNUNET_YES == - GNUNET_CONTAINER_meta_data_test_equal (metaDataR, - metaDataW)); + GNUNET_CONTAINER_meta_data_test_equal (metaDataR, metaDataW)); GNUNET_assert (GNUNET_OK == GNUNET_BIO_read_int64 (fileR, &testNum)); GNUNET_BIO_read_close (fileR, &msg); GNUNET_CONTAINER_meta_data_destroy (metaDataW); @@ -101,7 +104,7 @@ test_nullstring_rw () } static int -test_emptystring_rw (void) +test_emptystring_rw () { char *msg; char *readResultString; @@ -116,9 +119,11 @@ test_emptystring_rw (void) fileR = GNUNET_BIO_read_open (fileName); GNUNET_assert (NULL != fileR); + readResultString = NULL; GNUNET_assert (GNUNET_OK == GNUNET_BIO_read_string (fileR, "Read string error", &readResultString, 200)); + GNUNET_free (readResultString); GNUNET_BIO_read_close (fileR, &msg); GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName)); GNUNET_free (fileName); @@ -126,7 +131,7 @@ test_emptystring_rw (void) } static int -test_bigstring_rw (void) +test_bigstring_rw () { char *msg; char *readResultString; @@ -141,10 +146,14 @@ test_bigstring_rw (void) fileR = GNUNET_BIO_read_open (fileName); GNUNET_assert (NULL != fileR); + readResultString = NULL; GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_read_string (fileR, "Read string error", &readResultString, 1)); + GNUNET_assert (NULL == readResultString); + msg = NULL; GNUNET_BIO_read_close (fileR, &msg); + GNUNET_free (msg); GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName)); GNUNET_free (fileName); return 0; @@ -155,92 +164,131 @@ test_bigmeta_rw () { char *msg; static char meta[1024 * 1024 * 10]; - memset (meta, 'b', sizeof (meta)); - meta[sizeof (meta) - 1] = '\0'; struct GNUNET_BIO_WriteHandle *fileW; struct GNUNET_BIO_ReadHandle *fileR; char *fileName = GNUNET_DISK_mktemp ("gnunet_bio"); - struct GNUNET_CONTAINER_MetaData *metaDataW; struct GNUNET_CONTAINER_MetaData *metaDataR; - metaDataW = GNUNET_CONTAINER_meta_data_create (); - metaDataR = GNUNET_CONTAINER_meta_data_create (); - GNUNET_CONTAINER_meta_data_add_publication_date (metaDataW); - GNUNET_assert (GNUNET_OK == - GNUNET_CONTAINER_meta_data_insert (metaDataW, - EXTRACTOR_COMMENT, meta)); + memset (meta, 'b', sizeof (meta)); + meta[sizeof (meta) - 1] = '\0'; fileW = GNUNET_BIO_write_open (fileName); GNUNET_assert (NULL != fileW); - GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_meta_data (fileW, metaDataW)); + GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_int32 (fileW, sizeof (meta))); + GNUNET_assert (GNUNET_OK == GNUNET_BIO_write (fileW, meta, sizeof (meta))); GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_close (fileW)); fileR = GNUNET_BIO_read_open (fileName); GNUNET_assert (NULL != fileR); + metaDataR = NULL; GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_read_meta_data (fileR, "Read meta error", &metaDataR)); + msg = NULL; GNUNET_BIO_read_close (fileR, &msg); + GNUNET_free (msg); GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName)); + GNUNET_assert (NULL == metaDataR); GNUNET_free (fileName); return 0; } static int -test_nullfile_rw (void) +test_directory_r () { +#if LINUX char *msg; - int64_t testNum; - char *readResultString; - static char fileNameNO[102401]; char readResult[200]; + struct GNUNET_BIO_ReadHandle *fileR; + + fileR = GNUNET_BIO_read_open ("/dev"); + GNUNET_assert (NULL != fileR); + GNUNET_assert (GNUNET_SYSERR == + GNUNET_BIO_read (fileR, "Read error", readResult, + sizeof (readResult))); + msg = NULL; + GNUNET_BIO_read_close (fileR, &msg); + GNUNET_free (msg); +#endif + return 0; +} + +static int +test_nullfile_rw () +{ + static char fileNameNO[102401]; + struct GNUNET_BIO_WriteHandle *fileWNO; + struct GNUNET_BIO_ReadHandle *fileRNO; + memset (fileNameNO, 'a', sizeof (fileNameNO)); fileNameNO[sizeof (fileNameNO) - 1] = '\0'; - const char *fileName = "/dev/full"; - const char *fileNameR = "/dev/null"; - struct GNUNET_BIO_WriteHandle *fileW, *fileWNO; - struct GNUNET_BIO_ReadHandle *fileR, *fileRNO; - struct GNUNET_CONTAINER_MetaData *metaDataW; - struct GNUNET_CONTAINER_MetaData *metaDataR; - metaDataW = GNUNET_CONTAINER_meta_data_create (); - metaDataR = GNUNET_CONTAINER_meta_data_create (); - GNUNET_CONTAINER_meta_data_add_publication_date (metaDataW); + GNUNET_log_skip (1, GNUNET_NO); fileWNO = GNUNET_BIO_write_open (fileNameNO); + GNUNET_log_skip (0, GNUNET_YES); GNUNET_assert (NULL == fileWNO); + GNUNET_log_skip (1, GNUNET_NO); fileRNO = GNUNET_BIO_read_open (fileNameNO); + GNUNET_log_skip (0, GNUNET_YES); GNUNET_assert (NULL == fileRNO); + return 0; +} - fileW = GNUNET_BIO_write_open (fileName); + +static int +test_fullfile_rw () +{ +#ifdef LINUX + /* /dev/full only seems to exist on Linux */ + char *msg; + int64_t testNum; + char *readResultString; + char readResult[200]; + struct GNUNET_BIO_WriteHandle *fileW; + struct GNUNET_BIO_ReadHandle *fileR; + struct GNUNET_CONTAINER_MetaData *metaDataW; + struct GNUNET_CONTAINER_MetaData *metaDataR; + + metaDataW = GNUNET_CONTAINER_meta_data_create (); + GNUNET_CONTAINER_meta_data_add_publication_date (metaDataW); + + fileW = GNUNET_BIO_write_open ("/dev/full"); GNUNET_assert (NULL != fileW); - GNUNET_assert (GNUNET_SYSERR == - GNUNET_BIO_write (fileW, TESTSTRING, 65537)); - GNUNET_assert (GNUNET_SYSERR == - GNUNET_BIO_write_string (fileW, TESTSTRING)); - GNUNET_assert (GNUNET_SYSERR == - GNUNET_BIO_write_meta_data (fileW, metaDataW)); + (void) GNUNET_BIO_write (fileW, TESTSTRING, strlen (TESTSTRING)); + (void) GNUNET_BIO_write_string (fileW, TESTSTRING); + (void) GNUNET_BIO_write_meta_data (fileW, metaDataW); GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_write_close (fileW)); - fileW = GNUNET_BIO_write_open (fileName); + GNUNET_CONTAINER_meta_data_destroy (metaDataW); + + fileW = GNUNET_BIO_write_open ("/dev/full"); GNUNET_assert (NULL != fileW); GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_write_close (fileW)); - fileR = GNUNET_BIO_read_open (fileNameR); + fileR = GNUNET_BIO_read_open ("/dev/null"); GNUNET_assert (NULL != fileR); GNUNET_assert (GNUNET_SYSERR == - GNUNET_BIO_read (fileR, "Read error", readResult, 65537)); + GNUNET_BIO_read (fileR, "Read error", readResult, + sizeof (readResult))); + readResultString = NULL; GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_read_string (fileR, "Read string error", &readResultString, 200)); + GNUNET_assert (NULL == readResultString); GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_read_int64 (fileR, &testNum)); + metaDataR = NULL; GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_read_meta_data (fileR, "Read meta error", &metaDataR)); + msg = NULL; GNUNET_BIO_read_close (fileR, &msg); + GNUNET_free (msg); + GNUNET_assert (NULL == metaDataR); +#endif return 0; } static int -test_fakestring_rw (void) +test_fakestring_rw () { char *msg; int32_t tmpInt = 2; @@ -259,14 +307,16 @@ test_fakestring_rw (void) GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_read_string (fileR, "Read string error", &readResult, 200)); + msg = NULL; GNUNET_BIO_read_close (fileR, &msg); + GNUNET_free (msg); GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName)); GNUNET_free (fileName); return 0; } static int -test_fakemeta_rw (void) +test_fakemeta_rw () { char *msg; int32_t tmpInt = 2; @@ -274,7 +324,6 @@ test_fakemeta_rw (void) struct GNUNET_BIO_ReadHandle *fileR; char *fileName = GNUNET_DISK_mktemp ("gnunet_bio"); struct GNUNET_CONTAINER_MetaData *metaDataR; - metaDataR = GNUNET_CONTAINER_meta_data_create (); fileW = GNUNET_BIO_write_open (fileName); GNUNET_assert (NULL != fileW); @@ -283,17 +332,21 @@ test_fakemeta_rw (void) fileR = GNUNET_BIO_read_open (fileName); GNUNET_assert (NULL != fileR); + metaDataR = NULL; GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_read_meta_data (fileR, "Read meta error", &metaDataR)); + GNUNET_assert (NULL == metaDataR); + msg = NULL; GNUNET_BIO_read_close (fileR, &msg); + GNUNET_free (msg); GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName)); GNUNET_free (fileName); return 0; } static int -test_fakebigmeta_rw (void) +test_fakebigmeta_rw () { char *msg; int32_t tmpInt = 1024 * 1024 * 10; @@ -301,7 +354,6 @@ test_fakebigmeta_rw (void) struct GNUNET_BIO_ReadHandle *fileR; char *fileName = GNUNET_DISK_mktemp ("gnunet_bio"); struct GNUNET_CONTAINER_MetaData *metaDataR; - metaDataR = GNUNET_CONTAINER_meta_data_create (); fileW = GNUNET_BIO_write_open (fileName); GNUNET_assert (NULL != fileW); @@ -310,17 +362,21 @@ test_fakebigmeta_rw (void) fileR = GNUNET_BIO_read_open (fileName); GNUNET_assert (NULL != fileR); + metaDataR = NULL; GNUNET_assert (GNUNET_SYSERR == GNUNET_BIO_read_meta_data (fileR, "Read meta error", &metaDataR)); + msg = NULL; GNUNET_BIO_read_close (fileR, &msg); + GNUNET_free (msg); GNUNET_assert (GNUNET_OK == GNUNET_DISK_directory_remove (fileName)); + GNUNET_assert (NULL == metaDataR); GNUNET_free (fileName); return 0; } static int -check_string_rw (void) +check_string_rw () { GNUNET_assert (0 == test_nullstring_rw ()); GNUNET_assert (0 == test_emptystring_rw ()); @@ -330,7 +386,7 @@ check_string_rw (void) } static int -check_metadata_rw (void) +check_metadata_rw () { GNUNET_assert (0 == test_fakebigmeta_rw ()); GNUNET_assert (0 == test_fakemeta_rw ()); @@ -339,18 +395,23 @@ check_metadata_rw (void) } static int -check_file_rw (void) +check_file_rw () { GNUNET_assert (0 == test_normal_rw ()); GNUNET_assert (0 == test_nullfile_rw ()); + GNUNET_assert (0 == test_fullfile_rw ()); + GNUNET_assert (0 == test_directory_r ()); return 0; } int main (int argc, char *argv[]) { + GNUNET_log_setup ("test-bio", "WARNING", NULL); GNUNET_assert (0 == check_file_rw ()); GNUNET_assert (0 == check_metadata_rw ()); GNUNET_assert (0 == check_string_rw ()); return 0; -} /* end of main */ +} + +/* end of test_bio.c */