Test that the fuse device can be opened
This commit is contained in:
parent
a63db7d903
commit
2828806fb0
|
@ -80,9 +80,10 @@ func registerFilesystems(ctx context.Context, vfsObj *vfs.VirtualFilesystem, cre
|
||||||
}
|
}
|
||||||
if err := ttydev.Register(vfsObj); err != nil {
|
if err := ttydev.Register(vfsObj); err != nil {
|
||||||
return fmt.Errorf("registering ttydev: %w", err)
|
return fmt.Errorf("registering ttydev: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
if err := fuse.Register(vfsObj); err != nil {
|
if err := fuse.Register(vfsObj); err != nil {
|
||||||
return fmt.Errorf("registering /dev/fuse: %w", err)
|
return fmt.Errorf("registering fusedev: %w", err)
|
||||||
}
|
}
|
||||||
if err := tundev.Register(vfsObj); err != nil {
|
if err := tundev.Register(vfsObj); err != nil {
|
||||||
return fmt.Errorf("registering tundev: %v", err)
|
return fmt.Errorf("registering tundev: %v", err)
|
||||||
|
@ -106,7 +107,7 @@ func registerFilesystems(ctx context.Context, vfsObj *vfs.VirtualFilesystem, cre
|
||||||
return fmt.Errorf("creating tundev devtmpfs files: %v", err)
|
return fmt.Errorf("creating tundev devtmpfs files: %v", err)
|
||||||
}
|
}
|
||||||
if err := fuse.CreateDevtmpfsFile(ctx, a); err != nil {
|
if err := fuse.CreateDevtmpfsFile(ctx, a); err != nil {
|
||||||
return fmt.Errorf("creating devtmpfs fuse device file: %w", err)
|
return fmt.Errorf("creating fusedev devtmpfs files: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,34 +146,21 @@ TEST(DevTest, WriteDevFull) {
|
||||||
EXPECT_THAT(WriteFd(fd.get(), "a", 1), SyscallFailsWithErrno(ENOSPC));
|
EXPECT_THAT(WriteFd(fd.get(), "a", 1), SyscallFailsWithErrno(ENOSPC));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(DevTest, ReadDevFuse) {
|
|
||||||
SKIP_IF(IsRunningWithVFS1());
|
|
||||||
|
|
||||||
const FileDescriptor fd =
|
|
||||||
ASSERT_NO_ERRNO_AND_VALUE(Open("/dev/fuse", O_RDONLY));
|
|
||||||
std::vector<char> buf(1);
|
|
||||||
EXPECT_THAT(ReadFd(fd.get(), buf.data(), sizeof(buf)), SyscallFailsWithErrno(ENOSYS));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(DevTest, WriteDevFuse) {
|
|
||||||
SKIP_IF(IsRunningWithVFS1());
|
|
||||||
|
|
||||||
const FileDescriptor fd =
|
|
||||||
ASSERT_NO_ERRNO_AND_VALUE(Open("/dev/fuse", O_WRONLY));
|
|
||||||
const char* testStr = "test";
|
|
||||||
EXPECT_THAT(WriteFd(fd.get(), testStr, sizeof(testStr)), SyscallFailsWithErrno(ENOSYS));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(DevTest, TTYExists) {
|
TEST(DevTest, TTYExists) {
|
||||||
// Run test if running on VFS1 or on Linux.
|
|
||||||
SKIP_IF(!IsRunningWithVFS1() && IsRunningOnGvisor());
|
|
||||||
|
|
||||||
struct stat statbuf = {};
|
struct stat statbuf = {};
|
||||||
ASSERT_THAT(stat("/dev/tty", &statbuf), SyscallSucceeds());
|
ASSERT_THAT(stat("/dev/tty", &statbuf), SyscallSucceeds());
|
||||||
// Check that it's a character device with rw-rw-rw- permissions.
|
// Check that it's a character device with rw-rw-rw- permissions.
|
||||||
EXPECT_EQ(statbuf.st_mode, S_IFCHR | 0666);
|
EXPECT_EQ(statbuf.st_mode, S_IFCHR | 0666);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(DevTest, OpenDevFuse) {
|
||||||
|
// Note(gvisor.dev/issue/3076) This won't work in the sentry until the new
|
||||||
|
// device registration is complete.
|
||||||
|
SKIP_IF(IsRunningWithVFS1() || IsRunningOnGvisor());
|
||||||
|
|
||||||
|
ASSERT_NO_ERRNO_AND_VALUE(Open("/dev/fuse", O_RDONLY));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
} // namespace testing
|
} // namespace testing
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue