Skip to content

Commit

Permalink
Merge branch 'develop' into free-block-publisher-class
Browse files Browse the repository at this point in the history
# Conflicts:
#	nano/node/CMakeLists.txt
#	nano/node/node.cpp
#	nano/node/node.hpp
  • Loading branch information
pwojcikdev committed Feb 8, 2024
2 parents 106ad6b + 9332812 commit b0f31e4
Show file tree
Hide file tree
Showing 54 changed files with 2,383 additions and 808 deletions.
11 changes: 11 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,17 @@ if(NANO_STACKTRACE_BACKTRACE)
endif()
endif()

# Enable NANO_TRACING by default in Debug builds
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
option(NANO_TRACING "Enable trace logging" ON)
else()
option(NANO_TRACING "Enable trace logging" OFF)
endif()
if(NANO_TRACING)
message(STATUS "Using trace logging")
add_compile_definitions(NANO_TRACING)
endif()

if(${NANO_TIMED_LOCKS} GREATER 0)
add_definitions(-DNANO_TIMED_LOCKS=${NANO_TIMED_LOCKS})
add_definitions(-DNANO_TIMED_LOCKS_FILTER=${NANO_TIMED_LOCKS_FILTER})
Expand Down
1 change: 1 addition & 0 deletions ci/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ cmake \
-DACTIVE_NETWORK=nano_${NANO_NETWORK:-"live"}_network \
-DNANO_TEST=${NANO_TEST:-OFF} \
-DNANO_GUI=${NANO_GUI:-OFF} \
-DNANO_TRACING=${NANO_TRACING:-OFF} \
-DCOVERAGE=${COVERAGE:-OFF} \
-DCI_TAG=${CI_TAG:-OFF} \
-DCI_VERSION_PRE_RELEASE=${CI_VERSION_PRE_RELEASE:-OFF} \
Expand Down
4 changes: 2 additions & 2 deletions nano/core_test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,17 @@ add_executable(
enums.cpp
epochs.cpp
frontiers_confirmation.cpp
gap_cache.cpp
ipc.cpp
ledger.cpp
locks.cpp
logger.cpp
logging.cpp
message.cpp
message_deserializer.cpp
memory_pool.cpp
network.cpp
network_filter.cpp
node.cpp
object_stream.cpp
optimistic_scheduler.cpp
processing_queue.cpp
processor_service.cpp
Expand Down
4 changes: 2 additions & 2 deletions nano/core_test/election.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,6 @@ TEST (election, continuous_voting)
ASSERT_TRUE (nano::test::process (node1, { send2 }));
ASSERT_TIMELY (5s, node1.active.active (*send2));

// Ensure votes are generated in continuous manner
ASSERT_TIMELY (5s, node1.stats.count (nano::stat::type::election, nano::stat::detail::generate_vote) >= 5);
// Ensure votes are broadcasted in continuous manner
ASSERT_TIMELY (5s, node1.stats.count (nano::stat::type::election, nano::stat::detail::broadcast_vote) >= 5);
}
168 changes: 0 additions & 168 deletions nano/core_test/gap_cache.cpp

This file was deleted.

16 changes: 0 additions & 16 deletions nano/core_test/logger.cpp

This file was deleted.

106 changes: 106 additions & 0 deletions nano/core_test/logging.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
#include <nano/lib/logging.hpp>
#include <nano/test_common/testutil.hpp>

#include <gtest/gtest.h>

#include <ostream>

using namespace std::chrono_literals;

namespace
{
struct non_copyable
{
non_copyable () = default;
non_copyable (non_copyable const &) = delete;
non_copyable (non_copyable &&) = default;
non_copyable & operator= (non_copyable const &) = delete;
non_copyable & operator= (non_copyable &&) = default;

friend std::ostream & operator<< (std::ostream & os, non_copyable const & nc)
{
os << "non_copyable";
return os;
}
};
}

TEST (tracing, no_copy)
{
non_copyable nc;

nano::logger logger;
logger.trace (nano::log::type::test, nano::log::detail::test, nano::log::arg{ "non_copyable", nc });
}

namespace
{
struct non_moveable
{
non_moveable () = default;
non_moveable (non_moveable const &) = delete;
non_moveable (non_moveable &&) = delete;
non_moveable & operator= (non_moveable const &) = delete;
non_moveable & operator= (non_moveable &&) = delete;

friend std::ostream & operator<< (std::ostream & os, non_moveable const & nm)
{
os << "non_moveable";
return os;
}
};
}

TEST (tracing, no_move)
{
non_moveable nm;

nano::logger logger;
logger.trace (nano::log::type::test, nano::log::detail::test, nano::log::arg{ "non_moveable", nm });
}

TEST (log_parse, parse_level)
{
ASSERT_EQ (nano::log::parse_level ("error"), nano::log::level::error);
ASSERT_EQ (nano::log::parse_level ("off"), nano::log::level::off);
ASSERT_THROW (nano::log::parse_level ("enumnotpresent"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_level (""), std::invalid_argument);
ASSERT_THROW (nano::log::parse_level ("_last"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_level ("_error"), std::invalid_argument);
}

TEST (log_parse, parse_type)
{
ASSERT_EQ (nano::log::parse_type ("node"), nano::log::type::node);
ASSERT_THROW (nano::log::parse_type ("enumnotpresent"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_type (""), std::invalid_argument);
ASSERT_THROW (nano::log::parse_type ("_last"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_type ("_node"), std::invalid_argument);
}

TEST (log_parse, parse_detail)
{
ASSERT_EQ (nano::log::parse_detail ("all"), nano::log::detail::all);
ASSERT_EQ (nano::log::parse_detail ("process_confirmed"), nano::log::detail::process_confirmed);
ASSERT_THROW (nano::log::parse_detail ("enumnotpresent"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_detail (""), std::invalid_argument);
ASSERT_THROW (nano::log::parse_detail ("_last"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_detail ("_all"), std::invalid_argument);
}

TEST (log_parse, parse_logger_id)
{
ASSERT_EQ (nano::log::parse_logger_id ("node"), std::make_pair (nano::log::type::node, nano::log::detail::all));
ASSERT_EQ (nano::log::parse_logger_id ("node::all"), std::make_pair (nano::log::type::node, nano::log::detail::all));
ASSERT_EQ (nano::log::parse_logger_id ("node::process_confirmed"), std::make_pair (nano::log::type::node, nano::log::detail::process_confirmed));
ASSERT_THROW (nano::log::parse_logger_id ("_last"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_logger_id ("node::enumnotpresent"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_logger_id ("node::"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_logger_id ("node::_all"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_logger_id ("enumnotpresent"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_logger_id ("invalid."), std::invalid_argument);
ASSERT_THROW (nano::log::parse_logger_id ("invalid._all"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_logger_id ("::"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_logger_id ("::all"), std::invalid_argument);
ASSERT_THROW (nano::log::parse_logger_id (""), std::invalid_argument);
}
20 changes: 0 additions & 20 deletions nano/core_test/node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -338,26 +338,6 @@ TEST (node, auto_bootstrap_age)
node1->stop ();
}

// Test ensures the block processor adds the published block to the gap cache.
TEST (node, receive_gap)
{
nano::test::system system (1);
auto & node1 (*system.nodes[0]);
ASSERT_EQ (0, node1.gap_cache.size ());
auto block = nano::send_block_builder ()
.previous (5)
.destination (1)
.balance (2)
.sign (nano::keypair ().prv, 4)
.work (0)
.build_shared ();
node1.work_generate_blocking (*block);
nano::publish message{ nano::dev::network_params.network, block };
auto channel1 = std::make_shared<nano::transport::fake::channel> (node1);
node1.network.inbound (message, channel1);
ASSERT_TIMELY_EQ (5s, 1, node1.gap_cache.size ());
}

TEST (node, merge_peers)
{
nano::test::system system (1);
Expand Down
Loading

0 comments on commit b0f31e4

Please sign in to comment.