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

Side by Side Diff: native_client_sdk/src/libraries/nacl_mounts_test/kernel_intercept_test.cc

Issue 11066105: [NaCl SDK] nacl_mounts: wrap functions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: win fix Created 8 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /* Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file.
4 */
5
6 #include <fcntl.h>
7 #include <pthread.h>
8
9 #include <map>
10 #include <string>
11
12 #include "nacl_mounts/kernel_intercept.h"
13 #include "nacl_mounts/kernel_proxy.h"
14 #include "nacl_mounts/path.h"
15
16 #include "gtest/gtest.h"
17
18 class KernelProxyMock : public KernelProxy {
19 public:
20 KernelProxyMock() {}
21 virtual ~KernelProxyMock() {}
22
23 virtual int chdir(const char* path) {
24 events.push_back("chdir");
25 return 0;
26 }
27 virtual char* getcwd(char* buf, size_t size) {
28 events.push_back("getcwd");
29 return buf;
30 }
31 virtual char* getwd(char* buf) {
32 events.push_back("getwd");
33 return buf;
34 }
35 virtual int dup(int oldfd) {
36 events.push_back("dup");
37 return oldfd;
38 }
39 virtual int chmod(const char *path, mode_t mode) {
40 events.push_back("chmod");
41 return 0;
42 }
43 virtual int stat(const char *path, struct stat *buf) {
44 events.push_back("stat");
45 return 0;
46 }
47 virtual int mkdir(const char *path, mode_t mode) {
48 events.push_back("mkdir");
49 return 0;
50 }
51 virtual int rmdir(const char *path) {
52 events.push_back("rmdir");
53 return 0;
54 }
55 virtual int mount(const char *source, const char *target,
56 const char *filesystemtype, unsigned long mountflags, const void *data) {
57 events.push_back("mount");
58 return 0;
59 }
60 virtual int umount(const char *path) {
61 events.push_back("umount");
62 return 0;
63 }
64 virtual int open(const char *path, int oflag) {
65 events.push_back("open");
66 return 0;
67 }
68 virtual ssize_t read(int fd, void *buf, size_t nbyte) {
69 events.push_back("read");
70 return 0;
71 }
72 virtual ssize_t write(int fd, const void *buf, size_t nbyte) {
73 events.push_back("write");
74 return 0;
75 }
76 virtual int fstat(int fd, struct stat *buf) {
77 events.push_back("fstat");
78 return 0;
79 }
80 virtual int getdents(int fd, void *buf, unsigned int count) {
81 events.push_back("getdents");
82 return 0;
83 }
84 virtual int fsync(int fd) {
85 events.push_back("fsync");
86 return 0;
87 }
88 virtual int isatty(int fd) {
89 events.push_back("isatty");
90 return 0;
91 }
92 virtual int close(int fd) {
93 events.push_back("close");
94 return 0;
95 }
96 virtual off_t lseek(int fd, off_t offset, int whence) {
97 events.push_back("lseek");
98 return 0;
99 }
100 virtual int remove(const char* path) {
101 events.push_back("remove");
102 return 0;
103 }
104 virtual int unlink(const char* path) {
105 events.push_back("unlink");
106 return 0;
107 }
108 virtual int access(const char* path, int amode) {
109 events.push_back("access");
110 return 0;
111 }
112
113 std::string& LastStr() {
114 return events.back();
115 }
116
117 std::vector<std::string> events;
118 };
119
120
121 TEST(KernelIntercept, SanityChecks) {
122 static KernelProxyMock* mock = new KernelProxyMock();
123 ki_init(mock);
124
125 ki_chdir("foo");
126 EXPECT_EQ("chdir", mock->LastStr());
127
128 char getcwd_buffer[] = "foo";
129 ki_getcwd(getcwd_buffer, 1);
130 EXPECT_EQ("getcwd", mock->LastStr());
131
132 char getwd_buffer[] = "foo";
133 ki_getwd(getwd_buffer);
134 EXPECT_EQ("getwd", mock->LastStr());
135
136 ki_dup(1);
137 EXPECT_EQ("dup", mock->LastStr());
138
139 ki_chmod("foo", 0);
140 EXPECT_EQ("chmod", mock->LastStr());
141
142 ki_stat("foo", NULL);
143 EXPECT_EQ("stat", mock->LastStr());
144
145 ki_mkdir("foo", 0);
146 EXPECT_EQ("mkdir", mock->LastStr());
147
148 ki_rmdir("foo");
149 EXPECT_EQ("rmdir", mock->LastStr());
150
151 ki_mount("foo", "bar", NULL, 0, NULL);
152 EXPECT_EQ("mount", mock->LastStr());
153
154 ki_umount("foo");
155 EXPECT_EQ("umount", mock->LastStr());
156
157 ki_open("foo", 0);
158 EXPECT_EQ("open", mock->LastStr());
159
160 ki_read(1, NULL, 0);
161 EXPECT_EQ("read", mock->LastStr());
162
163 ki_write(1, NULL, 0);
164 EXPECT_EQ("write", mock->LastStr());
165
166 ki_fstat(1, NULL);
167 EXPECT_EQ("fstat", mock->LastStr());
168
169 ki_getdents(1, NULL, 0);
170 EXPECT_EQ("getdents", mock->LastStr());
171
172 ki_fsync(1);
173 EXPECT_EQ("fsync", mock->LastStr());
174
175 ki_isatty(1);
176 EXPECT_EQ("isatty", mock->LastStr());
177
178 ki_close(1);
179 EXPECT_EQ("close", mock->LastStr());
180
181 ki_remove("foo");
182 EXPECT_EQ("fsync", mock->LastStr());
183
184 ki_unlink("foo");
185 EXPECT_EQ("isatty", mock->LastStr());
186
187 ki_access("foo", 0);
188 EXPECT_EQ("close", mock->LastStr());
189 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698