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

Unified Diff: native_client_sdk/src/libraries/nacl_mounts_test/mount_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/mount_test.cc
diff --git a/native_client_sdk/src/libraries/nacl_mounts_test/mount_test.cc b/native_client_sdk/src/libraries/nacl_mounts_test/mount_test.cc
deleted file mode 100644
index 34c7ce6aa26bcd97f194b12165bc9a017ae96bac..0000000000000000000000000000000000000000
--- a/native_client_sdk/src/libraries/nacl_mounts_test/mount_test.cc
+++ /dev/null
@@ -1,227 +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 <string.h>
-#include <string>
-#include <sys/stat.h>
-
-#include "nacl_mounts/mount.h"
-#include "nacl_mounts/mount_dev.h"
-#include "nacl_mounts/mount_mem.h"
-#include "nacl_mounts/osdirent.h"
-
-#include "gtest/gtest.h"
-
-namespace {
-
-class MountMemMock : public MountMem {
- public:
- MountMemMock() {
- StringMap_t map;
- Init(1, map, NULL);
- };
-
- int num_nodes() {
- return (int) inode_pool_.size();
- }
-};
-
-class MountDevMock : public MountDev {
- public:
- MountDevMock() {
- StringMap_t map;
- Init(1, map, NULL);
- }
- int num_nodes() {
- return (int) inode_pool_.size();
- }
-};
-
-} // namespace
-
-
-#define NULL_NODE ((MountNode *) NULL)
-
-TEST(MountTest, Sanity) {
- MountMemMock* mnt = new MountMemMock();
- MountNode* file;
- MountNode* root;
-
- char buf1[1024];
-
- // A memory mount starts with one directory node: the root.
- EXPECT_EQ(1, mnt->num_nodes());
-
- // Fail to open non existant file
- EXPECT_EQ(NULL_NODE, mnt->Open(Path("/foo"), O_RDWR));
- EXPECT_EQ(errno, ENOENT);
-
- // Create a file
- file = mnt->Open(Path("/foo"), O_RDWR | O_CREAT);
- EXPECT_NE(NULL_NODE, file);
- if (file == NULL) return;
- EXPECT_EQ(2, file->RefCount());
- EXPECT_EQ(2, mnt->num_nodes());
-
- // Open the root directory
- root = mnt->Open(Path("/"), O_RDWR);
- EXPECT_NE(NULL_NODE, root);
- if (NULL != root) {
- struct dirent dirs[2];
- int len = root->GetDents(0, dirs, sizeof(dirs));
- EXPECT_EQ(sizeof(struct dirent), len);
- }
-
- // Fail to re-create the same file
- EXPECT_EQ(NULL_NODE, mnt->Open(Path("/foo"), O_RDWR | O_CREAT | O_EXCL));
- EXPECT_EQ(errno, EEXIST);
- EXPECT_EQ(2, mnt->num_nodes());
-
- // Fail to create a directory with the same name
- EXPECT_EQ(-1, mnt->Mkdir(Path("/foo"), O_RDWR));
- EXPECT_EQ(errno, EEXIST);
-
- // Attempt to READ/WRITE
- EXPECT_EQ(0, file->GetSize());
- EXPECT_EQ(sizeof(buf1), file->Write(0, buf1, sizeof(buf1)));
- EXPECT_EQ(sizeof(buf1), file->GetSize());
- EXPECT_EQ(sizeof(buf1), file->Read(0, buf1, sizeof(buf1)));
-
- // Attempt to open the same file
- EXPECT_EQ(file, mnt->Open(Path("/foo"), O_RDWR | O_CREAT));
- EXPECT_EQ(sizeof(buf1), file->GetSize());
- EXPECT_EQ(3, file->RefCount());
- EXPECT_EQ(2, mnt->num_nodes());
-
- // Attempt to close and delete the file
- mnt->ReleaseNode(file);
- EXPECT_EQ(2, mnt->num_nodes());
- EXPECT_EQ(0, mnt->Unlink(Path("/foo")));
- EXPECT_EQ(2, mnt->num_nodes());
- EXPECT_EQ(-1, mnt->Unlink(Path("/foo")));
- EXPECT_EQ(2, mnt->num_nodes());
- EXPECT_EQ(errno, ENOENT);
- mnt->ReleaseNode(file);
- EXPECT_EQ(1, mnt->num_nodes());
-
- // Recreate foo as a directory
- EXPECT_EQ(0, mnt->Mkdir(Path("/foo"), O_RDWR));
-
- // Create a file (exclusively)
- file = mnt->Open(Path("/foo/bar"), O_RDWR | O_CREAT | O_EXCL);
- EXPECT_NE(NULL_NODE, file);
- if (NULL == file) return;
-
- // Attempt to delete the directory
- EXPECT_EQ(-1, mnt->Rmdir(Path("/foo")));
- EXPECT_EQ(errno, ENOTEMPTY);
-
- // Unlink the file, then delete the directory
- EXPECT_EQ(0, mnt->Unlink(Path("/foo/bar")));
- EXPECT_EQ(0, mnt->Rmdir(Path("/foo")));
- EXPECT_EQ(2, mnt->num_nodes());
- mnt->ReleaseNode(file);
- EXPECT_EQ(1, mnt->num_nodes());
-
- // Verify the directory is gone
- file = mnt->Open(Path("/foo"), O_RDWR);
- EXPECT_EQ(NULL_NODE, file);
- EXPECT_EQ(errno, ENOENT);
-}
-
-TEST(MountTest, MemMountRemove) {
- MountMemMock* mnt = new MountMemMock();
- MountNode* file;
-
- EXPECT_EQ(0, mnt->Mkdir(Path("/dir"), O_RDWR));
- file = mnt->Open(Path("/file"), O_RDWR | O_CREAT | O_EXCL);
- EXPECT_NE(NULL_NODE, file);
- mnt->ReleaseNode(file);
-
- EXPECT_EQ(0, mnt->Remove(Path("/dir")));
- EXPECT_EQ(0, mnt->Remove(Path("/file")));
-
- EXPECT_EQ(NULL_NODE, mnt->Open(Path("/dir/foo"), O_CREAT | O_RDWR));
- EXPECT_EQ(ENOENT, errno);
- EXPECT_EQ(NULL_NODE, mnt->Open(Path("/file"), O_RDONLY));
- EXPECT_EQ(ENOENT, errno);
-}
-
-TEST(MountTest, DevNull) {
- MountDevMock* mnt = new MountDevMock();
- MountNode* dev_null = mnt->Open(Path("/null"), O_RDWR);
- ASSERT_NE(NULL_NODE, dev_null);
-
- // Writing to /dev/null should write everything.
- const char msg[] = "Dummy test message.";
- EXPECT_EQ(strlen(msg), dev_null->Write(0, &msg[0], strlen(msg)));
-
- // Reading from /dev/null should read nothing.
- const int kBufferLength = 100;
- char buffer[kBufferLength];
- EXPECT_EQ(0, dev_null->Read(0, &buffer[0], kBufferLength));
- mnt->ReleaseNode(dev_null);
-}
-
-TEST(MountTest, DevZero) {
- MountDevMock* mnt = new MountDevMock();
- MountNode* dev_zero = mnt->Open(Path("/zero"), O_RDWR);
- ASSERT_NE(NULL_NODE, dev_zero);
-
- // Writing to /dev/zero should write everything.
- const char msg[] = "Dummy test message.";
- EXPECT_EQ(strlen(msg), dev_zero->Write(0, &msg[0], strlen(msg)));
-
- // Reading from /dev/zero should read all zeroes.
- const int kBufferLength = 100;
- char buffer[kBufferLength];
- // First fill with all 1s.
- memset(&buffer[0], 0x1, kBufferLength);
- EXPECT_EQ(kBufferLength, dev_zero->Read(0, &buffer[0], kBufferLength));
-
- char zero_buffer[kBufferLength];
- memset(&zero_buffer[0], 0, kBufferLength);
- EXPECT_EQ(0, memcmp(&buffer[0], &zero_buffer[0], kBufferLength));
- mnt->ReleaseNode(dev_zero);
-}
-
-TEST(MountTest, DevUrandom) {
- MountDevMock* mnt = new MountDevMock();
- MountNode* dev_urandom = mnt->Open(Path("/urandom"), O_RDWR);
- ASSERT_NE(NULL_NODE, dev_urandom);
-
- // Writing to /dev/zero should write everything.
- const char msg[] = "Dummy test message.";
- EXPECT_EQ(strlen(msg), dev_urandom->Write(0, &msg[0], strlen(msg)));
-
- // Reading from /dev/urandom should read random bytes.
- const int kSampleBatches = 1000;
- const int kSampleBatchSize = 1000;
- const int kTotalSamples = kSampleBatches * kSampleBatchSize;
-
- int byte_count[256] = {0};
-
- unsigned char buffer[kSampleBatchSize];
- for (int batch = 0; batch < kSampleBatches; ++batch) {
- int bytes_read = dev_urandom->Read(0, &buffer[0], kSampleBatchSize);
- EXPECT_EQ(kSampleBatchSize, bytes_read);
-
- for (int i = 0; i < bytes_read; ++i) {
- byte_count[buffer[i]]++;
- }
- }
-
- double expected_count = kTotalSamples / 256.;
- double chi_squared = 0;
- for (int i = 0; i < 256; ++i) {
- double difference = byte_count[i] - expected_count;
- chi_squared += difference * difference / expected_count;
- }
-
- // Approximate chi-squared value for p-value 0.05, 255 degrees-of-freedom.
- EXPECT_LE(chi_squared, 293.24);
-}

Powered by Google App Engine
This is Rietveld 408576698