diff options
Diffstat (limited to 'test/testmmap.c')
-rw-r--r-- | test/testmmap.c | 97 |
1 files changed, 30 insertions, 67 deletions
diff --git a/test/testmmap.c b/test/testmmap.c index b9cbce979..140d5c32b 100644 --- a/test/testmmap.c +++ b/test/testmmap.c @@ -35,30 +35,18 @@ static void not_implemented(abts_case *tc, void *data) #else -static apr_pool_t *ptest; -static char *thisfdata; /* read from the datafile */ +static char test_string[256]; /* read from the datafile */ static apr_mmap_t *themmap = NULL; static apr_file_t *thefile = NULL; static char *file1; static apr_finfo_t thisfinfo; static apr_size_t thisfsize; -static struct { - const char *filename; - apr_off_t offset; -} test_set[] = { - { "/data/mmap_datafile.txt", 0 }, - { "/data/mmap_large_datafile.txt", 65536 }, - { "/data/mmap_large_datafile.txt", 66650 }, /* not page aligned */ - { NULL, } -}; - static void create_filename(abts_case *tc, void *data) { - const char *filename = data; char *oldfileptr; - apr_filepath_get(&file1, 0, ptest); + apr_filepath_get(&file1, 0, p); #ifndef NETWARE #ifdef WIN32 ABTS_TRUE(tc, file1[1] == ':'); @@ -69,7 +57,7 @@ static void create_filename(abts_case *tc, void *data) ABTS_TRUE(tc, file1[strlen(file1) - 1] != '/'); oldfileptr = file1; - file1 = apr_pstrcat(ptest, file1, filename, NULL); + file1 = apr_pstrcat(p, file1,"/data/mmap_datafile.txt" ,NULL); ABTS_TRUE(tc, oldfileptr != file1); } @@ -79,73 +67,56 @@ static void test_file_close(abts_case *tc, void *data) rv = apr_file_close(thefile); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - thefile = NULL; } -static void test_file_open(abts_case *tc, void *data) +static void read_expected_contents(abts_case *tc, void *data) { apr_status_t rv; + apr_size_t nbytes = sizeof(test_string) - 1; - rv = apr_file_open(&thefile, file1, APR_FOPEN_READ, - APR_UREAD | APR_GREAD, ptest); + rv = apr_file_read(thefile, test_string, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - ABTS_PTR_NOTNULL(tc, thefile); + test_string[nbytes] = '\0'; + thisfsize = strlen(test_string); } - -static void test_get_filesize(abts_case *tc, void *data) + +static void test_file_open(abts_case *tc, void *data) { apr_status_t rv; - rv = apr_file_info_get(&thisfinfo, APR_FINFO_NORM, thefile); + rv = apr_file_open(&thefile, file1, APR_FOPEN_READ, APR_UREAD | APR_GREAD, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - - thisfsize = thisfinfo.size; - thisfdata = apr_palloc(ptest, thisfsize + 1); - ABTS_PTR_NOTNULL(tc, thisfdata); + ABTS_PTR_NOTNULL(tc, thefile); } - -static void read_expected_contents(abts_case *tc, void *data) + +static void test_get_filesize(abts_case *tc, void *data) { - apr_off_t *offset = data; - apr_size_t nbytes = 0; apr_status_t rv; - rv = apr_file_read_full(thefile, thisfdata, thisfsize, &nbytes); + rv = apr_file_info_get(&thisfinfo, APR_FINFO_NORM, thefile); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - ABTS_ASSERT(tc, "File size mismatch", nbytes == thisfsize); - thisfdata[nbytes] = '\0'; - ABTS_ASSERT(tc, "File content size mismatch", - strlen(thisfdata) == thisfsize); - ABTS_ASSERT(tc, "File size too small", - (apr_size_t)*offset < thisfsize); - - /* From now, pretend that the file data and size don't include the - * offset, this avoids adding/substrating it to thisfdata/thisfsize - * all over the place in the next tests. - */ - thisfdata += *offset; - thisfsize -= *offset; + ABTS_ASSERT(tc, "File size mismatch", thisfsize == thisfinfo.size); } static void test_mmap_create(abts_case *tc, void *data) { - apr_off_t *offset = data; apr_status_t rv; - rv = apr_mmap_create(&themmap, thefile, *offset, thisfsize, - APR_MMAP_READ, ptest); + rv = apr_mmap_create(&themmap, thefile, 0, (apr_size_t) thisfinfo.size, + APR_MMAP_READ, p); ABTS_PTR_NOTNULL(tc, themmap); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } static void test_mmap_contents(abts_case *tc, void *data) { + ABTS_PTR_NOTNULL(tc, themmap); ABTS_PTR_NOTNULL(tc, themmap->mm); ABTS_SIZE_EQUAL(tc, thisfsize, themmap->size); /* Must use nEquals since the string is not guaranteed to be NULL terminated */ - ABTS_STR_NEQUAL(tc, themmap->mm, thisfdata, thisfsize); + ABTS_STR_NEQUAL(tc, themmap->mm, test_string, thisfsize); } static void test_mmap_delete(abts_case *tc, void *data) @@ -155,7 +126,6 @@ static void test_mmap_delete(abts_case *tc, void *data) ABTS_PTR_NOTNULL(tc, themmap); rv = apr_mmap_delete(themmap); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - themmap = NULL; } static void test_mmap_offset(abts_case *tc, void *data) @@ -168,9 +138,8 @@ static void test_mmap_offset(abts_case *tc, void *data) ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* Must use nEquals since the string is not guaranteed to be NULL terminated */ - ABTS_STR_NEQUAL(tc, addr, thisfdata + 5, thisfsize - 5); + ABTS_STR_NEQUAL(tc, addr, test_string + 5, thisfsize-5); } - #endif abts_suite *testmmap(abts_suite *suite) @@ -178,21 +147,15 @@ abts_suite *testmmap(abts_suite *suite) suite = ADD_SUITE(suite) #if APR_HAS_MMAP - apr_size_t i; - apr_pool_create(&ptest, p); - for (i = 0; test_set[i].filename; ++i) { - abts_run_test(suite, create_filename, (void *)test_set[i].filename); - abts_run_test(suite, test_file_open, NULL); - abts_run_test(suite, test_get_filesize, NULL); - abts_run_test(suite, read_expected_contents, &test_set[i].offset); - abts_run_test(suite, test_mmap_create, &test_set[i].offset); - abts_run_test(suite, test_mmap_contents, &test_set[i].offset); - abts_run_test(suite, test_mmap_offset, &test_set[i].offset); - abts_run_test(suite, test_mmap_delete, NULL); - abts_run_test(suite, test_file_close, NULL); - apr_pool_clear(ptest); - } - apr_pool_destroy(ptest); + abts_run_test(suite, create_filename, NULL); + abts_run_test(suite, test_file_open, NULL); + abts_run_test(suite, read_expected_contents, NULL); + abts_run_test(suite, test_get_filesize, NULL); + abts_run_test(suite, test_mmap_create, NULL); + abts_run_test(suite, test_mmap_contents, NULL); + abts_run_test(suite, test_mmap_offset, NULL); + abts_run_test(suite, test_mmap_delete, NULL); + abts_run_test(suite, test_file_close, NULL); #else abts_run_test(suite, not_implemented, NULL); #endif |