OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <fcntl.h> | 5 #include <fcntl.h> |
6 | 6 |
7 #include <gtest/gtest.h> | 7 #include <gtest/gtest.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 ASSERT_STREQ("World!\n", buffer); | 282 ASSERT_STREQ("World!\n", buffer); |
283 } | 283 } |
284 | 284 |
285 TEST_F(FuseFsTest, CreateWithMode) { | 285 TEST_F(FuseFsTest, CreateWithMode) { |
286 ScopedNode node; | 286 ScopedNode node; |
287 struct stat statbuf; | 287 struct stat statbuf; |
288 | 288 |
289 ASSERT_EQ(0, fs_.OpenWithMode(Path("/hello"), | 289 ASSERT_EQ(0, fs_.OpenWithMode(Path("/hello"), |
290 O_RDWR | O_CREAT, 0723, &node)); | 290 O_RDWR | O_CREAT, 0723, &node)); |
291 EXPECT_EQ(0, node->GetStat(&statbuf)); | 291 EXPECT_EQ(0, node->GetStat(&statbuf)); |
292 EXPECT_EQ(S_IFREG, statbuf.st_mode & S_IFMT); | 292 EXPECT_TRUE(S_ISREG(statbuf.st_mode)); |
293 EXPECT_EQ(0723, statbuf.st_mode & ~S_IFMT); | 293 EXPECT_EQ(0723, statbuf.st_mode & 0777); |
294 } | 294 } |
295 | 295 |
296 TEST_F(FuseFsTest, CreateAndWrite) { | 296 TEST_F(FuseFsTest, CreateAndWrite) { |
297 ScopedNode node; | 297 ScopedNode node; |
298 ASSERT_EQ(0, fs_.Open(Path("/foobar"), O_RDWR | O_CREAT, &node)); | 298 ASSERT_EQ(0, fs_.Open(Path("/foobar"), O_RDWR | O_CREAT, &node)); |
299 | 299 |
300 HandleAttr attr; | 300 HandleAttr attr; |
301 const char message[] = "Something interesting"; | 301 const char message[] = "Something interesting"; |
302 int bytes_written; | 302 int bytes_written; |
303 ASSERT_EQ(0, node->Write(attr, &message[0], strlen(message), &bytes_written)); | 303 ASSERT_EQ(0, node->Write(attr, &message[0], strlen(message), &bytes_written)); |
304 ASSERT_EQ(bytes_written, strlen(message)); | 304 ASSERT_EQ(bytes_written, strlen(message)); |
305 | 305 |
306 // Now try to read the data back. | 306 // Now try to read the data back. |
307 char buffer[40] = {0}; | 307 char buffer[40] = {0}; |
308 int bytes_read = 0; | 308 int bytes_read = 0; |
309 ASSERT_EQ(0, node->Read(attr, &buffer[0], sizeof(buffer), &bytes_read)); | 309 ASSERT_EQ(0, node->Read(attr, &buffer[0], sizeof(buffer), &bytes_read)); |
310 ASSERT_EQ(strlen(message), bytes_read); | 310 ASSERT_EQ(strlen(message), bytes_read); |
311 ASSERT_STREQ(message, buffer); | 311 ASSERT_STREQ(message, buffer); |
312 } | 312 } |
313 | 313 |
314 TEST_F(FuseFsTest, GetStat) { | 314 TEST_F(FuseFsTest, GetStat) { |
315 struct stat statbuf; | 315 struct stat statbuf; |
316 ScopedNode node; | 316 ScopedNode node; |
317 | 317 |
318 ASSERT_EQ(0, fs_.Open(Path("/hello"), O_RDONLY, &node)); | 318 ASSERT_EQ(0, fs_.Open(Path("/hello"), O_RDONLY, &node)); |
319 EXPECT_EQ(0, node->GetStat(&statbuf)); | 319 EXPECT_EQ(0, node->GetStat(&statbuf)); |
320 EXPECT_EQ(S_IFREG, statbuf.st_mode & S_IFMT); | 320 EXPECT_TRUE(S_ISREG(statbuf.st_mode)); |
321 EXPECT_EQ(0666, statbuf.st_mode & ~S_IFMT); | 321 EXPECT_EQ(0666, statbuf.st_mode & 0777); |
322 EXPECT_EQ(strlen(hello_world), statbuf.st_size); | 322 EXPECT_EQ(strlen(hello_world), statbuf.st_size); |
323 | 323 |
324 ASSERT_EQ(0, fs_.Open(Path("/"), O_RDONLY, &node)); | 324 ASSERT_EQ(0, fs_.Open(Path("/"), O_RDONLY, &node)); |
325 EXPECT_EQ(0, node->GetStat(&statbuf)); | 325 EXPECT_EQ(0, node->GetStat(&statbuf)); |
326 EXPECT_EQ(S_IFDIR, statbuf.st_mode & S_IFMT); | 326 EXPECT_TRUE(S_ISDIR(statbuf.st_mode)); |
327 EXPECT_EQ(0755, statbuf.st_mode & ~S_IFMT); | 327 EXPECT_EQ(0755, statbuf.st_mode & 0777); |
328 | 328 |
329 // Create a file and stat. | 329 // Create a file and stat. |
330 ASSERT_EQ(0, fs_.Open(Path("/foobar"), O_RDWR | O_CREAT, &node)); | 330 ASSERT_EQ(0, fs_.Open(Path("/foobar"), O_RDWR | O_CREAT, &node)); |
331 EXPECT_EQ(0, node->GetStat(&statbuf)); | 331 EXPECT_EQ(0, node->GetStat(&statbuf)); |
332 EXPECT_EQ(S_IFREG, statbuf.st_mode & S_IFMT); | 332 EXPECT_TRUE(S_ISREG(statbuf.st_mode)); |
333 EXPECT_EQ(0666, statbuf.st_mode & ~S_IFMT); | 333 EXPECT_EQ(0666, statbuf.st_mode & 0777); |
334 EXPECT_EQ(0, statbuf.st_size); | 334 EXPECT_EQ(0, statbuf.st_size); |
335 } | 335 } |
336 | 336 |
337 TEST_F(FuseFsTest, GetDents) { | 337 TEST_F(FuseFsTest, GetDents) { |
338 ScopedNode root; | 338 ScopedNode root; |
339 | 339 |
340 ASSERT_EQ(0, fs_.Open(Path("/"), O_RDONLY, &root)); | 340 ASSERT_EQ(0, fs_.Open(Path("/"), O_RDONLY, &root)); |
341 | 341 |
342 struct dirent entries[4]; | 342 struct dirent entries[4]; |
343 int bytes_read; | 343 int bytes_read; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 EXPECT_EQ(times[1].tv_sec, statbuf.st_mtime); | 387 EXPECT_EQ(times[1].tv_sec, statbuf.st_mtime); |
388 EXPECT_EQ(times[1].tv_nsec, statbuf.st_mtimensec); | 388 EXPECT_EQ(times[1].tv_nsec, statbuf.st_mtimensec); |
389 } | 389 } |
390 | 390 |
391 TEST_F(FuseFsTest, Fchmod) { | 391 TEST_F(FuseFsTest, Fchmod) { |
392 struct stat statbuf; | 392 struct stat statbuf; |
393 ScopedNode node; | 393 ScopedNode node; |
394 | 394 |
395 ASSERT_EQ(0, fs_.Open(Path("/hello"), O_RDONLY, &node)); | 395 ASSERT_EQ(0, fs_.Open(Path("/hello"), O_RDONLY, &node)); |
396 ASSERT_EQ(0, node->GetStat(&statbuf)); | 396 ASSERT_EQ(0, node->GetStat(&statbuf)); |
397 EXPECT_EQ(0666, statbuf.st_mode & ~S_IFMT); | 397 EXPECT_EQ(0666, statbuf.st_mode & 0777); |
398 | 398 |
399 ASSERT_EQ(0, node->Fchmod(0777)); | 399 ASSERT_EQ(0, node->Fchmod(0777)); |
400 | 400 |
401 ASSERT_EQ(0, node->GetStat(&statbuf)); | 401 ASSERT_EQ(0, node->GetStat(&statbuf)); |
402 EXPECT_EQ(0777, statbuf.st_mode & ~S_IFMT); | 402 EXPECT_EQ(0777, statbuf.st_mode & 0777); |
403 } | 403 } |
404 | 404 |
405 namespace { | 405 namespace { |
406 | 406 |
407 class KernelProxyFuseTest : public ::testing::Test { | 407 class KernelProxyFuseTest : public ::testing::Test { |
408 public: | 408 public: |
409 KernelProxyFuseTest() {} | 409 KernelProxyFuseTest() {} |
410 | 410 |
411 void SetUp(); | 411 void SetUp(); |
412 void TearDown(); | 412 void TearDown(); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
445 // Then read it back in. | 445 // Then read it back in. |
446 fd = ki_open("/hello", O_RDONLY, 0); | 446 fd = ki_open("/hello", O_RDONLY, 0); |
447 ASSERT_GT(fd, -1); | 447 ASSERT_GT(fd, -1); |
448 | 448 |
449 char buffer[30]; | 449 char buffer[30]; |
450 memset(buffer, 0, sizeof(buffer)); | 450 memset(buffer, 0, sizeof(buffer)); |
451 ASSERT_EQ(sizeof(hello_world), ki_read(fd, buffer, sizeof(buffer))); | 451 ASSERT_EQ(sizeof(hello_world), ki_read(fd, buffer, sizeof(buffer))); |
452 EXPECT_STREQ(hello_world, buffer); | 452 EXPECT_STREQ(hello_world, buffer); |
453 EXPECT_EQ(0, ki_close(fd)); | 453 EXPECT_EQ(0, ki_close(fd)); |
454 } | 454 } |
OLD | NEW |