Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1374)

Unified Diff: native_client_sdk/src/libraries/nacl_mounts_test/kernel_object_test.cc

Issue 12194030: Rename mount (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix whitespace Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: native_client_sdk/src/libraries/nacl_mounts_test/kernel_object_test.cc
diff --git a/native_client_sdk/src/libraries/nacl_mounts_test/kernel_object_test.cc b/native_client_sdk/src/libraries/nacl_mounts_test/kernel_object_test.cc
deleted file mode 100644
index d67243c6ba0738d61f37603a83bc5a7bd0cbe4da..0000000000000000000000000000000000000000
--- a/native_client_sdk/src/libraries/nacl_mounts_test/kernel_object_test.cc
+++ /dev/null
@@ -1,189 +0,0 @@
-/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include <errno.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <sys/stat.h>
-
-#include <map>
-#include <string>
-
-#include "nacl_mounts/kernel_handle.h"
-#include "nacl_mounts/kernel_object.h"
-#include "nacl_mounts/mount.h"
-#include "nacl_mounts/path.h"
-
-#include "gtest/gtest.h"
-
-namespace {
-
-class MountRefMock : public Mount {
- public:
- MountRefMock(int* mount_count, int* handle_count)
- : mount_count(mount_count),
- handle_count(handle_count) {
- (*mount_count)++;
- }
-
- ~MountRefMock() {
- (*mount_count)--;
- }
-
- public:
- MountNode* Open(const Path& path, int mode) { return NULL; }
- int Close(MountNode* node) { return 0; }
- int Unlink(const Path& path) { return 0; }
- int Mkdir(const Path& path, int permissions) { return 0; }
- int Rmdir(const Path& path) { return 0; }
- int Remove(const Path& path) { return 0; }
-
- public:
- int* mount_count;
- int* handle_count;
-};
-
-class KernelHandleRefMock : public KernelHandle {
- public:
- KernelHandleRefMock(Mount* mnt, MountNode* node, int flags)
- : KernelHandle(mnt, node, flags) {
- MountRefMock* mock_mount = static_cast<MountRefMock*>(mnt);
- (*mock_mount->handle_count)++;
- }
-
- ~KernelHandleRefMock() {
- MountRefMock* mock_mount = static_cast<MountRefMock*>(mount_);
- (*mock_mount->handle_count)--;
- }
-};
-
-class KernelObjectTest : public ::testing::Test {
- public:
- KernelObjectTest()
- : mount_count(0),
- handle_count(0) {
- proxy = new KernelObject;
- mnt = new MountRefMock(&mount_count, &handle_count);
- }
-
- ~KernelObjectTest() {
- // mnt is ref-counted, it doesn't need to be explicitly deleted.
- delete proxy;
- }
-
- KernelObject* proxy;
- MountRefMock* mnt;
- int mount_count;
- int handle_count;
-};
-
-} // namespace
-
-
-TEST_F(KernelObjectTest, Referencing) {
- KernelHandle* handle = new KernelHandleRefMock(mnt, NULL, 0);
- KernelHandle* handle2 = new KernelHandleRefMock(mnt, NULL, 0);
-
- // Objects should have one ref when we start
- EXPECT_EQ(1, mnt->RefCount());
- EXPECT_EQ(1, handle->RefCount());
-
- // Objects should have two refs when we get here
- int fd1 = proxy->AllocateFD(handle);
- EXPECT_EQ(2, mnt->RefCount());
- EXPECT_EQ(2, handle->RefCount());
-
- // If we "dup" the handle, we should bump the refs
- int fd2 = proxy->AllocateFD(handle);
- EXPECT_EQ(3, mnt->RefCount());
- EXPECT_EQ(3, handle->RefCount());
-
- // If use a new handle with the same values... bump the refs
- int fd3 = proxy->AllocateFD(handle2);
- EXPECT_EQ(4, mnt->RefCount());
- EXPECT_EQ(2, handle2->RefCount());
-
- // Handles are expectd to come out in order
- EXPECT_EQ(0, fd1);
- EXPECT_EQ(1, fd2);
- EXPECT_EQ(2, fd3);
-
- // We should find the handle by either fd
- EXPECT_EQ(handle, proxy->AcquireHandle(fd1));
- EXPECT_EQ(handle, proxy->AcquireHandle(fd2));
-
- // A non existant fd should fail
- EXPECT_EQ(NULL, proxy->AcquireHandle(-1));
- EXPECT_EQ(EBADF, errno);
- EXPECT_EQ(NULL, proxy->AcquireHandle(100));
- EXPECT_EQ(EBADF, errno);
-
- // Acquiring the handle, should have ref'd it
- EXPECT_EQ(4, mnt->RefCount());
- EXPECT_EQ(5, handle->RefCount());
-
- // Release the handle for each call to acquire
- proxy->ReleaseHandle(handle);
- proxy->ReleaseHandle(handle);
-
- // Release the handle for each time we constructed something
- proxy->ReleaseHandle(handle);
- proxy->ReleaseHandle(handle2);
- proxy->ReleaseMount(mnt);
-
- // We should now only have references used by the KernelProxy
- EXPECT_EQ(2, handle->RefCount());
- EXPECT_EQ(1, handle2->RefCount());
- EXPECT_EQ(3, mnt->RefCount());
-
- EXPECT_EQ(2, handle_count);
- EXPECT_EQ(1, mount_count);
-
- proxy->FreeFD(fd1);
- EXPECT_EQ(2, handle_count);
- EXPECT_EQ(1, mount_count);
-
- proxy->FreeFD(fd3);
- EXPECT_EQ(1, handle_count);
- EXPECT_EQ(1, mount_count);
-
- proxy->FreeFD(fd2);
- EXPECT_EQ(0, handle_count);
- EXPECT_EQ(0, mount_count);
-}
-
-TEST_F(KernelObjectTest, AssignFD) {
- EXPECT_EQ(0, handle_count);
-
- KernelHandle* handle = new KernelHandleRefMock(mnt, NULL, 0);
-
- EXPECT_EQ(1, handle_count);
- EXPECT_EQ(1, handle->RefCount());
-
- proxy->AssignFD(2, handle);
- EXPECT_EQ((KernelHandle*)NULL, proxy->AcquireHandle(0));
- EXPECT_EQ((KernelHandle*)NULL, proxy->AcquireHandle(1));
- EXPECT_EQ(handle, proxy->AcquireHandle(2));
- proxy->ReleaseHandle(handle);
-
- EXPECT_EQ(1, handle_count);
- EXPECT_EQ(2, handle->RefCount());
-
- proxy->AssignFD(0, handle);
- EXPECT_EQ(handle, proxy->AcquireHandle(0));
- EXPECT_EQ((KernelHandle*)NULL, proxy->AcquireHandle(1));
- EXPECT_EQ(handle, proxy->AcquireHandle(2));
- proxy->ReleaseHandle(handle);
- proxy->ReleaseHandle(handle);
-
- EXPECT_EQ(1, handle_count);
- EXPECT_EQ(3, handle->RefCount());
-
- proxy->FreeFD(0);
- proxy->FreeFD(2);
- proxy->ReleaseHandle(handle); // handle is constructed with a refcount of 1.
-
- EXPECT_EQ(0, handle_count);
-}

Powered by Google App Engine
This is Rietveld 408576698