Summary
Right now if you run test_runner.py
on all the targets it is hard to tell how far you are in the progress even with --loglevel=DEBUG
on. As it just spits out the target that was completed an no info on how many targets are left.
This change gives you a count down to the last target being run and some additional info provided by libfuzzer
This also applies when you use -g/--generate
and --m_dir
Note
I can append this change to either change the percent increments or move it to the DEBUG
logs instead if preferred
Example run
0./build_fuzz/test/fuzz/test_runner.py ../qa-assets/fuzz_corpora
1219 of 219 detected fuzz target(s) selected: addition_overflow addr_info_deserialize address_deserialize addrman addrman_serdeser asmap asmap_direct autofile banman base32_encode_decode base58_encode_decode base58check_encode_decode base64_encode_decode bech32_random_decode bech32_roundtrip bip324_cipher_roundtrip bip324_ecdh bitdeque bitset block block_deserialize block_file_info_deserialize block_filter_deserialize block_header block_header_and_short_txids_deserialize block_index blockfilter blockheader_deserialize blocklocator_deserialize blockmerkleroot blocktransactions_deserialize blocktransactionsrequest_deserialize blockundo_deserialize bloom_filter bloomfilter_deserialize buffered_file build_and_compare_feerate_diagram chacha20_split_crypt chacha20_split_keystream chain checkqueue clusterlin_ancestor_finder clusterlin_chunking clusterlin_components clusterlin_depgraph_serialization clusterlin_depgraph_sim clusterlin_fix_linearization clusterlin_linearization_chunking clusterlin_linearize clusterlin_make_connected clusterlin_merge clusterlin_postlinearize clusterlin_postlinearize_moved_leaf clusterlin_postlinearize_tree clusterlin_search_finder coin_grinder coin_grinder_is_optimal coincontrol coins_deserialize coins_view coinscache_sim coinselection_bnb coinselection_knapsack coinselection_srd connman crypter crypto crypto_aeadchacha20poly1305 crypto_aes256 crypto_aes256cbc crypto_chacha20 crypto_common crypto_diff_fuzz_chacha20 crypto_fschacha20 crypto_fschacha20poly1305 crypto_hkdf_hmac_sha256_l32 crypto_poly1305 crypto_poly1305_split cuckoocache data_stream_addr_man decode_tx descriptor_parse diskblockindex_deserialize ellswift_roundtrip ephemeral_package_eval eval_script fee_rate fee_rate_deserialize feefrac fees flat_file_pos_deserialize flatfile float golomb_rice headers_sync_state hex http_request i2p integer inv_deserialize key key_io key_origin_info_deserialize kitchen_sink load_external_block_file local_address locale merkle_block_deserialize merkleblock message messageheader_deserialize mini_miner mini_miner_selection miniscript_script miniscript_smart miniscript_stable miniscript_string minisketch mocked_descriptor_parse muhash multiplication_overflow natpmp_request_port_map net net_permissions netaddr_deserialize netaddress netbase_dns_lookup node_eviction num3072_inv num3072_mul out_point_deserialize overflow p2p_handshake p2p_headers_presync p2p_transport_bidirectional p2p_transport_bidirectional_v1v2 p2p_transport_bidirectional_v2 p2p_transport_serialization package_rbf parse_hd_keypath parse_iso8601 parse_numbers parse_script parse_univalue partial_merkle_tree_deserialize partially_downloaded_block partially_signed_transaction_deserialize pcp_request_port_map policy_estimator policy_estimator_io pool_resource pow pow_transition prefilled_transaction_deserialize prevector primitives_transaction process_message process_messages protocol psbt psbt_base64_decode psbt_input_deserialize psbt_output_deserialize pub_key_deserialize random rbf rolling_bloom_filter rpc script script_descriptor_cache script_deserialize script_flags script_format script_interpreter script_ops script_parsing script_sigcache script_sign scriptnum_ops scriptpubkeyman secp256k1_ec_seckey_import_export_der secp256k1_ecdsa_signature_parse_der_lax service_deserialize signature_checker signet snapshotmetadata_deserialize socks5 span str_printf string system timeoffsets torcontrol transaction tx_in tx_in_deserialize tx_out tx_package_eval tx_pool tx_pool_standard txdownloadman txdownloadman_impl txgraph txorphan txoutcompressor_deserialize txrequest txundo_deserialize uint160_deserialize uint256_deserialize utxo_snapshot utxo_snapshot_invalid utxo_total_supply validation_load_mempool vecdeque versionbits wallet_bdb_parser wallet_create_transaction wallet_fees wallet_notifications
2(1/219) addition_overflow [#1650](/bitcoin-bitcoin/1650/) DONE cov: 338 ft: 440 corp: 70/2760b lim: 62 exec/s: 0 rss: 141Mb
3(2/219) address_deserialize [#2709](/bitcoin-bitcoin/2709/) DONE cov: 681 ft: 1394 corp: 131/4575b lim: 272 exec/s: 0 rss: 165Mb
4(3/219) addr_info_deserialize [#2989](/bitcoin-bitcoin/2989/) DONE cov: 530 ft: 942 corp: 146/4619b lim: 262 exec/s: 0 rss: 168Mb
5(4/219) asmap [#1341](/bitcoin-bitcoin/1341/) DONE cov: 536 ft: 1403 corp: 181/5182b lim: 136 exec/s: 0 rss: 142Mb
6(5/219) asmap_direct [#435](/bitcoin-bitcoin/435/) DONE cov: 237 ft: 1147 corp: 143/42Kb lim: 8290 exec/s: 435 rss: 171Mb
7(6/219) autofile [#574](/bitcoin-bitcoin/574/) DONE cov: 501 ft: 3127 corp: 277/4181Kb lim: 1041292 exec/s: 574 rss: 508Mb
8(7/219) base32_encode_decode [#928](/bitcoin-bitcoin/928/) DONE cov: 159 ft: 429 corp: 51/3070b lim: 888 exec/s: 0 rss: 134Mb
9(8/219) base58_encode_decode [#1413](/bitcoin-bitcoin/1413/) DONE cov: 260 ft: 868 corp: 159/2673b lim: 102 exec/s: 0 rss: 141Mb
10(9/219) base58check_encode_decode [#1107](/bitcoin-bitcoin/1107/) DONE cov: 405 ft: 1236 corp: 149/4043b lim: 121 exec/s: 0 rss: 141Mb
11(10/219) base64_encode_decode [#518](/bitcoin-bitcoin/518/) DONE cov: 140 ft: 368 corp: 31/1515b lim: 220 exec/s: 0 rss: 128Mb
12(11/219) bech32_random_decode [#684](/bitcoin-bitcoin/684/) DONE cov: 310 ft: 944 corp: 136/2388b lim: 91 exec/s: 0 rss: 130Mb
13(12/219) bech32_roundtrip [#791](/bitcoin-bitcoin/791/) DONE cov: 287 ft: 688 corp: 86/2012b lim: 130 exec/s: 0 rss: 134Mb