diff options
Diffstat (limited to 'cast/common/channel/virtual_connection_router_unittest.cc')
-rw-r--r-- | cast/common/channel/virtual_connection_router_unittest.cc | 149 |
1 files changed, 127 insertions, 22 deletions
diff --git a/cast/common/channel/virtual_connection_router_unittest.cc b/cast/common/channel/virtual_connection_router_unittest.cc index b05d10e3..69a08c53 100644 --- a/cast/common/channel/virtual_connection_router_unittest.cc +++ b/cast/common/channel/virtual_connection_router_unittest.cc @@ -11,7 +11,6 @@ #include "cast/common/channel/testing/fake_cast_socket.h" #include "cast/common/channel/testing/mock_cast_message_handler.h" #include "cast/common/channel/testing/mock_socket_error_handler.h" -#include "cast/common/channel/virtual_connection_manager.h" #include "cast/common/public/cast_socket.h" #include "gtest/gtest.h" @@ -19,6 +18,19 @@ namespace openscreen { namespace cast { namespace { +static_assert(::cast::channel::CastMessage_ProtocolVersion_CASTV2_1_0 == + static_cast<int>(VirtualConnection::ProtocolVersion::kV2_1_0), + "V2 1.0 constants must be equal"); +static_assert(::cast::channel::CastMessage_ProtocolVersion_CASTV2_1_1 == + static_cast<int>(VirtualConnection::ProtocolVersion::kV2_1_1), + "V2 1.1 constants must be equal"); +static_assert(::cast::channel::CastMessage_ProtocolVersion_CASTV2_1_2 == + static_cast<int>(VirtualConnection::ProtocolVersion::kV2_1_2), + "V2 1.2 constants must be equal"); +static_assert(::cast::channel::CastMessage_ProtocolVersion_CASTV2_1_3 == + static_cast<int>(VirtualConnection::ProtocolVersion::kV2_1_3), + "V2 1.3 constants must be equal"); + using ::cast::channel::CastMessage; using ::testing::_; using ::testing::Invoke; @@ -44,21 +56,115 @@ class VirtualConnectionRouterTest : public ::testing::Test { MockSocketErrorHandler mock_error_handler_; - VirtualConnectionManager local_manager_; - VirtualConnectionRouter local_router_{&local_manager_}; + VirtualConnectionRouter local_router_; + VirtualConnectionRouter remote_router_; - VirtualConnectionManager remote_manager_; - VirtualConnectionRouter remote_router_{&remote_manager_}; + VirtualConnection vc1_{"local1", "peer1", 75}; + VirtualConnection vc2_{"local2", "peer2", 76}; + VirtualConnection vc3_{"local1", "peer3", 75}; }; } // namespace +TEST_F(VirtualConnectionRouterTest, NoConnections) { + EXPECT_FALSE(local_router_.GetConnectionData(vc1_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc2_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc3_)); +} + +TEST_F(VirtualConnectionRouterTest, AddConnections) { + VirtualConnection::AssociatedData data1 = {}; + + local_router_.AddConnection(vc1_, std::move(data1)); + EXPECT_TRUE(local_router_.GetConnectionData(vc1_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc2_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc3_)); + + VirtualConnection::AssociatedData data2 = {}; + local_router_.AddConnection(vc2_, std::move(data2)); + EXPECT_TRUE(local_router_.GetConnectionData(vc1_)); + EXPECT_TRUE(local_router_.GetConnectionData(vc2_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc3_)); + + VirtualConnection::AssociatedData data3 = {}; + local_router_.AddConnection(vc3_, std::move(data3)); + EXPECT_TRUE(local_router_.GetConnectionData(vc1_)); + EXPECT_TRUE(local_router_.GetConnectionData(vc2_)); + EXPECT_TRUE(local_router_.GetConnectionData(vc3_)); +} + +TEST_F(VirtualConnectionRouterTest, RemoveConnections) { + VirtualConnection::AssociatedData data1 = {}; + VirtualConnection::AssociatedData data2 = {}; + VirtualConnection::AssociatedData data3 = {}; + + local_router_.AddConnection(vc1_, std::move(data1)); + local_router_.AddConnection(vc2_, std::move(data2)); + local_router_.AddConnection(vc3_, std::move(data3)); + + EXPECT_TRUE(local_router_.RemoveConnection( + vc1_, VirtualConnection::CloseReason::kClosedBySelf)); + EXPECT_FALSE(local_router_.GetConnectionData(vc1_)); + EXPECT_TRUE(local_router_.GetConnectionData(vc2_)); + EXPECT_TRUE(local_router_.GetConnectionData(vc3_)); + + EXPECT_TRUE(local_router_.RemoveConnection( + vc2_, VirtualConnection::CloseReason::kClosedBySelf)); + EXPECT_FALSE(local_router_.GetConnectionData(vc1_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc2_)); + EXPECT_TRUE(local_router_.GetConnectionData(vc3_)); + + EXPECT_TRUE(local_router_.RemoveConnection( + vc3_, VirtualConnection::CloseReason::kClosedBySelf)); + EXPECT_FALSE(local_router_.GetConnectionData(vc1_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc2_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc3_)); + + EXPECT_FALSE(local_router_.RemoveConnection( + vc1_, VirtualConnection::CloseReason::kClosedBySelf)); + EXPECT_FALSE(local_router_.RemoveConnection( + vc2_, VirtualConnection::CloseReason::kClosedBySelf)); + EXPECT_FALSE(local_router_.RemoveConnection( + vc3_, VirtualConnection::CloseReason::kClosedBySelf)); +} + +TEST_F(VirtualConnectionRouterTest, RemoveConnectionsByIds) { + VirtualConnection::AssociatedData data1 = {}; + VirtualConnection::AssociatedData data2 = {}; + VirtualConnection::AssociatedData data3 = {}; + + local_router_.AddConnection(vc1_, std::move(data1)); + local_router_.AddConnection(vc2_, std::move(data2)); + local_router_.AddConnection(vc3_, std::move(data3)); + + local_router_.RemoveConnectionsByLocalId("local1"); + EXPECT_FALSE(local_router_.GetConnectionData(vc1_)); + EXPECT_TRUE(local_router_.GetConnectionData(vc2_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc3_)); + + data1 = {}; + data2 = {}; + data3 = {}; + local_router_.AddConnection(vc1_, std::move(data1)); + local_router_.AddConnection(vc2_, std::move(data2)); + local_router_.AddConnection(vc3_, std::move(data3)); + local_router_.RemoveConnectionsBySocketId(76); + EXPECT_TRUE(local_router_.GetConnectionData(vc1_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc2_)); + EXPECT_TRUE(local_router_.GetConnectionData(vc3_)); + + local_router_.RemoveConnectionsBySocketId(75); + EXPECT_FALSE(local_router_.GetConnectionData(vc1_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc2_)); + EXPECT_FALSE(local_router_.GetConnectionData(vc3_)); +} + TEST_F(VirtualConnectionRouterTest, LocalIdHandler) { MockCastMessageHandler mock_message_handler; local_router_.AddHandlerForLocalId("receiver-1234", &mock_message_handler); - local_manager_.AddConnection(VirtualConnection{"receiver-1234", "sender-9873", - local_socket_->socket_id()}, - {}); + local_router_.AddConnection(VirtualConnection{"receiver-1234", "sender-9873", + local_socket_->socket_id()}, + {}); CastMessage message; message.set_protocol_version( @@ -84,9 +190,9 @@ TEST_F(VirtualConnectionRouterTest, LocalIdHandler) { TEST_F(VirtualConnectionRouterTest, RemoveLocalIdHandler) { MockCastMessageHandler mock_message_handler; local_router_.AddHandlerForLocalId("receiver-1234", &mock_message_handler); - local_manager_.AddConnection(VirtualConnection{"receiver-1234", "sender-9873", - local_socket_->socket_id()}, - {}); + local_router_.AddConnection(VirtualConnection{"receiver-1234", "sender-9873", + local_socket_->socket_id()}, + {}); CastMessage message; message.set_protocol_version( @@ -108,16 +214,15 @@ TEST_F(VirtualConnectionRouterTest, RemoveLocalIdHandler) { } TEST_F(VirtualConnectionRouterTest, SendMessage) { - local_manager_.AddConnection(VirtualConnection{"receiver-1234", "sender-4321", - local_socket_->socket_id()}, - {}); + local_router_.AddConnection(VirtualConnection{"receiver-1234", "sender-4321", + local_socket_->socket_id()}, + {}); MockCastMessageHandler destination; remote_router_.AddHandlerForLocalId("sender-4321", &destination); - remote_manager_.AddConnection( - VirtualConnection{"sender-4321", "receiver-1234", - remote_socket_->socket_id()}, - {}); + remote_router_.AddConnection(VirtualConnection{"sender-4321", "receiver-1234", + remote_socket_->socket_id()}, + {}); CastMessage message; message.set_protocol_version( @@ -142,15 +247,15 @@ TEST_F(VirtualConnectionRouterTest, SendMessage) { } TEST_F(VirtualConnectionRouterTest, CloseSocketRemovesVirtualConnections) { - local_manager_.AddConnection(VirtualConnection{"receiver-1234", "sender-4321", - local_socket_->socket_id()}, - {}); + local_router_.AddConnection(VirtualConnection{"receiver-1234", "sender-4321", + local_socket_->socket_id()}, + {}); EXPECT_CALL(mock_error_handler_, OnClose(local_socket_)).Times(1); int id = local_socket_->socket_id(); local_router_.CloseSocket(id); - EXPECT_FALSE(local_manager_.GetConnectionData( + EXPECT_FALSE(local_router_.GetConnectionData( VirtualConnection{"receiver-1234", "sender-4321", id})); } |