diff --git a/lib/archethic/self_repair/notifier/repair_worker.ex b/lib/archethic/self_repair/notifier/repair_worker.ex index 7bfd740ec2..4b6d3d943a 100644 --- a/lib/archethic/self_repair/notifier/repair_worker.ex +++ b/lib/archethic/self_repair/notifier/repair_worker.ex @@ -15,9 +15,8 @@ defmodule Archethic.SelfRepair.Notifier.RepairWorker do def init(args) do Registry.register(Notifier.Impl.registry_name(), args.genesis_address, []) Logger.debug("RepairWorker: Repair Started", address: args.genesis_address) + IO.inspect(label: "--") - # note Imp - # genserver continue msg to to continue in genserver {:ok, _next_state = :repair_started, _data = %{ genesis_address: args.genesis_address, @@ -33,6 +32,8 @@ defmodule Archethic.SelfRepair.Notifier.RepairWorker do addresses: address_list } ) do + IO.inspect(label: "---") + [repair_addr | new_address_list] = address_list {:ok, _} = Notifier.Impl.repair_chain(repair_addr, server_data.genesis_address) @@ -51,14 +52,18 @@ defmodule Archethic.SelfRepair.Notifier.RepairWorker do _server_data ) do Logger.debug("RepairWorker: state Loops") + IO.inspect(label: "----") :keep_state_and_data end def handle_event(:internal, :process_update_requests, :repair_started, server_data) do + IO.inspect(label: "-----") + case server_data.addresses do [] -> Logger.debug("Done processing Requests", server_data: server_data) + IO.inspect(label: "--------") :stop diff --git a/test/archethic/self_repair/notifier/repair_worker_test.exs b/test/archethic/self_repair/notifier/repair_worker_test.exs index e69de29bb2..618d15d59b 100644 --- a/test/archethic/self_repair/notifier/repair_worker_test.exs +++ b/test/archethic/self_repair/notifier/repair_worker_test.exs @@ -0,0 +1,41 @@ +defmodule Archethic.SelfRepair.Notifier.RepairWorkerTest do + @moduledoc false + use ArchethicCase + + alias Archethic.SelfRepair.Notifier.RepairWorker + + import Mox + + describe "RepairWorker FSM Behaviour" do + setup do + case Process.whereis(@registry_name) do + nil -> + start_supervised!({Registry, name: @registry_name, keys: :unique, partitions: 1}) + + pid when is_pid(pid) -> + :ok + end + + :ok + end + + test "State-Event Behaviour" do + opts = %{genesis_address: "chainA_genesis_address", last_address: "chainA_last_address"} + + MockDB + |> stub( + :transaction_exists?, + fn _ -> + IO.inspect("processsleep") + Process.sleep(1500) + false + end + ) + + pid = start_supervised!({RepairWorker, opts}) + Registry.lookup(@) + :sys.get_state(pid) + |> IO.inspect(label: "=======") + end + end +end diff --git a/test/support/transaction_factory.ex b/test/support/transaction_factory.ex index cd5c43e6a2..39cb2eeafb 100644 --- a/test/support/transaction_factory.ex +++ b/test/support/transaction_factory.ex @@ -18,6 +18,7 @@ defmodule Archethic.TransactionFactory do alias Archethic.TransactionChain.TransactionData + @deprecated "use_create_valid_chain/2 instead" def create_valid_transaction( inputs \\ [], opts \\ [] @@ -226,7 +227,8 @@ defmodule Archethic.TransactionFactory do end @doc """ - Creates a valid Node Shared Secrets Tx with parameters index, timestamp, prev_txn + Creates a valid Node Shared Secrets Tx with parameters index, timestamp, prev_txn.any() + requires valid_p2p_Context """ @spec create_network_tx(:node_shared_secrets, keyword) :: Archethic.TransactionChain.Transaction.t() @@ -273,6 +275,10 @@ defmodule Archethic.TransactionFactory do } end + @doc """ + Creates a valid Txn Chain with parameters index, timestamp, prev_txn. + required valid_p2p_Context + """ def create_valid_chain( inputs \\ [], opts \\ []