diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a9b8554c..19bbc9e0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,36 +1,28 @@ stages: - - pull - build - test -before_script: - - cd /var/www/Projects/595.peerplays/blockchain - -pulljob: - stage: pull - script: - - git pull origin master - only: - - master - tags: - - pp-dev - -buildjob: +build: stage: build script: + - git submodule update --init --recursive - cmake . - - make - only: - - master - tags: - - pp-dev - -testjob: + - make -j$(nproc) + artifacts: + untracked: true + paths: + - libraries/ + - programs/ + - tests/ + tags: + - builder + +test: stage: test + dependencies: + - build script: + - ./tests/betting_test - ./tests/chain_test - - ./tests/tournament_test - only: - - master - tags: - - pp-dev \ No newline at end of file + tags: + - builder \ No newline at end of file diff --git a/libraries/chain/db_management.cpp b/libraries/chain/db_management.cpp index 68f6fad1..a0a78682 100644 --- a/libraries/chain/db_management.cpp +++ b/libraries/chain/db_management.cpp @@ -119,7 +119,9 @@ void database::reindex(fc::path data_dir, const genesis_state_type& initial_allo void database::wipe(const fc::path& data_dir, bool include_blocks) { ilog("Wiping database", ("include_blocks", include_blocks)); - close(); + if (_opened) { + close(); + } object_database::wipe(data_dir); if( include_blocks ) fc::remove_all( data_dir / "database" ); @@ -148,12 +150,16 @@ void database::open( ("last_block->id", last_block->id())("head_block_num",head_block_num()) ); } } + _opened = true; } FC_CAPTURE_LOG_AND_RETHROW( (data_dir) ) } void database::close(bool rewind) { + if (!_opened) + return; + // TODO: Save pending tx's on close() clear_pending(); @@ -198,6 +204,8 @@ void database::close(bool rewind) _block_id_to_block.close(); _fork_db.reset(); + + _opened = false; } void database::force_slow_replays() diff --git a/libraries/chain/include/graphene/chain/database.hpp b/libraries/chain/include/graphene/chain/database.hpp index 84d1ea9b..b513fd2f 100644 --- a/libraries/chain/include/graphene/chain/database.hpp +++ b/libraries/chain/include/graphene/chain/database.hpp @@ -561,6 +561,15 @@ namespace graphene { namespace chain { node_property_object _node_property_object; fc::hash_ctr_rng _random_number_generator; bool _slow_replays = false; + + /** + * Whether database is successfully opened or not. + * + * The database is considered open when there's no exception + * or assertion fail during database::open() method, and + * database::close() has not been called, or failed during execution. + */ + bool _opened = false; }; namespace detail diff --git a/libraries/fc b/libraries/fc index 94b046dc..443f858d 160000 --- a/libraries/fc +++ b/libraries/fc @@ -1 +1 @@ -Subproject commit 94b046dce6bb86fd22abd1831fc9056103f4aa5d +Subproject commit 443f858d9b4733bb6d894da9315ce00ac3246065 diff --git a/tests/cli/main.cpp b/tests/cli/main.cpp index 4aca6c83..82adb1c5 100644 --- a/tests/cli/main.cpp +++ b/tests/cli/main.cpp @@ -37,6 +37,7 @@ #include #include +#include #ifdef _WIN32 #ifndef _WIN32_WINNT @@ -210,7 +211,7 @@ public: wallet_data.ws_password = ""; websocket_connection = websocket_client.connect( wallet_data.ws_server ); - api_connection = std::make_shared(*websocket_connection); + api_connection = std::make_shared(websocket_connection); remote_login_api = api_connection->get_remote_api< graphene::app::login_api >(1); BOOST_CHECK(remote_login_api->login( wallet_data.ws_user, wallet_data.ws_password ) );