diff options
author | Andreas Baumann <abaumann@yahoo.com> | 2012-05-01 20:06:15 +0200 |
---|---|---|
committer | Andreas Baumann <abaumann@yahoo.com> | 2012-05-01 20:06:15 +0200 |
commit | 48f270b4690f085561cc855008d67445f08422e4 (patch) | |
tree | 7f19099bf9322f038d0fb3c16c659dbd3fb43ee9 /tests | |
parent | 2cc6009fc5809eccd984aa69c6ae940a7a744cfb (diff) | |
download | pgfuse-48f270b4690f085561cc855008d67445f08422e4.tar.gz pgfuse-48f270b4690f085561cc855008d67445f08422e4.tar.bz2 |
added a test for sparse files
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile | 12 | ||||
-rw-r--r-- | tests/testbigfile.c | 62 |
2 files changed, 73 insertions, 1 deletions
diff --git a/tests/Makefile b/tests/Makefile index 69b061d..8b156e6 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -4,7 +4,7 @@ PG_CONNINFO = "" CFLAGS += -I.. -test: testfsync testpgsql testtypes +test: testfsync testpgsql testtypes testbigfile psql < clean.sql psql < ../schema.sql test -d mnt || mkdir mnt @@ -56,6 +56,9 @@ test: testfsync testpgsql testtypes -dd if=/dev/zero of=mnt/trunc bs=512 count=10 -truncate --size 513 mnt/trunc -ls -al mnt/trunc + # expect success, write a sparse big file + -./testbigfile + -ls -al mnt/testbigfile.data # END: unmount FUSE file system fusermount -u mnt @@ -63,6 +66,7 @@ clean: rm -f testfsync testfsync.o rm -f testpgsql testpgsql.o rm -f testtypes testtypes.o + rm -f testbigfile testbigfile.o testfsync: testfsync.o $(CC) -o testfsync testfsync.o @@ -81,3 +85,9 @@ testtypes: testtypes.o testtypes.o: testtypes.c $(CC) -c $(CFLAGS) -o testtypes.o testtypes.c + +testbigfile: testbigfile.o + $(CC) -o testbigfile testbigfile.o + +testbigfile.o: testbigfile.c + $(CC) -c $(CFLAGS) -o testbigfile.o testbigfile.c diff --git a/tests/testbigfile.c b/tests/testbigfile.c new file mode 100644 index 0000000..f17ff18 --- /dev/null +++ b/tests/testbigfile.c @@ -0,0 +1,62 @@ +/* + Copyright (C) 2012 Andreas Baumann <abaumann@yahoo.com> + + This program 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <sys/stat.h> +#include <fcntl.h> + +int main( void ) +{ + char buf[4096]; + int fd; + ssize_t res; + + memset( buf, 1, 4096 ); + + fd = open( "./mnt/testbigfile.data", O_WRONLY | O_CREAT, + S_IRUSR | S_IWUSR ); + if( fd < 0 ) { + perror( "Unable to open testfile" ); + return 1; + } + + res = write( fd, buf, 4096 ); + if( res != 4096 ) { + perror( "Error writing" ); + (void)close( fd ); + return 1; + } + + res = lseek( fd, 409600 /* 4294967296 */, SEEK_SET ); + if( res < 0 ) { + perror( "Unable to seek in testfile" ); + return 1; + } + + res = write( fd, buf, 4096 ); + if( res != 4096 ) { + perror( "Error writing" ); + (void)close( fd ); + return 1; + } + + (void)close( fd ); + + return 0; +} |