From b6ea2b195a9add916e3de0cf06f5914904e5a315 Mon Sep 17 00:00:00 2001 From: Bastien CHAMAGNE Date: Thu, 27 Apr 2023 14:29:10 +0200 Subject: [PATCH] Use a function to determine the minimum granularity of trigger 'interval' --- lib/archethic/contracts.ex | 13 +++++++++++++ .../regression/playbooks/smart_contract/faucet.ex | 10 ++++++---- .../regression/playbooks/smart_contract/legacy.ex | 6 ++++-- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/archethic/contracts.ex b/lib/archethic/contracts.ex index c9152fb790..9bb679a16a 100644 --- a/lib/archethic/contracts.ex +++ b/lib/archethic/contracts.ex @@ -23,6 +23,19 @@ defmodule Archethic.Contracts do @extended_mode? Mix.env() != :prod + @doc """ + Return the minimum interval in milliseconds. + Depends on the env + """ + @spec minimum_interval() :: pos_integer() + def minimum_interval() do + if @extended_mode? do + 1000 + else + 60_000 + end + end + @doc """ Parse a smart contract code and return a contract struct """ diff --git a/lib/archethic/utils/regression/playbooks/smart_contract/faucet.ex b/lib/archethic/utils/regression/playbooks/smart_contract/faucet.ex index 12310abc2f..31e859f838 100644 --- a/lib/archethic/utils/regression/playbooks/smart_contract/faucet.ex +++ b/lib/archethic/utils/regression/playbooks/smart_contract/faucet.ex @@ -4,6 +4,7 @@ defmodule Archethic.Utils.Regression.Playbook.SmartContract.Faucet do with some UCOs to all callers """ + alias Archethic.Contracts alias Archethic.TransactionChain.TransactionData alias Archethic.Utils alias Archethic.Utils.Regression.Playbook.SmartContract @@ -44,9 +45,10 @@ defmodule Archethic.Utils.Regression.Playbook.SmartContract.Faucet do trigger2_tx = SmartContract.trigger(trigger2_seed, contract_address, host, port) trigger3_tx = SmartContract.trigger(trigger3_seed, contract_address, host, port) - # wait for the tick (5s + delta) - Logger.debug("Sleeping for 1 tick (5 seconds)") - Process.sleep(200 + 5000) + # wait for the tick (+ delta) + sleep_time = 200 + Contracts.minimum_interval() + Logger.debug("Sleeping for 1 tick (#{div(sleep_time, 1000)} seconds)") + Process.sleep(sleep_time) expected_balance = Utils.to_bigint(5) balance1 = SmartContract.get_balance(trigger1_tx, host, port) @@ -74,7 +76,7 @@ defmodule Archethic.Utils.Regression.Playbook.SmartContract.Faucet do content: true ] - actions triggered_by: interval, at: "*/5 * * * *" do + actions triggered_by: interval, at: "* * * * *" do now = Time.now() faucet_delay = 60 * 60 calls = Contract.get_calls() diff --git a/lib/archethic/utils/regression/playbooks/smart_contract/legacy.ex b/lib/archethic/utils/regression/playbooks/smart_contract/legacy.ex index 9c69d90483..4ed96d85f1 100644 --- a/lib/archethic/utils/regression/playbooks/smart_contract/legacy.ex +++ b/lib/archethic/utils/regression/playbooks/smart_contract/legacy.ex @@ -4,6 +4,7 @@ defmodule Archethic.Utils.Regression.Playbook.SmartContract.Legacy do It should send 0.1 UCO to the recipient chain every tick """ + alias Archethic.Contracts alias Archethic.TransactionChain.TransactionData alias Archethic.Utils.Regression.Playbook.SmartContract @@ -28,8 +29,9 @@ defmodule Archethic.Utils.Regression.Playbook.SmartContract.Legacy do ) # wait some ticks (+ a little delta) - Logger.debug("Sleeping for #{ticks_count} ticks (#{ticks_count} seconds)") - Process.sleep(200 + ticks_count * 1000) + sleep_time = 200 + ticks_count * Contracts.minimum_interval() + Logger.debug("Sleeping for #{ticks_count} ticks (#{div(sleep_time, 1000)} seconds)") + Process.sleep(sleep_time) balance = SmartContract.get_balance(recipient_address, host, port) expected_balance = ticks_count * amount_to_send