mock_kernel_proxy.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef TESTS_NACL_IO_TEST_MOCK_KERNEL_PROXY_H_
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define TESTS_NACL_IO_TEST_MOCK_KERNEL_PROXY_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/types.h>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/stat.h>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gmock/gmock.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "nacl_io/kernel_proxy.h"
133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "nacl_io/ossignal.h"
14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "nacl_io/ossocket.h"
15bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "nacl_io/ostermios.h"
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class MockKernelProxy : public nacl_io::KernelProxy {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  MockKernelProxy();
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual ~MockKernelProxy();
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(access, int(const char*, int));
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(chdir, int(const char*));
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(chmod, int(const char*, mode_t));
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD3(chown, int(const char*, uid_t, gid_t));
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(close, int(int));
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(dup, int(int));
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  MOCK_METHOD2(dup2, int(int, int));
298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  MOCK_METHOD1(fchdir, int(int));
304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD2(fchmod, int(int, int));
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD3(fchown, int(int, uid_t, gid_t));
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD3(fcntl, int(int, int, va_list));
3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  MOCK_METHOD2(ftruncate, int(int, off_t));
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(fstat, int(int, struct stat*));
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(fsync, int(int));
368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  MOCK_METHOD1(fdatasync, int(int));
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(getcwd, char*(char*, size_t));
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD3(getdents, int(int, void*, unsigned int));
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(getwd, char*(char*));
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD3(ioctl, int(int, int, va_list));
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(isatty, int(int));
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  MOCK_METHOD2(kill, int(int, int));
43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD3(lchown, int(const char*, uid_t, gid_t));
443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  MOCK_METHOD2(link, int(const char*, const char*));
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD3(lseek, off_t(int, off_t, int));
468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  MOCK_METHOD2(lstat, int(const char*, struct stat*));
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(mkdir, int(const char*, mode_t));
483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  MOCK_METHOD6(mmap, void*(void*, size_t, int, int, int, size_t));
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD5(mount, int(const char*, const char*, const char*, unsigned long,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const void*));
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD2(munmap, int(void*, size_t));
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(open, int(const char*, int));
5368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  MOCK_METHOD1(pipe, int(int[2]));
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD3(read, ssize_t(int, void*, size_t));
558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  MOCK_METHOD3(readlink, int(const char*, char*, size_t count));
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(remove, int(const char*));
578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  MOCK_METHOD2(rename, int(const char*, const char*));
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(rmdir, int(const char*));
59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MOCK_METHOD3(sigaction, int(int, const struct sigaction*, struct sigaction*));
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(stat, int(const char*, struct stat*));
613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  MOCK_METHOD2(symlink, int(const char*, const char*));
624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD2(tcflush, int(int, int));
63bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  MOCK_METHOD2(tcgetattr, int(int, struct termios*));
64bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  MOCK_METHOD3(tcsetattr, int(int, int, const struct termios*));
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(umount, int(const char*));
668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  MOCK_METHOD2(truncate, int(const char*, off_t));
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(unlink, int(const char*));
68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD2(utime, int(const char*, const struct utimbuf*));
698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  MOCK_METHOD2(utimes, int(const char*, const struct timeval[2]));
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD3(write, ssize_t(int, const void*, size_t));
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  MOCK_METHOD1(open_resource, int(const char*));
72a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
73a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#ifdef PROVIDES_SOCKET_API
743240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  MOCK_METHOD3(poll, int(struct pollfd*, nfds_t, int));
753240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  MOCK_METHOD5(select, int(int, fd_set*, fd_set*, fd_set*, struct timeval*));
763240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
77a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // Socket support functions
78a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD3(accept, int(int, struct sockaddr*, socklen_t*));
79a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD3(bind, int(int, const struct sockaddr*, socklen_t));
80a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD3(connect, int(int, const struct sockaddr*, socklen_t));
81bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  MOCK_METHOD1(gethostbyname, struct hostent*(const char*));
82a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD3(getpeername, int(int, struct sockaddr*, socklen_t*));
83a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD3(getsockname, int(int, struct sockaddr*, socklen_t*));
84a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD5(getsockopt, int(int, int, int, void*, socklen_t*));
85a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD2(listen, int(int, int));
86a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD4(recv, ssize_t(int, void*, size_t, int));
87a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD6(recvfrom, ssize_t(int, void*, size_t, int,
88a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                                 struct sockaddr*, socklen_t*));
89a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD3(recvmsg, ssize_t(int, struct msghdr*, int));
90a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD4(send, ssize_t(int, const void*, size_t, int));
91a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD6(sendto, ssize_t(int, const void*, size_t, int,
92a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                               const struct sockaddr*, socklen_t));
93a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD3(sendmsg, ssize_t(int, const struct msghdr*, int));
94a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD5(setsockopt, int(int, int, int, const void*, socklen_t));
95a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD2(shutdown, int(int, int));
96a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD3(socket, int(int, int, int));
97a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  MOCK_METHOD4(socketpair, int(int, int, int, int*));
98a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif // PROVIDES_SOCKET_API
99a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // TESTS_NACL_IO_TEST_MOCK_KERNEL_PROXY_H_
103