void FileOperationMetaTest::testFileOperationSubNone( auto_ptr<FileOperationInterface> & oper, const fs::path & fileMeta, const fs::path & fileEntity, const string & tapeName) { string tape; char buffer[1024] = "hello,world!\n"; char bufferRead[sizeof(buffer)]; size_t size; struct stat stat; errno = 0; CPPUNIT_ASSERT( false == oper->GetStat(stat) ); CPPUNIT_ASSERT_ERRNO_( ENOENT == errno); errno = 0; CPPUNIT_ASSERT( false == oper->Read(0,bufferRead,sizeof(bufferRead),size) ); CPPUNIT_ASSERT_ERRNO_( EBADF == errno); errno = 0; CPPUNIT_ASSERT( false == oper->Write(0,buffer,sizeof(buffer),size) ); CPPUNIT_ASSERT_ERRNO_( EBADF == errno); CPPUNIT_ASSERT( ! fs::exists(fileMeta) ); CPPUNIT_ASSERT( ! fs::exists(fileEntity) ); errno = 0; CPPUNIT_ASSERT( false == oper->OpenFile(O_RDWR) ); CPPUNIT_ASSERT_ERRNO_( ENOENT == errno); CPPUNIT_ASSERT_MESSAGE( fileEntity.file_string(), true == oper->CreateFile(O_RDWR,0644,false) ); CPPUNIT_ASSERT( fs::exists(fileMeta) ); CPPUNIT_ASSERT( fs::exists(fileEntity) ); CPPUNIT_ASSERT( true == oper->Delete() ); CPPUNIT_ASSERT( ! fs::exists(fileMeta) ); CPPUNIT_ASSERT( ! fs::exists(fileEntity) ); CPPUNIT_ASSERT( true == oper->GetTape(tape) ); CPPUNIT_ASSERT( tape == tapeName ); }
void FileOperationMetaTest::testFileOperationSubCheckTruncate( auto_ptr<MetaManager> & meta, const fs::path & path, auto_ptr<FileOperationInterface> & oper, const fs::path & fileMeta, const fs::path & fileEntity, const string & tapeName) { string tape; auto_ptr<Inode> inode; struct stat stat; char buffer[1024] = "hello,world!\n"; CPPUNIT_ASSERT( fs::exists(fileMeta) ); CPPUNIT_ASSERT( fs::exists(fileEntity) ); CPPUNIT_ASSERT( true == oper->GetStat(stat) ); CPPUNIT_ASSERT( sizeof(buffer) == stat.st_size ); inode.reset(meta->GetInode(path)); CPPUNIT_ASSERT( true == inode->GetTape(tape) ); CPPUNIT_ASSERT( tape == tapeName ); CPPUNIT_ASSERT( true == oper->Delete() ); }
void FileOperationMetaTest::testFileOperationSubOpenDelete( auto_ptr<MetaManager> & meta, const fs::path & path, auto_ptr<FileOperationInterface> & oper, const fs::path & fileMeta, const fs::path & fileEntity, const string & tapeName) { string tape; auto_ptr<Inode> inode; char buffer[1024] = "hello,world!\n"; char bufferRead[sizeof(buffer)]; size_t size; struct stat stat; CPPUNIT_ASSERT( fs::exists(fileMeta) ); CPPUNIT_ASSERT( fs::exists(fileEntity) ); inode.reset(meta->GetInode(path)); CPPUNIT_ASSERT( true == inode->GetTape(tape) ); tape.clear(); CPPUNIT_ASSERT( true == oper->GetTape(tape) ); CPPUNIT_ASSERT( tape == tapeName ); tape.clear(); CPPUNIT_ASSERT( true == inode->GetTape(tape) ); CPPUNIT_ASSERT( tape == tapeName ); CPPUNIT_ASSERT( true == oper->GetStat(stat) ); errno = 0; CPPUNIT_ASSERT( false == oper->Read(0,bufferRead,sizeof(bufferRead),size) ); CPPUNIT_ASSERT_ERRNO_( EBADF == errno); errno = 0; CPPUNIT_ASSERT( false == oper->Write(0,buffer,sizeof(buffer),size) ); CPPUNIT_ASSERT_ERRNO_( EBADF == errno); errno = 0; CPPUNIT_ASSERT( false == oper->CreateFile(O_RDWR,0644,false) ); CPPUNIT_ASSERT_ERRNO_( EEXIST == errno); CPPUNIT_ASSERT( true == oper->GetStat(stat) ); errno = 0; CPPUNIT_ASSERT( false == oper->Read(0,bufferRead,sizeof(bufferRead),size) ); CPPUNIT_ASSERT_ERRNO_( EBADF == errno); errno = 0; CPPUNIT_ASSERT( false == oper->Write(0,buffer,sizeof(buffer),size) ); CPPUNIT_ASSERT_ERRNO_( EBADF == errno); CPPUNIT_ASSERT( true == oper->OpenFile(O_RDWR) ); CPPUNIT_ASSERT( true == oper->GetStat(stat) ); CPPUNIT_ASSERT( 0 == stat.st_size ); memset(bufferRead,0,sizeof(bufferRead)); CPPUNIT_ASSERT( true == oper->Read(0,bufferRead,sizeof(bufferRead),size) ); CPPUNIT_ASSERT( 0 == size ); tape.clear(); CPPUNIT_ASSERT( true == inode->GetTape(tape) ); CPPUNIT_ASSERT( tape == tapeName ); CPPUNIT_ASSERT( true == oper->Write(0,buffer,sizeof(buffer),size) ); memset(bufferRead,0,sizeof(bufferRead)); CPPUNIT_ASSERT( true == oper->Read(0,bufferRead,sizeof(bufferRead),size) ); CPPUNIT_ASSERT( sizeof(buffer) == size ); CPPUNIT_ASSERT( true == oper->GetStat(stat) ); CPPUNIT_ASSERT( sizeof(buffer) == stat.st_size ); tape.clear(); CPPUNIT_ASSERT( true == oper->GetTape(tape) ); CPPUNIT_ASSERT( tape == tapeName ); tape.clear(); CPPUNIT_ASSERT( true == inode->GetTape(tape) ); CPPUNIT_ASSERT( tape == tapeName ); CPPUNIT_ASSERT( true == oper->Delete() ); CPPUNIT_ASSERT( ! fs::exists(fileMeta) ); CPPUNIT_ASSERT( ! fs::exists(fileEntity) ); }