Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not print stats about each resource if the whole archive failed to open #244

Merged
merged 1 commit into from
Jun 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions flatdata-cpp/src/Archive.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,25 +243,27 @@ Archive::describe( size_t nest_level ) const
if ( is_root_node )
{
result << hline << "FATAL: Resource storage not initialized. Please check archive path."
<< newl;
<< newl << hline;
}
else
{
result << "Uninitialized Archive " << name( );
result << "Uninitialized Archive " << name( ) << newl;
}
return result.str( );
}

if ( m_storage && !m_signature )
if ( !m_signature )
{
result << ( is_root_node ? hline : empty )
<< "FATAL: Archive signature does not match software expectations."
<< ( is_root_node ? newl : empty ) << hline;
result << compute_diff(
schema( ),
m_storage->read_schema( internal::signature_name( name( ) ).c_str( ) ).char_ptr( ) );
return result.str( );
}

if ( m_storage && !m_is_open )
if ( !m_is_open )
{
// Error propagated to root and storage is not initialized in respective child. No root
// check needed.
Expand All @@ -282,7 +284,7 @@ Archive::describe( size_t nest_level ) const
{
const std::string indent( ( nest_level - 1 ) * TAB_WIDTH, ' ' );
result << newl + indent + std::string( "|" ) + newl + indent + std::string( "|->" )
<< " Flatdata Archive: " << name( ) << std::endl;
<< " Flatdata Archive: " << name( ) << newl;
}

describe_resources( result, nest_level );
Expand Down
2 changes: 2 additions & 0 deletions flatdata-cpp/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ target_include_directories(flatdata_test
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../vendor
)

target_compile_definitions(flatdata_test PRIVATE CATCH_CONFIG_CONSOLE_WIDTH=120)

target_link_libraries(flatdata_test
flatdata
${CMAKE_THREAD_LIBS_INIT}
Expand Down
81 changes: 36 additions & 45 deletions flatdata-cpp/test/GeneratedArchiveTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -361,9 +361,6 @@ Resource Optional Too Large Loaded Details
outer1 NO NO YES Structure of size 1
outer2 NO NO YES Structure of size 1
inner NO NO NO Uninitialized Archive InnerArchive
|
|-> Flatdata Archive: InnerArchive
inner NO NO NO Uninitialized Structure AStruct
================================================================================
)data";

Expand Down Expand Up @@ -395,9 +392,44 @@ Resource Optional Too Large Loaded Details
================================================================================
outer NO NO YES Structure of size 1
archive_resource YES NO NO Uninitialized Archive InnerArchive
================================================================================
)data";

REQUIRE( outer.describe( ) == expected );
}

TEMPLATE_TEST_CASE_METHOD(
Fixture, "Sub-archives are described", "[GeneratedArchive]", std::true_type, std::false_type )
{
{
auto outer_builder = OuterArchiveBuilder::open( Fixture< TestType >::storage );
CHECK( outer_builder );

flatdata::Struct< AStruct > o;
outer_builder.set_outer1( *o );
outer_builder.set_outer2( *o );

auto inner_builder = outer_builder.inner( );
CHECK( inner_builder );
inner_builder.set_inner( *o );
}

auto outer = OuterArchive::open( Fixture< TestType >::storage );
REQUIRE( outer.is_open( ) );
REQUIRE( outer.inner( ).is_open( ) );

const char* const expected
= R"data(================================================================================
Flatdata Archive: OuterArchive
================================================================================
Resource Optional Too Large Loaded Details
================================================================================
outer1 NO NO YES Structure of size 1
outer2 NO NO YES Structure of size 1
inner NO NO YES
|
|-> Flatdata Archive: InnerArchive
inner NO NO NO Uninitialized Structure AStruct
inner NO NO YES Structure of size 1
================================================================================
)data";

Expand Down Expand Up @@ -531,16 +563,6 @@ TEST_CASE( "Describe ouputs fatal errors", "[GeneratedArchive]" )
R"data(================================================================================
FATAL: Resource storage not initialized. Please check archive path.
================================================================================
Flatdata Archive: SimpleResources
================================================================================
Resource Optional Too Large Loaded Details
================================================================================
object_resource NO NO NO Uninitialized Structure AStruct
vector_resource NO NO NO Uninitialized Array
multivector_resource NO NO NO Uninitialized MultiArray
raw_data_resource NO NO NO Uninitialized Raw data
optional_resource YES NO NO Uninitialized Raw data
================================================================================
)data";

REQUIRE( archive.describe( ) == expected );
Expand Down Expand Up @@ -604,24 +626,6 @@ FATAL: Archive signature does not match software expectations.
"}"
"}"
...
================================================================================
FATAL: Archive initialization failed. Failed loading mandatory resources.
================================================================================
Flatdata Archive: OutermostArchive
================================================================================
Resource Optional Too Large Loaded Details
================================================================================
outermost NO NO NO Uninitialized Structure AStruct
outer NO NO NO Uninitialized Archive OuterArchive
|
|-> Flatdata Archive: OuterArchive
outer1 NO NO NO Uninitialized Structure AStruct
outer2 NO NO NO Uninitialized Structure AStruct
inner NO NO NO Uninitialized Archive InnerArchive
|
|-> Flatdata Archive: InnerArchive
inner NO NO NO Uninitialized Structure AStruct
================================================================================
)";
REQUIRE( description == expectation );
}
Expand Down Expand Up @@ -668,19 +672,6 @@ FATAL: Archive signature does not match software expectations.
"}"
"}"
...
================================================================================
FATAL: Archive initialization failed. Failed loading mandatory resources.
================================================================================
Flatdata Archive: OuterWithOptional
================================================================================
Resource Optional Too Large Loaded Details
================================================================================
outer NO NO NO Uninitialized Structure AStruct
archive_resource YES NO NO Uninitialized Archive InnerArchive
|
|-> Flatdata Archive: InnerArchive
inner NO NO NO Uninitialized Structure AStruct
================================================================================
)";
REQUIRE( description == expectation );
}
Expand Down
Loading