Skip to content

Commit 72730d7

Browse files
cferreiragonzmergify[bot]
authored andcommitted
Improve Blackbox TCP tests suite (#5467)
* 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)
1 parent b0e1c69 commit 72730d7

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
@@ -524,98 +524,92 @@ TEST_P(TransportTCP, TCPLocalhost)
524524
// Test for ==operator TCPTransportDescriptor is not required as it is an abstract class and in TCPv6 is same method
525525
// Test for copy TCPTransportDescriptor is not required as it is an abstract class and in TCPv6 is same method
526526

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

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

554-
// Copy constructor
555-
eprosima::fastdds::rtps::TCPv4TransportDescriptor tcpv4_transport_copy_constructor(tcpv4_transport);
556-
EXPECT_EQ(tcpv4_transport, tcpv4_transport_copy_constructor);
591+
// Copy constructor
592+
TCPv4TransportDescriptor tcpv4_transport_copy_constructor(tcpv4_transport);
593+
EXPECT_EQ(tcpv4_transport, tcpv4_transport_copy_constructor);
557594

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

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

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

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

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

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

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

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

868836
// Create two clients each one connecting to a different port
@@ -1333,18 +1301,40 @@ TEST_P(TransportTCP, TCP_initial_peers_connection)
13331301
PubSubReader<HelloWorldPubSubType> p3(TEST_TOPIC_NAME);
13341302

13351303
// Add TCP Transport with listening port
1336-
auto p1_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
1304+
std::shared_ptr<TCPTransportDescriptor> p1_transport;
1305+
std::shared_ptr<TCPTransportDescriptor> p2_transport;
1306+
std::shared_ptr<TCPTransportDescriptor> p3_transport;
1307+
if (use_ipv6)
1308+
{
1309+
// TCPv6TransportDescriptor
1310+
p1_transport = std::make_shared<TCPv6TransportDescriptor>();
1311+
p2_transport = std::make_shared<TCPv6TransportDescriptor>();
1312+
p3_transport = std::make_shared<TCPv6TransportDescriptor>();
1313+
}
1314+
else
1315+
{
1316+
// TCPv4TransportDescriptor
1317+
p1_transport = std::make_shared<TCPv4TransportDescriptor>();
1318+
p2_transport = std::make_shared<TCPv4TransportDescriptor>();
1319+
p3_transport = std::make_shared<TCPv4TransportDescriptor>();
1320+
}
13371321
p1_transport->add_listener_port(global_port);
1338-
auto p2_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
13391322
p2_transport->add_listener_port(global_port + 1);
1340-
auto p3_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
13411323
p3_transport->add_listener_port(global_port - 1);
13421324

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

0 commit comments

Comments
 (0)