| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 // The linux host build of nacl_io can't do wrapping of syscalls so all | 5 // The linux host build of nacl_io can't do wrapping of syscalls so all |
| 6 // these tests must be disabled. | 6 // these tests must be disabled. |
| 7 #if !defined(__linux__) | 7 #if !defined(__linux__) |
| 8 | 8 |
| 9 #include <unistd.h> | 9 #include <unistd.h> |
| 10 | 10 |
| 11 #include <string> | 11 #include <string> |
| 12 #include <vector> | 12 #include <vector> |
| 13 | 13 |
| 14 #include "gtest/gtest.h" | 14 #include "gtest/gtest.h" |
| 15 #include "mock_kernel_proxy.h" | 15 #include "mock_kernel_proxy.h" |
| 16 #include "nacl_io/kernel_intercept.h" | 16 #include "nacl_io/kernel_intercept.h" |
| 17 #include "nacl_io/kernel_wrap.h" | 17 #include "nacl_io/kernel_wrap.h" |
| 18 #include "nacl_io/kernel_wrap_real.h" | 18 #include "nacl_io/kernel_wrap_real.h" |
| 19 #include "nacl_io/osmman.h" | 19 #include "nacl_io/osmman.h" |
| 20 #include "nacl_io/ossocket.h" | 20 #include "nacl_io/ossocket.h" |
| 21 #include "nacl_io/ostermios.h" | 21 #include "nacl_io/ostermios.h" |
| 22 #include "ppapi_simple/ps.h" |
| 22 | 23 |
| 23 #if defined(__native_client__) && !defined(__GLIBC__) | 24 #if defined(__native_client__) && !defined(__GLIBC__) |
| 24 extern "C" { | 25 extern "C" { |
| 25 // TODO(sbc): remove once these get added to the newlib toolchain headers. | 26 // TODO(sbc): remove once these get added to the newlib toolchain headers. |
| 26 int fchdir(int fd); | 27 int fchdir(int fd); |
| 27 int utimes(const char *filename, const struct timeval times[2]); | 28 int utimes(const char *filename, const struct timeval times[2]); |
| 28 } | 29 } |
| 29 #endif | 30 #endif |
| 30 | 31 |
| 31 using namespace nacl_io; | 32 using namespace nacl_io; |
| (...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 626 EXPECT_EQ(-1, utimes(kDummyConstChar, times)); | 627 EXPECT_EQ(-1, utimes(kDummyConstChar, times)); |
| 627 ASSERT_EQ(kDummyErrno, errno); | 628 ASSERT_EQ(kDummyErrno, errno); |
| 628 } | 629 } |
| 629 | 630 |
| 630 TEST_F(KernelWrapTest, write) { | 631 TEST_F(KernelWrapTest, write) { |
| 631 EXPECT_CALL(mock, write(kDummyInt, kDummyVoidPtr, kDummyInt2)) | 632 EXPECT_CALL(mock, write(kDummyInt, kDummyVoidPtr, kDummyInt2)) |
| 632 .WillOnce(Return(kDummyInt3)); | 633 .WillOnce(Return(kDummyInt3)); |
| 633 EXPECT_EQ(kDummyInt3, write(kDummyInt, kDummyVoidPtr, kDummyInt2)); | 634 EXPECT_EQ(kDummyInt3, write(kDummyInt, kDummyVoidPtr, kDummyInt2)); |
| 634 } | 635 } |
| 635 | 636 |
| 636 #if defined SEL_LDR | |
| 637 class KernelWrapTestUninit : public ::testing::Test { | 637 class KernelWrapTestUninit : public ::testing::Test { |
| 638 void SetUp() { | 638 void SetUp() { |
| 639 ASSERT_EQ(0, ki_push_state_for_testing()); | 639 ASSERT_EQ(0, ki_push_state_for_testing()); |
| 640 kernel_wrap_uninit(); |
| 640 } | 641 } |
| 641 | 642 |
| 642 void TearDown() { | 643 void TearDown() { |
| 644 kernel_wrap_init(); |
| 643 ki_pop_state_for_testing(); | 645 ki_pop_state_for_testing(); |
| 644 } | 646 } |
| 645 }; | 647 }; |
| 646 | 648 |
| 647 TEST_F(KernelWrapTestUninit, Mkdir_Uninitialised) { | 649 TEST_F(KernelWrapTestUninit, Mkdir_Uninitialised) { |
| 648 // If we are running within chrome we can't use these calls without | 650 // If we are running within chrome we can't use these calls without |
| 649 // nacl_io initialized. | 651 // nacl_io initialized. |
| 652 if (PSGetInstanceId() != 0) |
| 653 return; |
| 650 EXPECT_EQ(0, mkdir("./foo", S_IREAD | S_IWRITE)); | 654 EXPECT_EQ(0, mkdir("./foo", S_IREAD | S_IWRITE)); |
| 651 EXPECT_EQ(0, rmdir("./foo")); | 655 EXPECT_EQ(0, rmdir("./foo")); |
| 652 } | 656 } |
| 653 | 657 |
| 654 TEST_F(KernelWrapTestUninit, Getcwd_Uninitialised) { | 658 TEST_F(KernelWrapTestUninit, Getcwd_Uninitialised) { |
| 655 // If we are running within chrome we can't use these calls without | 659 // If we are running within chrome we can't use these calls without |
| 656 // nacl_io initialized. | 660 // nacl_io initialized. |
| 661 if (PSGetInstanceId() != 0) |
| 662 return; |
| 657 char dir[PATH_MAX]; | 663 char dir[PATH_MAX]; |
| 658 ASSERT_NE((char*)NULL, getcwd(dir, PATH_MAX)); | 664 ASSERT_NE((char*)NULL, getcwd(dir, PATH_MAX)); |
| 659 // Verify that the CWD ends with 'nacl_io_test' | 665 // Verify that the CWD ends with 'nacl_io_test' |
| 660 const char* suffix = "nacl_io_test"; | 666 const char* suffix = "nacl_io_test"; |
| 661 ASSERT_GT(strlen(dir), strlen(suffix)); | 667 ASSERT_GT(strlen(dir), strlen(suffix)); |
| 662 ASSERT_EQ(0, strcmp(dir+strlen(dir)-strlen(suffix), suffix)); | 668 ASSERT_EQ(0, strcmp(dir+strlen(dir)-strlen(suffix), suffix)); |
| 663 } | 669 } |
| 664 #endif | |
| 665 | 670 |
| 666 #if defined(PROVIDES_SOCKET_API) and !defined(__BIONIC__) | 671 #if defined(PROVIDES_SOCKET_API) and !defined(__BIONIC__) |
| 667 TEST_F(KernelWrapTest, poll) { | 672 TEST_F(KernelWrapTest, poll) { |
| 668 struct pollfd fds; | 673 struct pollfd fds; |
| 669 EXPECT_CALL(mock, poll(&fds, kDummyInt, kDummyInt2)) | 674 EXPECT_CALL(mock, poll(&fds, kDummyInt, kDummyInt2)) |
| 670 .WillOnce(Return(kDummyInt3)); | 675 .WillOnce(Return(kDummyInt3)); |
| 671 EXPECT_EQ(kDummyInt3, poll(&fds, kDummyInt, kDummyInt2)); | 676 EXPECT_EQ(kDummyInt3, poll(&fds, kDummyInt, kDummyInt2)); |
| 672 } | 677 } |
| 673 | 678 |
| 674 TEST_F(KernelWrapTest, select) { | 679 TEST_F(KernelWrapTest, select) { |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 888 .WillOnce(Return(0)) | 893 .WillOnce(Return(0)) |
| 889 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); | 894 .WillOnce(DoAll(SetErrno(kDummyErrno), Return(-1))); |
| 890 EXPECT_EQ(0, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); | 895 EXPECT_EQ(0, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); |
| 891 EXPECT_EQ(-1, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); | 896 EXPECT_EQ(-1, socketpair(kDummyInt, kDummyInt2, kDummyInt3, &dummy_val)); |
| 892 EXPECT_EQ(kDummyErrno, errno); | 897 EXPECT_EQ(kDummyErrno, errno); |
| 893 } | 898 } |
| 894 | 899 |
| 895 #endif // PROVIDES_SOCKET_API | 900 #endif // PROVIDES_SOCKET_API |
| 896 | 901 |
| 897 #endif // __linux__ | 902 #endif // __linux__ |
| OLD | NEW |