From 39c8b2b85b07d4e62d9b68bfad12910c51ee3eff Mon Sep 17 00:00:00 2001 From: Eric Passmore Date: Thu, 8 Feb 2024 06:55:06 -0800 Subject: [PATCH 1/7] bump to 5.0.1 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6417f2be0c..7d964d0d34 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ set( CXX_STANDARD_REQUIRED ON) set(VERSION_MAJOR 5) set(VERSION_MINOR 0) -set(VERSION_PATCH 0) +set(VERSION_PATCH 1) #set(VERSION_SUFFIX rc3) if(VERSION_SUFFIX) From a89b8603384b28e6c2fc28c20ac3406ba2dc87c7 Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Thu, 8 Feb 2024 13:48:40 -0500 Subject: [PATCH 2/7] use discrete ports for each test case to workaround defect --- plugins/http_plugin/tests/unit_tests.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/plugins/http_plugin/tests/unit_tests.cpp b/plugins/http_plugin/tests/unit_tests.cpp index c2ddbe6e25..49b37eb0eb 100644 --- a/plugins/http_plugin/tests/unit_tests.cpp +++ b/plugins/http_plugin/tests/unit_tests.cpp @@ -577,7 +577,7 @@ BOOST_AUTO_TEST_CASE(test_on_loopback) { BOOST_FIXTURE_TEST_CASE(bytes_in_flight, http_plugin_test_fixture) { http_plugin* http_plugin = init({"--plugin=eosio::http_plugin", - "--http-server-address=127.0.0.1:8888", + "--http-server-address=127.0.0.1:8891", "--http-max-bytes-in-flight-mb=64"}); BOOST_REQUIRE(http_plugin); @@ -600,10 +600,10 @@ BOOST_FIXTURE_TEST_CASE(bytes_in_flight, http_plugin_test_fixture) { //we can't control http_plugin's send buffer, but at least we can control our receive buffer size to help increase // chance of server blocking s.set_option(boost::asio::socket_base::receive_buffer_size(8*1024)); - s.connect(resolver.resolve("127.0.0.1", "8888")->endpoint()); + s.connect(resolver.resolve("127.0.0.1", "8891")->endpoint()); boost::beast::http::request req(boost::beast::http::verb::get, "/4megabyte", 11); req.keep_alive(true); - req.set(http::field::host, "127.0.0.1:8888"); + req.set(http::field::host, "127.0.0.1:8891"); boost::beast::http::write(s, req); } }; @@ -654,7 +654,7 @@ BOOST_FIXTURE_TEST_CASE(bytes_in_flight, http_plugin_test_fixture) { BOOST_FIXTURE_TEST_CASE(requests_in_flight, http_plugin_test_fixture) { http_plugin* http_plugin = init({"--plugin=eosio::http_plugin", - "--http-server-address=127.0.0.1:8888", + "--http-server-address=127.0.0.1:8892", "--http-max-in-flight-requests=16"}); BOOST_REQUIRE(http_plugin); @@ -671,10 +671,10 @@ BOOST_FIXTURE_TEST_CASE(requests_in_flight, http_plugin_test_fixture) { auto send_requests = [&](unsigned count) { for(unsigned i = 0; i < count; ++i) { boost::asio::ip::tcp::socket& s = connections.emplace_back(ctx, boost::asio::ip::tcp::v4()); - boost::asio::connect(s, resolver.resolve("127.0.0.1", "8888")); + boost::asio::connect(s, resolver.resolve("127.0.0.1", "8892")); boost::beast::http::request req(boost::beast::http::verb::get, "/doit", 11); req.keep_alive(true); - req.set(http::field::host, "127.0.0.1:8888"); + req.set(http::field::host, "127.0.0.1:8892"); boost::beast::http::write(s, req); } }; @@ -714,4 +714,7 @@ BOOST_FIXTURE_TEST_CASE(requests_in_flight, http_plugin_test_fixture) { r = scan_http_replies(); BOOST_REQUIRE_EQUAL(r[boost::beast::http::status::ok], 8u); connections.clear(); -} \ No newline at end of file +} + +//A warning for future tests: destruction of http_plugin_test_fixture sometimes does not destroy http_plugin's listeners. Tests +// added in the future should avoid reusing ports of other tests in http_plugin_unit_tests. \ No newline at end of file From ac88b89a23087e87195c6f4b3f64371c06bac81e Mon Sep 17 00:00:00 2001 From: greg7mdp Date: Thu, 15 Feb 2024 17:56:24 -0500 Subject: [PATCH 3/7] Remove broken `large-lib-test.py` --- tests/CMakeLists.txt | 5 -- tests/large-lib-test.py | 116 ---------------------------------------- 2 files changed, 121 deletions(-) delete mode 100755 tests/large-lib-test.py diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d52cbe1e2b..a3d56c50ae 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -47,7 +47,6 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/nodeos_producer_watermark_test.py ${C configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cli_test.py ${CMAKE_CURRENT_BINARY_DIR}/cli_test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ship_test.py ${CMAKE_CURRENT_BINARY_DIR}/ship_test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ship_streamer_test.py ${CMAKE_CURRENT_BINARY_DIR}/ship_streamer_test.py COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/large-lib-test.py ${CMAKE_CURRENT_BINARY_DIR}/large-lib-test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/lib_advance_test.py ${CMAKE_CURRENT_BINARY_DIR}/lib_advance_test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/http_plugin_test.py ${CMAKE_CURRENT_BINARY_DIR}/http_plugin_test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/p2p_high_latency_test.py ${CMAKE_CURRENT_BINARY_DIR}/p2p_high_latency_test.py COPYONLY) @@ -69,7 +68,6 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resource_monitor_plugin_test.py ${CMA configure_file(${CMAKE_CURRENT_SOURCE_DIR}/light_validation_sync_test.py ${CMAKE_CURRENT_BINARY_DIR}/light_validation_sync_test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/trace_plugin_test.py ${CMAKE_CURRENT_BINARY_DIR}/trace_plugin_test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/nested_container_multi_index_test.py ${CMAKE_CURRENT_BINARY_DIR}/nested_container_multi_index_test.py COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/large-lib-test.py ${CMAKE_CURRENT_BINARY_DIR}/large-lib-test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/auto_bp_peering_test.py ${CMAKE_CURRENT_BINARY_DIR}/auto_bp_peering_test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/auto_bp_peering_test_shape.json ${CMAKE_CURRENT_BINARY_DIR}/auto_bp_peering_test_shape.json COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gelf_test.py ${CMAKE_CURRENT_BINARY_DIR}/gelf_test.py COPYONLY) @@ -243,9 +241,6 @@ set_property(TEST nodeos_retry_transaction_lr_test PROPERTY LABELS long_running_ add_test(NAME cli_test COMMAND tests/cli_test.py WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST cli_test PROPERTY LABELS nonparallelizable_tests) -add_test(NAME larger_lib_test COMMAND tests/large-lib-test.py ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -set_property(TEST larger_lib_test PROPERTY LABELS nonparallelizable_tests) - add_test(NAME lib_advance_test COMMAND tests/lib_advance_test.py -v ${UNSHARE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) set_property(TEST lib_advance_test PROPERTY LABELS nonparallelizable_tests) diff --git a/tests/large-lib-test.py b/tests/large-lib-test.py deleted file mode 100755 index 6c5138b4b1..0000000000 --- a/tests/large-lib-test.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python3 - -import random -import signal -import time - -from TestHarness import Cluster, Node, ReturnType, TestHelper, Utils, WalletMgr -from TestHarness.Node import BlockType - -############################################################### -# large-lib-test -# -# Test LIB in a network will advance when an invalid larger LIB -# than current one is received from a speculative node. -# -############################################################### - - -Print=Utils.Print -errorExit=Utils.errorExit - -args=TestHelper.parse_args({"--kill-sig","--kill-count","--keep-logs" - ,"--dump-error-details","-v","--leave-running","--unshared" - }) -pnodes=1 -total_nodes=3 # first one is producer, and last two are speculative nodes -debug=args.v -dumpErrorDetails=args.dump_error_details -relaunchTimeout=10 -# Don't want to set too big, trying to reduce test time, but needs to be large enough for test to finish before -# restart re-creates this many blocks. -numBlocksToProduceBeforeRelaunch=80 -numBlocksToWaitBeforeChecking=20 - -Utils.Debug=debug -testSuccessful=False - -seed=1 -random.seed(seed) # Use a fixed seed for repeatability. -cluster=Cluster(unshared=args.unshared, keepRunning=args.leave_running, keepLogs=args.keep_logs) -walletMgr=WalletMgr(True) -cluster.setWalletMgr(walletMgr) - -def relaunchNode(node: Node, chainArg="", skipGenesis=True, relaunchAssertMessage="Fail to relaunch"): - isRelaunchSuccess=node.relaunch(chainArg=chainArg, timeout=relaunchTimeout, skipGenesis=skipGenesis) - time.sleep(1) # Give a second to replay or resync if needed - assert isRelaunchSuccess, relaunchAssertMessage - return isRelaunchSuccess - -try: - TestHelper.printSystemInfo("BEGIN") - - Print("Stand up cluster") - if cluster.launch( - pnodes=pnodes, - totalNodes=total_nodes, - totalProducers=1, - topo="mesh") is False: - errorExit("Failed to stand up eos cluster.") - - producingNode=cluster.getNode(0) - speculativeNode1=cluster.getNode(1) - speculativeNode2=cluster.getNode(2) - - Print ("Wait for Cluster stabilization") - if not cluster.waitOnClusterBlockNumSync(3): - errorExit("Cluster never stabilized") - Print ("Cluster stabilized") - - Print("Wait for producing {} blocks".format(numBlocksToProduceBeforeRelaunch)) - producingNode.waitForBlock(numBlocksToProduceBeforeRelaunch, blockType=BlockType.lib) - producingNode.waitForProducer("defproducera") - - Print("Kill all node instances.") - for clusterNode in cluster.nodes: - clusterNode.kill(signal.SIGTERM) - cluster.biosNode.kill(signal.SIGTERM) - Print("All nodeos instances killed.") - - # Remove both state and blocks such that no replay happens - Print("Remove producer node's state and blocks directories") - Utils.rmNodeDataDir(0) - Print("Remove the second speculative node's state and blocks directories") - Utils.rmNodeDataDir(2) - - Print ("Relaunch all cluster nodes instances.") - # -e for resuming production, defproducera only producer at this point - # skipGenesis=False for launch the same chain as before - relaunchNode(producingNode, chainArg="-e --sync-fetch-span 5 ", skipGenesis=False) - relaunchNode(speculativeNode1, chainArg="--sync-fetch-span 5 ") - relaunchNode(speculativeNode2, chainArg="--sync-fetch-span 5 ", skipGenesis=False) - - Print("Note LIBs") - prodLib = producingNode.getIrreversibleBlockNum() - specLib1 = speculativeNode1.getIrreversibleBlockNum() - specLib2 = speculativeNode2.getIrreversibleBlockNum() - Print("prodLib {}, specLib1 {}, specLib2 {},".format(prodLib, specLib1, specLib2)) - - Print("Wait for {} blocks to produce".format(numBlocksToWaitBeforeChecking)) - speculativeNode2.waitForBlock( specLib2 + numBlocksToWaitBeforeChecking, blockType=BlockType.lib) - - Print("Check whether LIBs advance or not") - prodLibAfterWait = producingNode.getIrreversibleBlockNum() - specLibAfterWait1 = speculativeNode1.getIrreversibleBlockNum() - specLibAfterWait2 = speculativeNode2.getIrreversibleBlockNum() - Print("prodLibAfterWait {}, specLibAfterWait1 {}, specLibAfterWait2 {},".format(prodLibAfterWait, specLibAfterWait1, specLibAfterWait2)) - - assert prodLibAfterWait > prodLib and specLibAfterWait2 > specLib2, "Either producer ({} -> {})/ second speculative node ({} -> {}) is not advancing".format(prodLib, prodLibAfterWait, specLib2, specLibAfterWait2) - - testSuccessful=True - -finally: - TestHelper.shutdown(cluster, walletMgr, testSuccessful=testSuccessful, dumpErrorDetails=dumpErrorDetails) - -exitCode = 0 if testSuccessful else 1 -exit(exitCode) From 2a10c5d0db8877febfb6cc34412518df1c70d364 Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Tue, 20 Feb 2024 11:29:39 -0600 Subject: [PATCH 4/7] GH-2228 Correctly handle action return value conversion by ABI --- plugins/trace_api_plugin/abi_data_handler.cpp | 5 +- plugins/trace_api_plugin/request_handler.cpp | 7 +-- .../test/test_data_handlers.cpp | 57 ++++++++++++++++++- 3 files changed, 61 insertions(+), 8 deletions(-) diff --git a/plugins/trace_api_plugin/abi_data_handler.cpp b/plugins/trace_api_plugin/abi_data_handler.cpp index 520222d3f4..7ce0d24db6 100644 --- a/plugins/trace_api_plugin/abi_data_handler.cpp +++ b/plugins/trace_api_plugin/abi_data_handler.cpp @@ -31,7 +31,10 @@ namespace eosio::trace_api { auto params = serializer_p->binary_to_variant(type_name, action.data, abi_yield); if constexpr (std::is_same_v) { if(action.return_value.size() > 0) { - ret_data = serializer_p->binary_to_variant(type_name, action.return_value, abi_yield); + auto return_type_name = serializer_p->get_action_result_type(action_name); + if (!return_type_name.empty()) { + ret_data = serializer_p->binary_to_variant(return_type_name, action.return_value, abi_yield); + } } } return {params, ret_data}; diff --git a/plugins/trace_api_plugin/request_handler.cpp b/plugins/trace_api_plugin/request_handler.cpp index 20755cf79e..1af8d6eaee 100644 --- a/plugins/trace_api_plugin/request_handler.cpp +++ b/plugins/trace_api_plugin/request_handler.cpp @@ -41,25 +41,22 @@ namespace { yield(); const auto& a = actions.at(index); - auto common_mvo = fc::mutable_variant_object(); + auto action_variant = fc::mutable_variant_object(); - common_mvo("global_sequence", a.global_sequence) + action_variant("global_sequence", a.global_sequence) ("receiver", a.receiver.to_string()) ("account", a.account.to_string()) ("action", a.action.to_string()) ("authorization", process_authorizations(a.authorization, yield)) ("data", fc::to_hex(a.data.data(), a.data.size())); - auto action_variant = fc::mutable_variant_object(); if constexpr(std::is_same_v){ - action_variant(std::move(common_mvo)); auto [params, return_data] = data_handler(a, yield); if (!params.is_null()) { action_variant("params", params); } } else if constexpr(std::is_same_v){ - action_variant(std::move(common_mvo)); action_variant("return_value", fc::to_hex(a.return_value.data(),a.return_value.size())) ; auto [params, return_data] = data_handler(a, yield); if (!params.is_null()) { diff --git a/plugins/trace_api_plugin/test/test_data_handlers.cpp b/plugins/trace_api_plugin/test/test_data_handlers.cpp index ee63ab50fb..3b3779320c 100644 --- a/plugins/trace_api_plugin/test/test_data_handlers.cpp +++ b/plugins/trace_api_plugin/test/test_data_handlers.cpp @@ -22,6 +22,7 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) auto actual = handler.serialize_to_variant(action_trace_t, [](){}); BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); + BOOST_REQUIRE(!std::get<1>(actual)); } BOOST_AUTO_TEST_CASE(empty_data_v1) @@ -37,6 +38,7 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) auto actual = handler.serialize_to_variant(action_trace_t, [](){}); BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); + BOOST_REQUIRE(!std::get<1>(actual)); } BOOST_AUTO_TEST_CASE(no_abi) @@ -51,6 +53,7 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) auto actual = handler.serialize_to_variant(action_trace_t, [](){}); BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); + BOOST_REQUIRE(!std::get<1>(actual)); } BOOST_AUTO_TEST_CASE(no_abi_v1) @@ -66,6 +69,7 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) auto actual = handler.serialize_to_variant(action_trace_t, [](){}); BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); + BOOST_REQUIRE(!std::get<1>(actual)); } BOOST_AUTO_TEST_CASE(basic_abi) @@ -99,20 +103,22 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) auto actual = handler.serialize_to_variant(action_trace_t, [](){}); BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); + BOOST_REQUIRE(!std::get<1>(actual)); } BOOST_AUTO_TEST_CASE(basic_abi_v1) { auto action = action_trace_v1 { { 0, "alice"_n, "alice"_n, "foo"_n, {}, {0x00, 0x01, 0x02, 0x03}}, - {0x04, 0x05, 0x06, 0x07} + {0x04, 0x05, 0x06} }; std::variant action_trace_t = action; auto abi = chain::abi_def ( {}, { - { "foo", "", { {"a", "varuint32"}, {"b", "varuint32"}, {"c", "varuint32"}, {"d", "varuint32"} } } + { "foo", "", { {"a", "varuint32"}, {"b", "varuint32"}, {"c", "varuint32"}, {"d", "varuint32"} } }, + { "foor", "", { {"e", "varuint32"}, {"f", "varuint32"}, {"g", "varuint32"} } } }, { { "foo"_n, "foo", ""} @@ -120,6 +126,7 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) {}, {}, {} ); abi.version = "eosio::abi/1."; + abi.action_results = { std::vector{ chain::action_result_def{ "foo"_n, "foor"} } }; abi_data_handler handler(exception_handler{}); handler.add_abi("alice"_n, abi); @@ -129,10 +136,16 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) ("b", 1) ("c", 2) ("d", 3); + fc::variant expected_return = fc::mutable_variant_object() + ("e", 4) + ("f", 5) + ("g", 6); auto actual = handler.serialize_to_variant(action_trace_t, [](){}); BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); + BOOST_REQUIRE(std::get<1>(actual)); + BOOST_TEST(to_kv(expected_return) == to_kv(*std::get<1>(actual)), boost::test_tools::per_element()); } BOOST_AUTO_TEST_CASE(abi_fail_yield) @@ -209,6 +222,7 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) auto actual = handler.serialize_to_variant(action_trace_t, [](){}); BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); + BOOST_REQUIRE(!std::get<1>(actual)); } BOOST_AUTO_TEST_CASE(basic_abi_wrong_type_v1) @@ -238,6 +252,7 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) auto actual = handler.serialize_to_variant(action_trace_t, [](){}); BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); + BOOST_REQUIRE(!std::get<1>(actual)); } BOOST_AUTO_TEST_CASE(basic_abi_insufficient_data) @@ -269,6 +284,44 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); BOOST_TEST(log_called); + BOOST_REQUIRE(!std::get<1>(actual)); + } + + // If no ABI provided for return type then do not attempt to decode it + BOOST_AUTO_TEST_CASE(basic_abi_no_return_abi_when_return_value_provided) + { + auto action = action_trace_v1 { + { 0, "alice"_n, "alice"_n, "foo"_n, {}, {0x00, 0x01, 0x02, 0x03}}, + {0x04, 0x05, 0x06} + }; + + std::variant action_trace_t = action; + + auto abi = chain::abi_def ( {}, + { + { "foo", "", { {"a", "varuint32"}, {"b", "varuint32"}, {"c", "varuint32"}, {"d", "varuint32"} } }, + }, + { + { "foo"_n, "foo", ""} + }, + {}, {}, {} + ); + abi.version = "eosio::abi/1."; + + abi_data_handler handler(exception_handler{}); + handler.add_abi("alice"_n, std::move(abi)); + + fc::variant expected = fc::mutable_variant_object() + ("a", 0) + ("b", 1) + ("c", 2) + ("d", 3); + + auto actual = handler.serialize_to_variant(action_trace_t); + + BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); + BOOST_REQUIRE(!std::get<1>(actual)); } + BOOST_AUTO_TEST_SUITE_END() From 5e34f3e78aa0a35e6c82d07ace9002ca2c773048 Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Tue, 20 Feb 2024 11:56:50 -0600 Subject: [PATCH 5/7] Fix merge --- plugins/trace_api_plugin/test/test_data_handlers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/trace_api_plugin/test/test_data_handlers.cpp b/plugins/trace_api_plugin/test/test_data_handlers.cpp index 3b3779320c..a2783b188e 100644 --- a/plugins/trace_api_plugin/test/test_data_handlers.cpp +++ b/plugins/trace_api_plugin/test/test_data_handlers.cpp @@ -317,7 +317,7 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) ("c", 2) ("d", 3); - auto actual = handler.serialize_to_variant(action_trace_t); + auto actual = handler.serialize_to_variant(action_trace_t, [](){}); BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); BOOST_REQUIRE(!std::get<1>(actual)); From 0a74525b3edb06976727119232cb11155aa2227e Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Tue, 20 Feb 2024 13:48:36 -0600 Subject: [PATCH 6/7] GH-2228 Fix merge issue --- plugins/trace_api_plugin/test/test_data_handlers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/trace_api_plugin/test/test_data_handlers.cpp b/plugins/trace_api_plugin/test/test_data_handlers.cpp index 129c87926c..c48bda1fa6 100644 --- a/plugins/trace_api_plugin/test/test_data_handlers.cpp +++ b/plugins/trace_api_plugin/test/test_data_handlers.cpp @@ -269,7 +269,7 @@ BOOST_AUTO_TEST_SUITE(abi_data_handler_tests) ("c", 2) ("d", 3); - auto actual = handler.serialize_to_variant(action_trace_t, [](){}); + auto actual = handler.serialize_to_variant(action_trace_t); BOOST_TEST(to_kv(expected) == to_kv(std::get<0>(actual)), boost::test_tools::per_element()); BOOST_REQUIRE(!std::get<1>(actual)); From 76306f8f3b242204b7da455818ba9db6f66625b0 Mon Sep 17 00:00:00 2001 From: Eric Passmore Date: Tue, 20 Feb 2024 14:25:35 -0800 Subject: [PATCH 7/7] bump version for binary to variant bug fix --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d70cbde25f..527f69191d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ set( CXX_STANDARD_REQUIRED ON) set(VERSION_MAJOR 3) set(VERSION_MINOR 2) -set(VERSION_PATCH 5) +set(VERSION_PATCH 6) #set(VERSION_SUFFIX rc2) if(VERSION_SUFFIX)