| Index: native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
|
| diff --git a/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc b/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
|
| index ffa4eeef9e7c197e6af0ee73dfd2149b8448235a..98fd431ea8fb1a437bbe925747eafae3586061c4 100644
|
| --- a/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
|
| +++ b/native_client_sdk/src/tests/nacl_io_test/kernel_proxy_test.cc
|
| @@ -542,18 +542,27 @@ TEST_F(KernelProxyTest, UseAfterClose) {
|
| namespace {
|
|
|
| StringMap_t g_string_map;
|
| +bool g_fs_ioctl_called;
|
| +int g_fs_dev;
|
|
|
| class KernelProxyMountTest_Filesystem : public MemFs {
|
| public:
|
| - using MemFs::Init;
|
| -
|
| virtual Error Init(const FsInitArgs& args) {
|
| + MemFs::Init(args);
|
| +
|
| g_string_map = args.string_map;
|
| + g_fs_dev = args.dev;
|
| +
|
| if (g_string_map.find("false") != g_string_map.end())
|
| return EINVAL;
|
| return 0;
|
| }
|
|
|
| + virtual Error Filesystem_VIoctl(int request, va_list arglist) {
|
| + g_fs_ioctl_called = true;
|
| + return 0;
|
| + }
|
| +
|
| friend class TypedFsFactory<KernelProxyMountTest_Filesystem>;
|
| };
|
|
|
| @@ -570,16 +579,33 @@ class KernelProxyMountTest : public ::testing::Test {
|
| KernelProxyMountTest() {}
|
|
|
| void SetUp() {
|
| + g_string_map.clear();
|
| + g_fs_dev = -1;
|
| + g_fs_ioctl_called = false;
|
| +
|
| ASSERT_EQ(0, ki_push_state_for_testing());
|
| ASSERT_EQ(0, ki_init(&kp_));
|
| }
|
|
|
| - void TearDown() { ki_uninit(); }
|
| + void TearDown() {
|
| + g_string_map.clear();
|
| + ki_uninit();
|
| + }
|
|
|
| private:
|
| KernelProxyMountTest_KernelProxy kp_;
|
| };
|
|
|
| +// Helper function for calling ki_ioctl without having
|
| +// to construct a va_list.
|
| +int ki_ioctl_wrapper(int fd, int request, ...) {
|
| + va_list ap;
|
| + va_start(ap, request);
|
| + int rtn = ki_ioctl(fd, request, ap);
|
| + va_end(ap);
|
| + return rtn;
|
| +}
|
| +
|
| } // namespace
|
|
|
| TEST_F(KernelProxyMountTest, MountInit) {
|
| @@ -594,6 +620,20 @@ TEST_F(KernelProxyMountTest, MountInit) {
|
| EXPECT_EQ("y", g_string_map["x"]);
|
| }
|
|
|
| +TEST_F(KernelProxyMountTest, MountAndIoctl) {
|
| + ASSERT_EQ(0, ki_mount("/", "/mnt1", "initfs", 0, ""));
|
| + ASSERT_NE(-1, g_fs_dev);
|
| +
|
| + char path[100];
|
| + snprintf(path, 100, "dev/fs/%d", g_fs_dev);
|
| +
|
| + int fd = ki_open(path, O_RDONLY);
|
| + ASSERT_GT(fd, -1);
|
| +
|
| + EXPECT_EQ(0, ki_ioctl_wrapper(fd, 0xdeadbeef));
|
| + EXPECT_EQ(true, g_fs_ioctl_called);
|
| +}
|
| +
|
| namespace {
|
|
|
| int g_MMapCount = 0;
|
|
|