/** * Copyright 2020 Huawei Technologies Co., Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "ps/comm/tcp_client.h" #include "ps/comm/tcp_server.h" #include "common/common_test.h" #include namespace mindspore { namespace ps { namespace comm { class TestTcpServer : public UT::Common { public: TestTcpServer() = default; void SetUp() override { server_ = new TcpServer("127.0.0.1", 9000); std::unique_ptr http_server_thread_(nullptr); http_server_thread_ = std::make_unique([&]() { server_->ReceiveMessage([](const TcpServer &server, const TcpConnection &conn, const void *buffer, size_t num) { EXPECT_STREQ(std::string(reinterpret_cast(buffer), num).c_str(), "TCP_MESSAGE"); server.SendMessage(conn, buffer, num); }); server_->InitServer(); server_->Start(); }); http_server_thread_->detach(); std::this_thread::sleep_for(std::chrono::milliseconds(2000)); } void TearDown() override { std::this_thread::sleep_for(std::chrono::milliseconds(2000)); client_->Stop(); std::this_thread::sleep_for(std::chrono::milliseconds(2000)); server_->Stop(); } TcpClient *client_; TcpServer *server_; const std::string test_message_ = "TCP_MESSAGE"; }; TEST_F(TestTcpServer, ServerSendMessage) { client_ = new TcpClient("127.0.0.1", 9000); std::unique_ptr http_client_thread(nullptr); http_client_thread = std::make_unique([&]() { client_->ReceiveMessage([](const TcpClient &client, const void *buffer, size_t num) { EXPECT_STREQ(std::string(reinterpret_cast(buffer), num).c_str(), "TCP_MESSAGE"); }); client_->InitTcpClient(); client_->SendMessage(test_message_.c_str(), test_message_.size()); client_->Start(); }); http_client_thread->detach(); } } // namespace comm } // namespace ps } // namespace mindspore