diff options
| -rw-r--r-- | netfs/unittests/testCore.cpp | 43 | 
1 files changed, 43 insertions, 0 deletions
| diff --git a/netfs/unittests/testCore.cpp b/netfs/unittests/testCore.cpp index 495c5a7..ba330cd 100644 --- a/netfs/unittests/testCore.cpp +++ b/netfs/unittests/testCore.cpp @@ -167,3 +167,46 @@ BOOST_AUTO_TEST_CASE ( clientInitialised )  BOOST_AUTO_TEST_SUITE_END(); + +BOOST_AUTO_TEST_CASE ( createAndDaemonRestart ) +{ +	MockDaemonHostPtr daemon(new MockDaemonHost()); +	FuseMockHost fuse; + +	struct statvfs s; +	BOOST_REQUIRE_EQUAL(0, fuse.fuse->statfs("/",  &s)); + +	const char * fileName = "/createMe"; +	BOOST_CHECKPOINT("Create a new file"); +	struct fuse_file_info fh; +	memset(&fh, 0, sizeof(fh)); +	fh.flags = O_WRONLY | O_CREAT | O_APPEND; +	BOOST_REQUIRE_EQUAL(0, fuse.fuse->create(fileName, 0100644, &fh)); +	BOOST_REQUIRE(fh.fh); + +	BOOST_CHECKPOINT("Fetch file attributes"); +	struct stat st; +	BOOST_REQUIRE_EQUAL(0, fuse.fuse->fgetattr(fileName, &st, &fh)); +	BOOST_REQUIRE_EQUAL(st.st_size, 0); +	BOOST_REQUIRE_EQUAL(st.st_uid, getuid()); +	BOOST_REQUIRE_EQUAL(st.st_gid, getgid()); + +	BOOST_CHECKPOINT("Write some data"); +	char someData[890]; +	BOOST_REQUIRE_EQUAL(sizeof(someData), fuse.fuse->write(fileName, someData, sizeof(someData), 0, &fh)); + +	BOOST_REQUIRE_EQUAL(0, fuse.fuse->fgetattr(fileName, &st, &fh)); +	BOOST_REQUIRE_EQUAL(st.st_size, sizeof(someData)); + +	BOOST_CHECKPOINT("Delete old daemon object"); +	daemon.reset(); +	BOOST_CHECKPOINT("Create new daemon object"); +	daemon = MockDaemonHostPtr(new MockDaemonHost()); + +	BOOST_CHECKPOINT("Fetch file attributes again"); +	BOOST_REQUIRE_EQUAL(0, fuse.fuse->fgetattr(fileName, &st, &fh)); + +	BOOST_CHECKPOINT("Close file"); +	BOOST_REQUIRE_EQUAL(0, fuse.fuse->release(fileName, &fh)); +} + | 
