| Index: native_client_sdk/src/libraries/nacl_io_test/mount_node_test.cc
|
| diff --git a/native_client_sdk/src/libraries/nacl_io_test/mount_node_test.cc b/native_client_sdk/src/libraries/nacl_io_test/mount_node_test.cc
|
| index 2de13cd468431761902237ed8f1a2091a3a7ab2a..bc6fa65ed64b97490e9ca3b593079fb1f3416290 100644
|
| --- a/native_client_sdk/src/libraries/nacl_io_test/mount_node_test.cc
|
| +++ b/native_client_sdk/src/libraries/nacl_io_test/mount_node_test.cc
|
| @@ -6,6 +6,7 @@
|
| #include <errno.h>
|
| #include <fcntl.h>
|
|
|
| +#include "nacl_io/error.h"
|
| #include "nacl_io/kernel_proxy.h"
|
| #include "nacl_io/mount_node.h"
|
| #include "nacl_io/mount_node_dir.h"
|
| @@ -14,31 +15,25 @@
|
|
|
| #include "gtest/gtest.h"
|
|
|
| -#define NULL_NODE ((MountNode *) NULL)
|
| +#define NULL_NODE ((MountNode*) NULL)
|
|
|
| static int s_AllocNum = 0;
|
|
|
| class MockMemory : public MountNodeMem {
|
| public:
|
| - MockMemory() : MountNodeMem(NULL) {
|
| - s_AllocNum++;
|
| - }
|
| + MockMemory() : MountNodeMem(NULL) { s_AllocNum++; }
|
|
|
| - ~MockMemory() {
|
| - s_AllocNum--;
|
| - }
|
| + ~MockMemory() { s_AllocNum--; }
|
|
|
| - bool Init(int mode) {
|
| - return MountNodeMem::Init(mode);
|
| - }
|
| - int AddChild(const std::string& name, MountNode *node) {
|
| + Error Init(int mode) { return MountNodeMem::Init(mode); }
|
| + Error AddChild(const std::string& name, MountNode* node) {
|
| return MountNodeMem::AddChild(name, node);
|
| }
|
| - int RemoveChild(const std::string& name) {
|
| + Error RemoveChild(const std::string& name) {
|
| return MountNodeMem::RemoveChild(name);
|
| }
|
| - MountNode* FindChild(const std::string& name) {
|
| - return MountNodeMem::FindChild(name);
|
| + Error FindChild(const std::string& name, MountNode** out_node) {
|
| + return MountNodeMem::FindChild(name, out_node);
|
| }
|
| void Link() { MountNodeMem::Link(); }
|
| void Unlink() { MountNodeMem::Unlink(); }
|
| @@ -49,25 +44,19 @@ class MockMemory : public MountNodeMem {
|
|
|
| class MockDir : public MountNodeDir {
|
| public:
|
| - MockDir() : MountNodeDir(NULL) {
|
| - s_AllocNum++;
|
| - }
|
| + MockDir() : MountNodeDir(NULL) { s_AllocNum++; }
|
|
|
| - ~MockDir() {
|
| - s_AllocNum--;
|
| - }
|
| + ~MockDir() { s_AllocNum--; }
|
|
|
| - bool Init(int mode) {
|
| - return MountNodeDir::Init(mode);
|
| - }
|
| - int AddChild(const std::string& name, MountNode *node) {
|
| + Error Init(int mode) { return MountNodeDir::Init(mode); }
|
| + Error AddChild(const std::string& name, MountNode* node) {
|
| return MountNodeDir::AddChild(name, node);
|
| }
|
| - int RemoveChild(const std::string& name) {
|
| + Error RemoveChild(const std::string& name) {
|
| return MountNodeDir::RemoveChild(name);
|
| }
|
| - MountNode* FindChild(const std::string& name) {
|
| - return MountNodeDir::FindChild(name);
|
| + Error FindChild(const std::string& name, MountNode** out_node) {
|
| + return MountNodeDir::FindChild(name, out_node);
|
| }
|
| void Link() { MountNodeDir::Link(); }
|
| void Unlink() { MountNodeDir::Unlink(); }
|
| @@ -77,9 +66,12 @@ class MockDir : public MountNodeDir {
|
| };
|
|
|
| TEST(MountNodeTest, File) {
|
| - MockMemory *file = new MockMemory;
|
| + MockMemory* file = new MockMemory;
|
| + MountNode* result_node = NULL;
|
| + size_t result_size = 0;
|
| + int result_bytes = 0;
|
|
|
| - EXPECT_TRUE(file->Init(S_IREAD | S_IWRITE));
|
| + EXPECT_EQ(0, file->Init(S_IREAD | S_IWRITE));
|
|
|
| // Test properties
|
| EXPECT_EQ(0, file->GetLinks());
|
| @@ -97,12 +89,18 @@ TEST(MountNodeTest, File) {
|
| buf1[a] = a;
|
| memset(buf2, 0, sizeof(buf2));
|
|
|
| - EXPECT_EQ(0, file->GetSize());
|
| - EXPECT_EQ(0, file->Read(0, buf2, sizeof(buf2)));
|
| - 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, buf2, sizeof(buf2)));
|
| + EXPECT_EQ(0, file->GetSize(&result_size));
|
| + EXPECT_EQ(0, result_size);
|
| + EXPECT_EQ(0, file->Read(0, buf2, sizeof(buf2), &result_bytes));
|
| + EXPECT_EQ(0, result_bytes);
|
| + EXPECT_EQ(0, file->GetSize(&result_size));
|
| + EXPECT_EQ(0, result_size);
|
| + EXPECT_EQ(0, file->Write(0, buf1, sizeof(buf1), &result_bytes));
|
| + EXPECT_EQ(sizeof(buf1), result_bytes);
|
| + EXPECT_EQ(0, file->GetSize(&result_size));
|
| + EXPECT_EQ(sizeof(buf1), result_size);
|
| + EXPECT_EQ(0, file->Read(0, buf2, sizeof(buf2), &result_bytes));
|
| + EXPECT_EQ(sizeof(buf1), result_bytes);
|
| EXPECT_EQ(0, memcmp(buf1, buf2, sizeof(buf1)));
|
|
|
| struct stat s;
|
| @@ -112,20 +110,21 @@ TEST(MountNodeTest, File) {
|
|
|
| // Directory operations should fail
|
| struct dirent d;
|
| - EXPECT_EQ(-1, file->GetDents(0, &d, sizeof(d)));
|
| - EXPECT_EQ(errno, ENOTDIR);
|
| - EXPECT_EQ(-1, file->AddChild("", file));
|
| - EXPECT_EQ(errno, ENOTDIR);
|
| - EXPECT_EQ(-1, file->RemoveChild(""));
|
| - EXPECT_EQ(errno, ENOTDIR);
|
| - EXPECT_EQ(NULL_NODE, file->FindChild(""));
|
| - EXPECT_EQ(errno, ENOTDIR);
|
| + EXPECT_EQ(ENOTDIR, file->GetDents(0, &d, sizeof(d), &result_bytes));
|
| + EXPECT_EQ(ENOTDIR, file->AddChild("", file));
|
| + EXPECT_EQ(ENOTDIR, file->RemoveChild(""));
|
| + EXPECT_EQ(ENOTDIR, file->FindChild("", &result_node));
|
| + EXPECT_EQ(NULL_NODE, result_node);
|
|
|
| delete file;
|
| }
|
|
|
| TEST(MountNodeTest, Directory) {
|
| - MockDir *root = new MockDir();
|
| + MockDir* root = new MockDir();
|
| + MountNode* result_node = NULL;
|
| + size_t result_size = 0;
|
| + int result_bytes = 0;
|
| +
|
| root->Init(S_IREAD | S_IWRITE);
|
|
|
| // Test properties
|
| @@ -139,15 +138,14 @@ TEST(MountNodeTest, Directory) {
|
|
|
| // IO operations should fail
|
| char buf1[1024];
|
| - EXPECT_EQ(0, root->GetSize());
|
| - EXPECT_EQ(-1, root->Read(0, buf1, sizeof(buf1)));
|
| - EXPECT_EQ(errno, EISDIR);
|
| - EXPECT_EQ(-1, root->Write(0, buf1, sizeof(buf1)));
|
| - EXPECT_EQ(errno, EISDIR);
|
| + EXPECT_EQ(0, root->GetSize(&result_size));
|
| + EXPECT_EQ(0, result_size);
|
| + EXPECT_EQ(EISDIR, root->Read(0, buf1, sizeof(buf1), &result_bytes));
|
| + EXPECT_EQ(EISDIR, root->Write(0, buf1, sizeof(buf1), &result_bytes));
|
|
|
| // Test directory operations
|
| MockMemory* file = new MockMemory;
|
| - EXPECT_TRUE(file->Init(S_IREAD | S_IWRITE));
|
| + EXPECT_EQ(0, file->Init(S_IREAD | S_IWRITE));
|
|
|
| EXPECT_EQ(1, root->RefCount());
|
| EXPECT_EQ(1, file->RefCount());
|
| @@ -157,25 +155,28 @@ TEST(MountNodeTest, Directory) {
|
|
|
| // Test that the directory is there
|
| struct dirent d;
|
| - EXPECT_EQ(sizeof(d), root->GetDents(0, &d, sizeof(d)));
|
| + EXPECT_EQ(0, root->GetDents(0, &d, sizeof(d), &result_bytes));
|
| + EXPECT_EQ(sizeof(d), result_bytes);
|
| EXPECT_LT(0, d.d_ino); // 0 is an invalid inode number.
|
| EXPECT_EQ(sizeof(d), d.d_off);
|
| EXPECT_EQ(sizeof(d), d.d_reclen);
|
| EXPECT_EQ(0, strcmp("F1", d.d_name));
|
| - EXPECT_EQ(0, root->GetDents(sizeof(d), &d, sizeof(d)));
|
| + EXPECT_EQ(0, root->GetDents(sizeof(d), &d, sizeof(d), &result_bytes));
|
| + EXPECT_EQ(0, result_bytes);
|
|
|
| EXPECT_EQ(0, root->AddChild("F2", file));
|
| EXPECT_EQ(2, file->GetLinks());
|
| EXPECT_EQ(3, file->RefCount());
|
| - EXPECT_EQ(-1, root->AddChild("F1", file));
|
| - EXPECT_EQ(EEXIST, errno);
|
| + EXPECT_EQ(EEXIST, root->AddChild("F1", file));
|
| EXPECT_EQ(2, file->GetLinks());
|
|
|
| EXPECT_EQ(2, s_AllocNum);
|
| - EXPECT_NE(NULL_NODE, root->FindChild("F1"));
|
| - EXPECT_NE(NULL_NODE, root->FindChild("F2"));
|
| - EXPECT_EQ(NULL_NODE, root->FindChild("F3"));
|
| - EXPECT_EQ(errno, ENOENT);
|
| + EXPECT_EQ(0, root->FindChild("F1", &result_node));
|
| + EXPECT_NE(NULL_NODE, result_node);
|
| + EXPECT_EQ(0, root->FindChild("F2", &result_node));
|
| + EXPECT_NE(NULL_NODE, result_node);
|
| + EXPECT_EQ(ENOENT, root->FindChild("F3", &result_node));
|
| + EXPECT_EQ(NULL_NODE, result_node);
|
|
|
| EXPECT_EQ(2, s_AllocNum);
|
| EXPECT_EQ(0, root->RemoveChild("F1"));
|
|
|