예제 #1
0
TEST_F(P2pSessionTest, testCannotConnectPeerBeforeHostConnected)
{
    TestP2pEventHandler peerEventHandler1;
    boost::scoped_ptr<P2pSession> peer1(
        P2pSessionFactory::create(2, peerEventHandler1));
    EXPECT_TRUE(peer1->open(ACE_DEFAULT_SERVER_PORT + 1));

    TestP2pEventHandler peerEventHandler2;
    boost::scoped_ptr<P2pSession> peer2(
        P2pSessionFactory::create(3, peerEventHandler2));
    EXPECT_TRUE(peer2->open(ACE_DEFAULT_SERVER_PORT + 2));

    peer1->connect(getHostAddresses());

    for (int i = 0; i < (2 * 3); ++i) {
        peer1->tick();
        hostSession_->tick();
    }

    peer2->connect(peer1->getAddresses(2));

    for (int i = 0; i < (2 * 3); ++i) {
        peer1->tick();
        peer2->tick();
        hostSession_->tick();
    }

    EXPECT_EQ(2, int(hostSession_->getPeerCount()));
    EXPECT_EQ(2, int(peer1->getPeerCount()));
}
예제 #2
0
TEST_F(P2pSessionTest, testUnicast)
{
    TestRpcPlugIn* peerRpcPlugIn1;
    TestP2pEventHandler peerEventHandler1;
    boost::scoped_ptr<P2pSession> peer1(
        P2pSessionFactory::create(2, peerEventHandler1));
    peerRpcPlugIn1 = new TestRpcPlugIn;
    PlugInPtr plugIn1(peerRpcPlugIn1);
    peer1->attach(plugIn1);
    EXPECT_TRUE(peer1->open(ACE_DEFAULT_SERVER_PORT + 1));
    peer1->connect(getHostAddresses());

    for (int i = 0; i < (2 * 3); ++i) {
        peer1->tick();
        hostSession_->tick();
    }

    TestRpcPlugIn* peerRpcPlugIn2;
    TestP2pEventHandler peerEventHandler2;
    boost::scoped_ptr<P2pSession> peer2(
        P2pSessionFactory::create(3, peerEventHandler2));
    peerRpcPlugIn2 = new TestRpcPlugIn;
    PlugInPtr plugIn2(peerRpcPlugIn2);
    peer2->attach(plugIn2);
    EXPECT_TRUE(peer2->open(ACE_DEFAULT_SERVER_PORT + 2));
    peer2->connect(getHostAddresses());

    for (int i = 0; i < (2 * 4); ++i) {
        peer1->tick();
        peer2->tick();
        hostSession_->tick();
    }

    EXPECT_EQ(int(hostSession_->getPeerCount()), int(peer1->getPeerCount()));

    const PeerHint hint(2);
    hostRpcPlugIn_->hello("hi", &hint);

    for (int i = 0; i < (2 * 3); ++i) {
        hostSession_->tick();
        peer1->tick();
        peer2->tick();
    }

    EXPECT_EQ("hi", peerRpcPlugIn1->getLastWorld());
    EXPECT_EQ(PeerId(1), peerRpcPlugIn1->getLastPeerId());

    EXPECT_EQ("", peerRpcPlugIn2->getLastWorld());
    EXPECT_EQ(invalidPeerId, peerRpcPlugIn2->getLastPeerId());
}
예제 #3
0
TEST(PeerTests, Constructors) {
    gallocy::common::Peer peer1;
    ASSERT_EQ(peer1.get_canonical_id(), static_cast<uint64_t>(0));
    ASSERT_EQ(peer1.get_string(), "0.0.0.0:0");
    gallocy::common::Peer peer2("127.0.0.1", 8080);
    ASSERT_EQ(peer2.get_canonical_id(), static_cast<uint64_t>(2130706433));
    ASSERT_EQ(peer2.get_string(), "127.0.0.1:8080");
    gallocy::common::Peer peer3 = peer2;
    ASSERT_EQ(peer3.get_canonical_id(), static_cast<uint64_t>(2130706433));
    ASSERT_EQ(peer3.get_string(), "127.0.0.1:8080");
    gallocy::common::Peer peer4(peer2);
    ASSERT_EQ(peer4.get_canonical_id(), static_cast<uint64_t>(2130706433));
    ASSERT_EQ(peer4.get_string(), "127.0.0.1:8080");
}