socket_communicator_test.cc 944 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
/*!
 *  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
Chao Ma's avatar
Chao Ma committed
22
    char serbuff[10];
Chao Ma's avatar
Chao Ma committed
23
    memset(serbuff, '\0', 10);
Chao Ma's avatar
Chao Ma committed
24
25
    SocketReceiver receiver;
    receiver.Wait("127.0.0.1", 2049, 1, 500);
Chao Ma's avatar
Chao Ma committed
26
27
28
29
30
    receiver.Recv(serbuff, 10);
    ASSERT_EQ(string("0123456789"), string(serbuff, 10));
    receiver.Finalize();
  } else {  // child: client
    sleep(1);
Chao Ma's avatar
Chao Ma committed
31
32
33
34
35
    SocketSender sender;
    sender.AddReceiver("127.0.0.1", 2049, 0);
    sender.Connect();
    sender.Send(msg, 10, 0);
    sender.Finalize();
Chao Ma's avatar
Chao Ma committed
36
37
  }
}