ipc_tests.cpp
1 // Copyright (c) 2023 The Bitcoin Core developers 2 // Distributed under the MIT software license, see the accompanying 3 // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 5 #include <ipc/process.h> 6 #include <test/ipc_test.h> 7 8 #include <test/util/setup_common.h> 9 #include <boost/test/unit_test.hpp> 10 11 BOOST_FIXTURE_TEST_SUITE(ipc_tests, BasicTestingSetup) 12 BOOST_AUTO_TEST_CASE(ipc_tests) 13 { 14 IpcPipeTest(); 15 IpcSocketPairTest(); 16 IpcSocketTest(m_args.GetDataDirNet()); 17 } 18 19 // Test address parsing. 20 BOOST_AUTO_TEST_CASE(parse_address_test) 21 { 22 std::unique_ptr<ipc::Process> process{ipc::MakeProcess()}; 23 fs::path datadir{"/var/empty/notexist"}; 24 auto check_notexist{[](const std::system_error& e) { return e.code() == std::errc::no_such_file_or_directory; }}; 25 auto check_address{[&](std::string address, std::string expect_address, std::string expect_error) { 26 if (expect_error.empty()) { 27 BOOST_CHECK_EXCEPTION(process->connect(datadir, "test_bitcoin", address), std::system_error, check_notexist); 28 } else { 29 BOOST_CHECK_EXCEPTION(process->connect(datadir, "test_bitcoin", address), std::invalid_argument, HasReason(expect_error)); 30 } 31 BOOST_CHECK_EQUAL(address, expect_address); 32 }}; 33 check_address("unix", "unix:/var/empty/notexist/test_bitcoin.sock", ""); 34 check_address("unix:", "unix:/var/empty/notexist/test_bitcoin.sock", ""); 35 check_address("unix:path.sock", "unix:/var/empty/notexist/path.sock", ""); 36 check_address("unix:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.sock", 37 "unix:/var/empty/notexist/0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.sock", 38 "Unix address path \"/var/empty/notexist/0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.sock\" exceeded maximum socket path length"); 39 check_address("invalid", "invalid", "Unrecognized address 'invalid'"); 40 } 41 42 BOOST_AUTO_TEST_SUITE_END()