Merge pull request #7647

d7b74a4 Tests: Fix test node_server.bind_same_p2p_port from randomly crashing (mj-xmr)
This commit is contained in:
luigi1111 2021-04-06 12:25:41 -05:00
commit f6e63ef260
No known key found for this signature in database
GPG key ID: F4ACA0183641E010

View file

@ -294,6 +294,18 @@ TEST(node_server, bind_same_p2p_port)
boost::program_options::variables_map vm; boost::program_options::variables_map vm;
boost::program_options::store(boost::program_options::parse_command_line(1, argv, desc_options), vm); boost::program_options::store(boost::program_options::parse_command_line(1, argv, desc_options), vm);
/*
Reason for choosing '127.0.0.2' as the IP:
A TCP local socket address that has been bound is unavailable for some time after closing, unless the SO_REUSEADDR flag has been set.
That's why connections with automatically assigned source port 48080/58080 from previous test blocks the next to bind acceptor
so solution is to either set reuse_addr option for each socket in all tests
or use ip different from localhost for acceptors in order to not interfere with automatically assigned source endpoints
Relevant part about REUSEADDR from man:
https://www.man7.org/linux/man-pages/man7/ip.7.html
*/
vm.find(nodetool::arg_p2p_bind_ip.name)->second = boost::program_options::variable_value(std::string("127.0.0.2"), false);
vm.find(nodetool::arg_p2p_bind_port.name)->second = boost::program_options::variable_value(std::string(port), false); vm.find(nodetool::arg_p2p_bind_port.name)->second = boost::program_options::variable_value(std::string(port), false);
boost::program_options::notify(vm); boost::program_options::notify(vm);