Skip to content

Commit 79792d2

Browse files
Improve Blackbox TCP tests suite (#5467) (#5474)
* Refs #22441: Avoid running duplicated TCP tests Signed-off-by: cferreiragonz <[email protected]> * Refs #22441: Avoid using parametrized test Signed-off-by: cferreiragonz <[email protected]> * Refs #22441: Equal operator test Signed-off-by: cferreiragonz <[email protected]> --------- Signed-off-by: cferreiragonz <[email protected]> (cherry picked from commit 0c799f4) Co-authored-by: Carlos Ferreira González <[email protected]>
1 parent efed5be commit 79792d2

File tree

1 file changed

+114
-124
lines changed

1 file changed

+114
-124
lines changed

test/blackbox/common/BlackboxTestsTransportTCP.cpp

+114-124
Original file line numberDiff line numberDiff line change
@@ -525,98 +525,92 @@ TEST_P(TransportTCP, TCPLocalhost)
525525
// Test for ==operator TCPTransportDescriptor is not required as it is an abstract class and in TCPv6 is same method
526526
// Test for copy TCPTransportDescriptor is not required as it is an abstract class and in TCPv6 is same method
527527

528-
// Test == operator for TCPv4
529-
TEST_P(TransportTCP, TCPv4_equal_operator)
528+
// Test == operator for TCPv4/v6
529+
TEST_P(TransportTCP, TCP_equal_operator)
530530
{
531-
// TCPv4TransportDescriptor
532-
eprosima::fastdds::rtps::TCPv4TransportDescriptor tcpv4_transport_1;
533-
eprosima::fastdds::rtps::TCPv4TransportDescriptor tcpv4_transport_2;
534-
535-
// Compare equal in defult values
536-
ASSERT_EQ(tcpv4_transport_1, tcpv4_transport_2);
537-
538-
// Modify default values in 1
539-
tcpv4_transport_1.set_WAN_address("80.80.99.45");
540-
541-
ASSERT_FALSE(tcpv4_transport_1 == tcpv4_transport_2); // operator== != operator!=, using operator== == false instead
542-
543-
// Modify default values in 2
544-
tcpv4_transport_2.set_WAN_address("80.80.99.45");
545-
546-
ASSERT_EQ(tcpv4_transport_1, tcpv4_transport_2);
531+
if (use_ipv6)
532+
{
533+
// TCPv6TransportDescriptor
534+
TCPv6TransportDescriptor transport1;
535+
TCPv6TransportDescriptor transport2;
536+
// Compare equal in defult values
537+
ASSERT_EQ(transport1, transport2);
538+
539+
// Modify some default values in 1
540+
transport1.enable_tcp_nodelay = !transport1.enable_tcp_nodelay; // change default value
541+
transport1.max_logical_port = transport1.max_logical_port + 10; // change default value
542+
transport1.add_listener_port(123u * 98u);
543+
ASSERT_FALSE(transport1 == transport2); // operator== != operator!=, using operator== == false instead
544+
545+
// Modify some default values in 2
546+
transport2.enable_tcp_nodelay = !transport2.enable_tcp_nodelay; // change default value
547+
transport2.max_logical_port = transport2.max_logical_port + 10; // change default value
548+
transport2.add_listener_port(123u * 98u);
549+
ASSERT_EQ(transport1, transport2);
550+
}
551+
else
552+
{
553+
// TCPv4TransportDescriptor
554+
TCPv4TransportDescriptor transport1;
555+
TCPv4TransportDescriptor transport2;
556+
// Compare equal in defult values
557+
ASSERT_EQ(transport1, transport2);
558+
559+
// Modify default values in 1
560+
transport1.set_WAN_address("80.80.99.45");
561+
ASSERT_FALSE(transport1 == transport2); // operator== != operator!=, using operator== == false instead
562+
563+
// Modify default values in 2
564+
transport2.set_WAN_address("80.80.99.45");
565+
ASSERT_EQ(transport1, transport2);
566+
}
547567
}
548568

549-
// Test copy constructor and copy assignment for TCPv4
550-
TEST_P(TransportTCP, TCPv4_copy)
569+
// Test copy constructor and copy assignment for TCPv4/v6
570+
TEST_P(TransportTCP, TCP_copy)
551571
{
552-
eprosima::fastdds::rtps::TCPv4TransportDescriptor tcpv4_transport;
553-
tcpv4_transport.set_WAN_address("80.80.99.45");
572+
if (use_ipv6)
573+
{
574+
// Change some varibles in order to check the non default creation
575+
TCPv6TransportDescriptor tcpv6_transport;
576+
tcpv6_transport.enable_tcp_nodelay = !tcpv6_transport.enable_tcp_nodelay; // change default value
577+
tcpv6_transport.max_logical_port = tcpv6_transport.max_logical_port + 10; // change default value
578+
tcpv6_transport.add_listener_port(123u * 98u);
579+
// Copy constructor
580+
TCPv6TransportDescriptor tcpv6_transport_copy_constructor(tcpv6_transport);
581+
EXPECT_EQ(tcpv6_transport, tcpv6_transport_copy_constructor);
582+
583+
// Copy assignment
584+
TCPv6TransportDescriptor tcpv6_transport_copy = tcpv6_transport;
585+
EXPECT_EQ(tcpv6_transport_copy, tcpv6_transport);
586+
}
587+
else
588+
{
589+
TCPv4TransportDescriptor tcpv4_transport;
590+
tcpv4_transport.set_WAN_address("80.80.99.45");
554591

555-
// Copy constructor
556-
eprosima::fastdds::rtps::TCPv4TransportDescriptor tcpv4_transport_copy_constructor(tcpv4_transport);
557-
EXPECT_EQ(tcpv4_transport, tcpv4_transport_copy_constructor);
592+
// Copy constructor
593+
TCPv4TransportDescriptor tcpv4_transport_copy_constructor(tcpv4_transport);
594+
EXPECT_EQ(tcpv4_transport, tcpv4_transport_copy_constructor);
558595

559-
// Copy assignment
560-
eprosima::fastdds::rtps::TCPv4TransportDescriptor tcpv4_transport_copy = tcpv4_transport;
561-
EXPECT_EQ(tcpv4_transport_copy, tcpv4_transport);
596+
// Copy assignment
597+
TCPv4TransportDescriptor tcpv4_transport_copy = tcpv4_transport;
598+
EXPECT_EQ(tcpv4_transport_copy, tcpv4_transport);
599+
}
562600
}
563601

564602
// Test get_WAN_address member function
565-
TEST_P(TransportTCP, TCPv4_get_WAN_address)
603+
TEST(TransportTCP, TCPv4_get_WAN_address)
566604
{
567605
// TCPv4TransportDescriptor
568606
eprosima::fastdds::rtps::TCPv4TransportDescriptor tcpv4_transport;
569607
tcpv4_transport.set_WAN_address("80.80.99.45");
570608
ASSERT_EQ(tcpv4_transport.get_WAN_address(), "80.80.99.45");
571609
}
572610

573-
// Test == operator for TCPv6
574-
TEST_P(TransportTCP, TCPv6_equal_operator)
575-
{
576-
// TCPv6TransportDescriptor
577-
eprosima::fastdds::rtps::TCPv6TransportDescriptor tcpv6_transport_1;
578-
eprosima::fastdds::rtps::TCPv6TransportDescriptor tcpv6_transport_2;
579-
580-
// Compare equal in defult values
581-
ASSERT_EQ(tcpv6_transport_1, tcpv6_transport_2);
582-
583-
// Modify some default values in 1
584-
tcpv6_transport_1.enable_tcp_nodelay = !tcpv6_transport_1.enable_tcp_nodelay; // change default value
585-
tcpv6_transport_1.max_logical_port = tcpv6_transport_1.max_logical_port + 10; // change default value
586-
tcpv6_transport_1.add_listener_port(123u * 98u);
587-
588-
ASSERT_FALSE(tcpv6_transport_1 == tcpv6_transport_2); // operator== != operator!=, using operator== == false instead
589-
590-
591-
// Modify some default values in 2
592-
tcpv6_transport_2.enable_tcp_nodelay = !tcpv6_transport_2.enable_tcp_nodelay; // change default value
593-
tcpv6_transport_2.max_logical_port = tcpv6_transport_2.max_logical_port + 10; // change default value
594-
tcpv6_transport_2.add_listener_port(123u * 98u);
595-
596-
ASSERT_EQ(tcpv6_transport_1, tcpv6_transport_2);
597-
}
598-
599-
// Test copy constructor and copy assignment for TCPv6
600-
TEST_P(TransportTCP, TCPv6_copy)
601-
{
602-
// Change some varibles in order to check the non default creation
603-
eprosima::fastdds::rtps::TCPv6TransportDescriptor tcpv6_transport;
604-
tcpv6_transport.enable_tcp_nodelay = !tcpv6_transport.enable_tcp_nodelay; // change default value
605-
tcpv6_transport.max_logical_port = tcpv6_transport.max_logical_port + 10; // change default value
606-
tcpv6_transport.add_listener_port(123u * 98u);
607-
608-
// Copy constructor
609-
eprosima::fastdds::rtps::TCPv6TransportDescriptor tcpv6_transport_copy_constructor(tcpv6_transport);
610-
EXPECT_EQ(tcpv6_transport, tcpv6_transport_copy_constructor);
611-
612-
// Copy assignment
613-
eprosima::fastdds::rtps::TCPv6TransportDescriptor tcpv6_transport_copy = tcpv6_transport;
614-
EXPECT_EQ(tcpv6_transport_copy, tcpv6_transport);
615-
}
616-
617611
// Test connection is successfully restablished after dropping and relaunching a TCP client (requester)
618612
// Issue -> https://github.com/eProsima/Fast-DDS/issues/2409
619-
TEST(TransportTCP, Client_reconnection)
613+
TEST_P(TransportTCP, Client_reconnection)
620614
{
621615
TCPReqRepHelloWorldReplier* replier;
622616
TCPReqRepHelloWorldRequester* requester;
@@ -675,52 +669,35 @@ TEST(TransportTCP, Client_reconnection)
675669
delete requester;
676670
}
677671

678-
// Test zero listening port for TCPv4
679-
TEST_P(TransportTCP, TCPv4_autofill_port)
672+
// Test zero listening port for TCPv4/v6
673+
TEST_P(TransportTCP, TCP_autofill_port)
680674
{
681675
PubSubReader<HelloWorldPubSubType> p1(TEST_TOPIC_NAME);
682676
PubSubReader<HelloWorldPubSubType> p2(TEST_TOPIC_NAME);
683677

684-
// Add TCP Transport with listening port 0
685-
auto p1_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
686-
p1_transport->add_listener_port(0);
687-
p1.disable_builtin_transport().add_user_transport_to_pparams(p1_transport);
688-
p1.init();
689-
ASSERT_TRUE(p1.isInitialized());
690-
691-
// Add TCP Transport with listening port different from 0
692-
uint16_t port = 12345;
693-
auto p2_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
694-
p2_transport->add_listener_port(port);
695-
p2.disable_builtin_transport().add_user_transport_to_pparams(p2_transport);
696-
p2.init();
697-
ASSERT_TRUE(p2.isInitialized());
698-
699-
LocatorList_t p1_locators;
700-
p1.get_native_reader().get_listening_locators(p1_locators);
701-
EXPECT_TRUE(IPLocator::getPhysicalPort(p1_locators.begin()[0]) != 0);
702-
703-
LocatorList_t p2_locators;
704-
p2.get_native_reader().get_listening_locators(p2_locators);
705-
EXPECT_TRUE(IPLocator::getPhysicalPort(p2_locators.begin()[0]) == port);
706-
}
707-
708-
// Test zero listening port for TCPv6
709-
TEST_P(TransportTCP, TCPv6_autofill_port)
710-
{
711-
PubSubReader<HelloWorldPubSubType> p1(TEST_TOPIC_NAME);
712-
PubSubReader<HelloWorldPubSubType> p2(TEST_TOPIC_NAME);
678+
std::shared_ptr<TCPTransportDescriptor> p1_transport;
679+
std::shared_ptr<TCPTransportDescriptor> p2_transport;
680+
if (use_ipv6)
681+
{
682+
// TCPv6TransportDescriptor
683+
p1_transport = std::make_shared<TCPv6TransportDescriptor>();
684+
p2_transport = std::make_shared<TCPv6TransportDescriptor>();
685+
}
686+
else
687+
{
688+
// TCPv4TransportDescriptor
689+
p1_transport = std::make_shared<TCPv4TransportDescriptor>();
690+
p2_transport = std::make_shared<TCPv4TransportDescriptor>();
691+
}
713692

714693
// Add TCP Transport with listening port 0
715-
auto p1_transport = std::make_shared<eprosima::fastdds::rtps::TCPv6TransportDescriptor>();
716694
p1_transport->add_listener_port(0);
717695
p1.disable_builtin_transport().add_user_transport_to_pparams(p1_transport);
718696
p1.init();
719697
ASSERT_TRUE(p1.isInitialized());
720698

721699
// Add TCP Transport with listening port different from 0
722700
uint16_t port = 12345;
723-
auto p2_transport = std::make_shared<eprosima::fastdds::rtps::TCPv6TransportDescriptor>();
724701
p2_transport->add_listener_port(port);
725702
p2.disable_builtin_transport().add_user_transport_to_pparams(p2_transport);
726703
p2.init();
@@ -852,18 +829,9 @@ TEST_P(TransportTCP, multiple_listening_ports)
852829
uint16_t server_port_1 = 10000;
853830
uint16_t server_port_2 = 10001;
854831

855-
std::shared_ptr<eprosima::fastdds::rtps::TCPTransportDescriptor> server_transport;
856-
if (use_ipv6)
857-
{
858-
server_transport = std::make_shared<eprosima::fastdds::rtps::TCPv6TransportDescriptor>();
859-
}
860-
else
861-
{
862-
server_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
863-
}
864-
server_transport->add_listener_port(server_port_1);
865-
server_transport->add_listener_port(server_port_2);
866-
server->disable_builtin_transport().add_user_transport_to_pparams(server_transport).init();
832+
test_transport_->add_listener_port(server_port_1);
833+
test_transport_->add_listener_port(server_port_2);
834+
server->disable_builtin_transport().add_user_transport_to_pparams(test_transport_).init();
867835
ASSERT_TRUE(server->isInitialized());
868836

869837
// Create two clients each one connecting to a different port
@@ -1334,18 +1302,40 @@ TEST_P(TransportTCP, TCP_initial_peers_connection)
13341302
PubSubReader<HelloWorldPubSubType> p3(TEST_TOPIC_NAME);
13351303

13361304
// Add TCP Transport with listening port
1337-
auto p1_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
1305+
std::shared_ptr<TCPTransportDescriptor> p1_transport;
1306+
std::shared_ptr<TCPTransportDescriptor> p2_transport;
1307+
std::shared_ptr<TCPTransportDescriptor> p3_transport;
1308+
if (use_ipv6)
1309+
{
1310+
// TCPv6TransportDescriptor
1311+
p1_transport = std::make_shared<TCPv6TransportDescriptor>();
1312+
p2_transport = std::make_shared<TCPv6TransportDescriptor>();
1313+
p3_transport = std::make_shared<TCPv6TransportDescriptor>();
1314+
}
1315+
else
1316+
{
1317+
// TCPv4TransportDescriptor
1318+
p1_transport = std::make_shared<TCPv4TransportDescriptor>();
1319+
p2_transport = std::make_shared<TCPv4TransportDescriptor>();
1320+
p3_transport = std::make_shared<TCPv4TransportDescriptor>();
1321+
}
13381322
p1_transport->add_listener_port(global_port);
1339-
auto p2_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
13401323
p2_transport->add_listener_port(global_port + 1);
1341-
auto p3_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
13421324
p3_transport->add_listener_port(global_port - 1);
13431325

13441326
// Add initial peer to clients
13451327
Locator_t initialPeerLocator;
1346-
initialPeerLocator.kind = LOCATOR_KIND_TCPv4;
1347-
IPLocator::setIPv4(initialPeerLocator, 127, 0, 0, 1);
13481328
initialPeerLocator.port = global_port;
1329+
if (use_ipv6)
1330+
{
1331+
initialPeerLocator.kind = LOCATOR_KIND_TCPv6;
1332+
IPLocator::setIPv6(initialPeerLocator, "::1");
1333+
}
1334+
else
1335+
{
1336+
initialPeerLocator.kind = LOCATOR_KIND_TCPv4;
1337+
IPLocator::setIPv4(initialPeerLocator, 127, 0, 0, 1);
1338+
}
13491339
LocatorList_t initial_peer_list;
13501340
initial_peer_list.push_back(initialPeerLocator);
13511341

0 commit comments

Comments
 (0)