socket_communicator_test.cc 938 Bytes
Newer Older
Chao Ma's avatar
Chao Ma committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*!
 *  Copyright (c) 2019 by Contributors
 * \file msg_queue.cc
 * \brief Message queue for DGL distributed training.
 */
#include <gtest/gtest.h>
#include <string.h>
#include <unistd.h>
#include <string>

#include "../src/graph/network/socket_communicator.h"

using std::string;
using dgl::network::SocketSender;
using dgl::network::SocketReceiver;

TEST(SocketCommunicatorTest, SendAndRecv) {
  int pid = fork();
  const char * msg = "0123456789";
  ASSERT_GE(pid, 0);
  if (pid > 0) {  // parent: server
  	char serbuff[10];
    memset(serbuff, '\0', 10);
  	SocketReceiver receiver;
  	receiver.Wait("127.0.0.1", 50051, 1, 500);
    receiver.Recv(serbuff, 10);
    ASSERT_EQ(string("0123456789"), string(serbuff, 10));
    receiver.Finalize();
  } else {  // child: client
    sleep(1);
  	SocketSender sender;
  	sender.AddReceiver("127.0.0.1", 50051, 0);
  	sender.Connect();
  	sender.Send(msg, 10, 0);
  	sender.Finalize();
  }
}