| 121 | } |
| 122 | |
| 123 | void RunLocalStreamTest(const char* localServerSockName) { |
| 124 | char buf[256]; |
| 125 | TSockAddrLocalStream servAddr(localServerSockName); |
| 126 | TSockAddrLocalStream newAddr; |
| 127 | TLocalStreamSocket cliSock; |
| 128 | TLocalStreamSocket servSock; |
| 129 | TLocalStreamSocket newSock; |
| 130 | cliSock.CheckSock(); |
| 131 | servSock.CheckSock(); |
| 132 | newSock.CheckSock(); |
| 133 | |
| 134 | // server |
| 135 | TBaseSocket::Check(servSock.Bind(&servAddr), "bind"); |
| 136 | TBaseSocket::Check(servSock.Listen(10), "listen"); |
| 137 | |
| 138 | NThreading::TLegacyFuture<void> f([&]() { |
| 139 | // server |
| 140 | TBaseSocket::Check(servSock.Accept(&newSock, &newAddr), "accept"); |
| 141 | }); |
| 142 | |
| 143 | // client |
| 144 | TBaseSocket::Check(cliSock.Connect(&servAddr), "connect"); |
| 145 | |
| 146 | f.Get(); |
| 147 | |
| 148 | // client |
| 149 | const char reqStr[] = "Hello, world!!!"; |
| 150 | TBaseSocket::Check(cliSock.Send(reqStr, sizeof(reqStr)), "send"); |
| 151 | |
| 152 | // server - new |
| 153 | TBaseSocket::Check(newSock.Recv(buf, 256), "recv"); |
| 154 | UNIT_ASSERT(strcmp(reqStr, buf) == 0); |
| 155 | const char repStr[] = "The World's greatings to you"; |
| 156 | TBaseSocket::Check(newSock.Send(repStr, sizeof(repStr)), "send"); |
| 157 | |
| 158 | // client |
| 159 | TBaseSocket::Check(cliSock.Recv(buf, 256), "recv"); |
| 160 | UNIT_ASSERT(strcmp(repStr, buf) == 0); |
| 161 | } |
| 162 | |
| 163 | Y_UNIT_TEST(LocalStreamTest) { |
| 164 | const char* localServerSockName = "./serv_sock2"; |