Skip to content

Commit 9335bc6

Browse files
authored
Merge pull request #697 from evoskuil/master
Use test blocks from database.
2 parents f8e9b35 + fe0f71e commit 9335bc6

27 files changed

Lines changed: 706 additions & 103 deletions

src/protocols/electrum/protocol_electrum_addresses.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,19 +121,27 @@ void protocol_electrum::handle_blockchain_address_subscribe(const code& ec,
121121
// utilities
122122
// ----------------------------------------------------------------------------
123123
// A p2pk output does not produce a bitcoin payment address, as there is no
124-
// form of a p2pk bitcoin payment address. However a
124+
// form of a p2pk bitcoin payment address.
125125

126+
// A failed parse or default initialized script returns null_hash.
126127
hash_digest protocol_electrum::extract_scripthash(
127128
const std::string& address) const NOEXCEPT
128129
{
129-
// A failed parse or default initialized script hashes to null_hash.
130-
return payment_address(address).output_script(p2kh_, p2sh_).hash();
130+
const auto payment = payment_address(address);
131+
if (!payment)
132+
return {};
133+
134+
const auto script = payment.output_script(p2kh_, p2sh_);
135+
if (!script.is_valid())
136+
return {};
137+
138+
return script.hash();
131139
}
132140

141+
// A failure to parse as p2sh or p2kh returns invalid object.
133142
payment_address protocol_electrum::extract_address(
134143
const chain::script& script) const NOEXCEPT
135144
{
136-
// A failure to parse as p2sh or p2kh returns invalid object.
137145
return payment_address::extract_output(script, p2kh_, p2sh_);
138146
}
139147

test/protocols/bitcoind/bitcoind.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,13 @@
2121
#include "bitcoind.hpp"
2222
#include <future>
2323

24-
bitcoind_setup_fixture::bitcoind_setup_fixture()
25-
: config_{ system::chain::selection::mainnet, web_pages, web_pages },
24+
bitcoind_setup_fixture::bitcoind_setup_fixture(const initializer& setup)
25+
: config_
26+
{
27+
system::chain::selection::mainnet,
28+
test::web_pages,
29+
test::web_pages
30+
},
2631
store_
2732
{
2833
[&]() NOEXCEPT -> const database::settings&
@@ -49,11 +54,11 @@ bitcoind_setup_fixture::bitcoind_setup_fixture()
4954
node_settings.minimum_fee_rate = 99.0;
5055
network_settings.inbound.connections = 0;
5156
network_settings.outbound.connections = 0;
52-
auto ec = store_.create([](auto, auto) {});
5357

5458
// Create and populate the store.
59+
auto ec = store_.create([](auto, auto) {});
5560
BOOST_REQUIRE_MESSAGE(!ec, ec.message());
56-
BOOST_REQUIRE_MESSAGE(setup_ten_block_store(query_), "bitcoind initialize");
61+
BOOST_REQUIRE_MESSAGE(setup(query_), "bitcoind initialize");
5762

5863
// Run the server.
5964
std::promise<code> running{};

test/protocols/bitcoind/bitcoind.hpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,17 @@ struct bitcoind_setup_fixture
3030
{
3131
DELETE_COPY_MOVE(bitcoind_setup_fixture);
3232

33-
bitcoind_setup_fixture();
33+
using initializer = std::function<bool(test::query_t&)>;
34+
explicit bitcoind_setup_fixture(const initializer& setup);
3435
~bitcoind_setup_fixture();
3536

3637
// bitcoind does not implement any protocol version control or negotiation.
3738
boost::json::value get(const std::string& request);
3839

3940
protected:
4041
configuration config_;
41-
store_t store_;
42-
query_t query_;
42+
test::store_t store_;
43+
test::query_t query_;
4344

4445
private:
4546
network::logger log_;
@@ -48,4 +49,16 @@ struct bitcoind_setup_fixture
4849
boost::asio::ip::tcp::socket socket_{ io };
4950
};
5051

52+
struct bitcoind_ten_block_setup_fixture
53+
: bitcoind_setup_fixture
54+
{
55+
inline bitcoind_ten_block_setup_fixture()
56+
: bitcoind_setup_fixture([](test::query_t& query)
57+
{
58+
return test::setup_ten_block_store(query);
59+
})
60+
{
61+
}
62+
};
63+
5164
#endif

test/protocols/bitcoind/bitcoind_rest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
#include "../../test.hpp"
2020
#include "bitcoind.hpp"
2121

22-
BOOST_FIXTURE_TEST_SUITE(bitcoind_tests, bitcoind_setup_fixture)
22+
BOOST_FIXTURE_TEST_SUITE(bitcoind_tests, bitcoind_ten_block_setup_fixture)
2323

2424
BOOST_AUTO_TEST_SUITE_END()

test/protocols/bitcoind/bitcoind_rpc.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
#include "../../test.hpp"
2020
#include "bitcoind.hpp"
2121

22-
BOOST_FIXTURE_TEST_SUITE(bitcoind_tests, bitcoind_setup_fixture)
22+
BOOST_FIXTURE_TEST_SUITE(bitcoind_tests, bitcoind_ten_block_setup_fixture)
2323

2424
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)