From 4e3efbebd2ab35b0cdc24c5c545848d72e7abce8 Mon Sep 17 00:00:00 2001 From: Ivan Baidakou Date: Tue, 18 Jun 2024 15:43:23 +0300 Subject: [PATCH] core, update diff-builder --- tests/033-diffs-trivial.cpp | 13 +++++-------- tests/070-db.cpp | 6 +----- tests/073-dialer.cpp | 18 +++++------------- tests/079-peer.cpp | 10 +++------- tests/diff-builder.cpp | 10 ++++++++++ tests/diff-builder.h | 6 +++++- 6 files changed, 29 insertions(+), 34 deletions(-) diff --git a/tests/033-diffs-trivial.cpp b/tests/033-diffs-trivial.cpp index 2071fb5d..d3bbb9f0 100644 --- a/tests/033-diffs-trivial.cpp +++ b/tests/033-diffs-trivial.cpp @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-3.0-or-later -// SPDX-FileCopyrightText: 2019-2023 Ivan Baidakou +// SPDX-FileCopyrightText: 2019-2024 Ivan Baidakou #include "test-utils.h" #include "access.h" @@ -9,7 +9,6 @@ #include "model/diff/modify/lock_file.h" #include "model/diff/modify/file_availability.h" #include "model/diff/modify/update_contact.h" -#include "model/diff/peer/peer_state.h" #include "model/diff/cluster_visitor.h" using namespace syncspirit; @@ -28,15 +27,13 @@ TEST_CASE("peer state update", "[model]") { cluster->get_devices().put(peer_device); rotor::address_ptr_t addr; - auto diff = diff::cluster_diff_ptr_t( - new diff::peer::peer_state_t(*cluster, peer_id.get_sha256(), addr, device_state_t::online)); - CHECK(peer_device->get_state() == model::device_state_t::offline); + auto builder = diff_builder_t(*cluster); + REQUIRE(peer_device->get_state() == model::device_state_t::offline); - REQUIRE(diff->apply(*cluster)); + REQUIRE(builder.update_state(*peer_device, addr, device_state_t::online).apply()); CHECK(peer_device->get_state() == model::device_state_t::online); - diff = new diff::peer::peer_state_t(*cluster, peer_id.get_sha256(), addr, device_state_t::offline); - REQUIRE(diff->apply(*cluster)); + REQUIRE(builder.update_state(*peer_device, addr, device_state_t::offline).apply()); CHECK(peer_device->get_state() == model::device_state_t::offline); } diff --git a/tests/070-db.cpp b/tests/070-db.cpp index 4bdc147b..cb140b51 100644 --- a/tests/070-db.cpp +++ b/tests/070-db.cpp @@ -5,7 +5,6 @@ #include "test-utils.h" #include "diff-builder.h" #include "model/diff/peer/cluster_update.h" -#include "model/diff/peer/peer_state.h" #include "test_supervisor.h" #include "access.h" #include "model/cluster.h" @@ -612,10 +611,7 @@ void test_peer_going_offline() { REQUIRE(db_peer.last_seen() == 0); peer->update_state(device_state_t::online); - auto diff = diff::cluster_diff_ptr_t( - new model::diff::peer::peer_state_t(*cluster, sha256, sup->get_address(), device_state_t::offline)); - sup->send(sup->get_address(), std::move(diff), nullptr); - sup->do_process(); + builder.update_state(*peer, {}, device_state_t::offline).apply(*sup); sup->request(db_addr).send(timeout); sup->do_process(); diff --git a/tests/073-dialer.cpp b/tests/073-dialer.cpp index 4f3ac878..68faa7bb 100644 --- a/tests/073-dialer.cpp +++ b/tests/073-dialer.cpp @@ -1,10 +1,10 @@ // SPDX-License-Identifier: GPL-3.0-or-later -// SPDX-FileCopyrightText: 2019-2023 Ivan Baidakou +// SPDX-FileCopyrightText: 2019-2024 Ivan Baidakou #include "test-utils.h" #include "access.h" #include "model/cluster.h" -#include "model/diff/peer/peer_state.h" +#include "diff-builder.h" #include "net/dialer_actor.h" #include "access.h" @@ -106,20 +106,12 @@ void test_dialer() { } SECTION("peer online & offline") { - auto diff = model::diff::cluster_diff_ptr_t{}; - auto sample_addr = sup->get_address(); - auto peer_id = peer_device->device_id().get_sha256(); - diff = new model::diff::peer::peer_state_t(*cluster, peer_id, sample_addr, device_state_t::online); - sup->send(sup->get_address(), diff); - - sup->do_process(); + auto builder = diff_builder_t(*cluster); + builder.update_state(*peer_device, {}, model::device_state_t::online).apply(*sup); CHECK(!discovery); CHECK(sup->timers.size() == 0); - diff = new model::diff::peer::peer_state_t(*cluster, peer_id, sample_addr, device_state_t::offline); - sup->send(sup->get_address(), diff); - - sup->do_process(); + builder.update_state(*peer_device, {}, model::device_state_t::offline).apply(*sup); CHECK(!discovery); CHECK(sup->timers.size() == 1); diff --git a/tests/079-peer.cpp b/tests/079-peer.cpp index cb497d9e..54ceb248 100644 --- a/tests/079-peer.cpp +++ b/tests/079-peer.cpp @@ -8,11 +8,11 @@ #include "utils/format.hpp" #include "model/cluster.h" #include "model/messages.h" -#include "model/diff/peer/peer_state.h" #include "net/names.h" #include "net/messages.h" #include "net/peer_actor.h" #include "transport/stream.h" +#include "diff-builder.h" #include #include @@ -148,12 +148,8 @@ struct fixture_t : private model::diff::contact_visitor_t { virtual void main() noexcept {} virtual actor_ptr_t create_actor() noexcept { - - auto diff = model::diff::cluster_diff_ptr_t(); - auto state = model::device_state_t::dialing; - auto sha256 = peer_device->device_id().get_sha256(); - diff = new model::diff::peer::peer_state_t(*cluster, sha256, nullptr, state); - sup->send(sup->get_address(), std::move(diff)); + auto builder = diff_builder_t(*cluster); + builder.update_state(*peer_device, {}, model::device_state_t::dialing).apply(*sup); auto bep_config = config::bep_config_t(); bep_config.rx_buff_size = 1024; diff --git a/tests/diff-builder.cpp b/tests/diff-builder.cpp index 1c67d825..6c91a621 100644 --- a/tests/diff-builder.cpp +++ b/tests/diff-builder.cpp @@ -15,8 +15,10 @@ #include "model/diff/modify/unshare_folder.h" #include "model/diff/modify/update_peer.h" #include "model/diff/modify/remove_peer.h" +#include "model/diff/modify/update_contact.h" #include "model/diff/peer/cluster_update.h" #include "model/diff/peer/update_folder.h" +#include "model/diff/peer/peer_state.h" #include @@ -177,6 +179,14 @@ diff_builder_t &diff_builder_t::remove_peer(const model::device_t &peer) noexcep return *this; } +diff_builder_t &diff_builder_t::update_state(const model::device_t &peer, const r::address_ptr_t &peer_addr, + model::device_state_t state) noexcept { + model::diff::cluster_diff_ptr_t diff; + diff.reset(new model::diff::peer::peer_state_t(cluster, peer.device_id().get_sha256(), peer_addr, state)); + diffs.emplace_back(std::move(diff)); + return *this; +} + diff_builder_t &diff_builder_t::append_block(const model::file_info_t &target, size_t block_index, std::string data, dispose_callback_t callback) noexcept { bdiffs.emplace_back(new diff::modify::append_block_t(target, block_index, std::move(data), std::move(callback))); diff --git a/tests/diff-builder.h b/tests/diff-builder.h index 0ef3f210..52a1a952 100644 --- a/tests/diff-builder.h +++ b/tests/diff-builder.h @@ -11,7 +11,7 @@ #include "syncspirit-test-export.h" #include "model/device.h" #include "model/file_info.h" -#include "model/diff/cluster_diff.h" +#include "model/diff/contact_diff.h" #include "model/diff/block_diff.h" #include "model/diff/aggregate.h" #include "model/diff/modify/block_transaction.h" @@ -70,13 +70,17 @@ struct SYNCSPIRIT_TEST_API diff_builder_t { diff_builder_t &clone_block(const model::file_block_t &, dispose_callback_t) noexcept; diff_builder_t &ack_block(const model::diff::modify::block_transaction_t &) noexcept; diff_builder_t &remove_peer(const model::device_t &peer) noexcept; + diff_builder_t &update_state(const model::device_t &peer, const r::address_ptr_t &peer_addr, + model::device_state_t state) noexcept; private: using bdiffs_t = std::deque; using diffs_t = std::deque; + using cdiff_t = std::deque; model::cluster_t &cluster; diffs_t diffs; bdiffs_t bdiffs; + cdiff_t cdiffs; friend struct cluster_configurer_t; friend struct index_maker_t; };