| 36 | const int pagesSize = sizeof(int) * size; |
| 37 | |
| 38 | Y_UNIT_TEST(WaitForMessageSocket) { |
| 39 | using namespace NDaemonMaker; |
| 40 | SOCKET sockets[2]; |
| 41 | SocketPair(sockets, false, true); |
| 42 | TSocket sender(sockets[0]); |
| 43 | TSocket receiver(sockets[1]); |
| 44 | |
| 45 | int status = -1; |
| 46 | int* pages = new int[size]; |
| 47 | |
| 48 | memset(pages, 0, pagesSize); |
| 49 | if (MakeMeDaemon(closeStdIoOnly, openDevNull, chdirNone, returnFromParent)) { |
| 50 | sender.Close(); |
| 51 | UNIT_ASSERT(ProcessBuffer([&receiver](char* ptr, size_t sz) -> size_t { return receiver.Recv(ptr, sz); }, &status, sizeof(status))); |
| 52 | UNIT_ASSERT(ProcessBuffer([&receiver](char* ptr, size_t sz) -> size_t { return receiver.Recv(ptr, sz); }, pages, pagesSize)); |
| 53 | UNIT_ASSERT(memchr(pages, 0, pagesSize) == nullptr); |
| 54 | } else { |
| 55 | receiver.Close(); |
| 56 | status = 0; |
| 57 | UNIT_ASSERT(ProcessBuffer([&sender](char* ptr, size_t sz) -> size_t { return sender.Send(ptr, sz); }, &status, sizeof(status))); |
| 58 | memset(pages, 1, pagesSize); |
| 59 | UNIT_ASSERT(ProcessBuffer([&sender](char* ptr, size_t sz) -> size_t { return sender.Send(ptr, sz); }, pages, pagesSize)); |
| 60 | exit(0); |
| 61 | } |
| 62 | UNIT_ASSERT(status == 0); |
| 63 | |
| 64 | delete[] pages; |
| 65 | } |
| 66 | |
| 67 | Y_UNIT_TEST(WaitForMessagePipe) { |
| 68 | using namespace NDaemonMaker; |
nothing calls this directly
no test coverage detected