From 56167cb6eff843afc9f0455c8ea72ad78c321e2b Mon Sep 17 00:00:00 2001 From: Alexey Osipov Date: Mon, 25 Dec 2023 15:16:02 +0300 Subject: [PATCH] Fix test; ws --- .../CustomSpecProvider.cs | 71 +++++++++---------- .../CustomSpecProviderTests.cs | 4 -- ...viderExtensions.cs => SpecProviderBase.cs} | 1 + 3 files changed, 36 insertions(+), 40 deletions(-) rename src/Nethermind/Nethermind.Specs/ChainSpecStyle/{SpecProviderExtensions.cs => SpecProviderBase.cs} (99%) diff --git a/src/Nethermind/Nethermind.Specs.Test/CustomSpecProvider.cs b/src/Nethermind/Nethermind.Specs.Test/CustomSpecProvider.cs index b4b46d56a30..6b405e37354 100644 --- a/src/Nethermind/Nethermind.Specs.Test/CustomSpecProvider.cs +++ b/src/Nethermind/Nethermind.Specs.Test/CustomSpecProvider.cs @@ -1,8 +1,6 @@ // SPDX-FileCopyrightText: 2022 Demerzel Solutions Limited // SPDX-License-Identifier: LGPL-3.0-only -using System; -using System.Collections.Generic; using System.Linq; using Nethermind.Core; using Nethermind.Core.Specs; @@ -10,51 +8,52 @@ using Nethermind.Specs.ChainSpecStyle; using Nethermind.Specs.Forks; -namespace Nethermind.Specs.Test +namespace Nethermind.Specs.Test; + +public class CustomSpecProvider : SpecProviderBase, ISpecProvider { - public class CustomSpecProvider : SpecProviderBase, ISpecProvider - { - private ForkActivation? _theMergeBlock = null; + private ForkActivation? _theMergeBlock = null; - public ulong NetworkId { get; } - public ulong ChainId { get; } + public ulong NetworkId { get; } + public ulong ChainId { get; } - public CustomSpecProvider(params (ForkActivation Activation, IReleaseSpec Spec)[] transitions) : this(TestBlockchainIds.NetworkId, TestBlockchainIds.ChainId, transitions) - { - } + public CustomSpecProvider(params (ForkActivation Activation, IReleaseSpec Spec)[] transitions) : this(TestBlockchainIds.NetworkId, TestBlockchainIds.ChainId, transitions) + { + } - public CustomSpecProvider(ulong networkId, ulong chainId, params (ForkActivation Activation, IReleaseSpec Spec)[] transitions) - { - NetworkId = networkId; - ChainId = chainId; + public CustomSpecProvider(ulong networkId, ulong chainId, params (ForkActivation Activation, IReleaseSpec Spec)[] transitions) + { + NetworkId = networkId; + ChainId = chainId; - (ForkActivation Activation, IReleaseSpec Spec)[] orderedTransitions = transitions.OrderBy(r => r.Activation).ToArray(); + (ForkActivation Activation, IReleaseSpec Spec)[] orderedTransitions = transitions.OrderBy(r => r.Activation).ToArray(); - LoadTransitions(orderedTransitions); - TransitionActivations = orderedTransitions.Select(t => t.Activation).ToArray(); - } + LoadTransitions(orderedTransitions); - public void UpdateMergeTransitionInfo(long? blockNumber, UInt256? terminalTotalDifficulty = null) - { - if (blockNumber is not null) - _theMergeBlock = (ForkActivation)blockNumber; - if (terminalTotalDifficulty is not null) - TerminalTotalDifficulty = terminalTotalDifficulty; - } + TransitionActivations = orderedTransitions.Select(t => t.Activation).ToArray(); + } + + public void UpdateMergeTransitionInfo(long? blockNumber, UInt256? terminalTotalDifficulty = null) + { + if (blockNumber is not null) + _theMergeBlock = (ForkActivation)blockNumber; + if (terminalTotalDifficulty is not null) + TerminalTotalDifficulty = terminalTotalDifficulty; + } - public ForkActivation? MergeBlockNumber => _theMergeBlock; + public ForkActivation? MergeBlockNumber => _theMergeBlock; - public ulong TimestampFork { get; set; } = ISpecProvider.TimestampForkNever; - public UInt256? TerminalTotalDifficulty { get; set; } + public ulong TimestampFork { get; set; } = ISpecProvider.TimestampForkNever; + public UInt256? TerminalTotalDifficulty { get; set; } - public long? DaoBlockNumber + public long? DaoBlockNumber + { + get { - get - { - (ForkActivation forkActivation, IReleaseSpec? daoRelease) = _blockTransitions.SingleOrDefault(t => t.Spec == Dao.Instance); - return daoRelease is not null ? forkActivation.BlockNumber : null; - } + (ForkActivation forkActivation, IReleaseSpec? daoRelease) = _blockTransitions.SingleOrDefault(t => t.Spec == Dao.Instance); + return daoRelease is not null ? forkActivation.BlockNumber : null; } - } + } + diff --git a/src/Nethermind/Nethermind.Specs.Test/CustomSpecProviderTests.cs b/src/Nethermind/Nethermind.Specs.Test/CustomSpecProviderTests.cs index 76ecf40eb11..df91b86c5e5 100644 --- a/src/Nethermind/Nethermind.Specs.Test/CustomSpecProviderTests.cs +++ b/src/Nethermind/Nethermind.Specs.Test/CustomSpecProviderTests.cs @@ -21,10 +21,6 @@ public void When_no_transitions_specified_throws_argument_exception() public void When_first_release_is_not_at_block_zero_then_throws_argument_exception() { Assert.Throws(() => _ = new CustomSpecProvider(((ForkActivation)1, Byzantium.Instance)), "ordered"); - - Assert.Throws(() => _ = new CustomSpecProvider( - ((ForkActivation)1, Byzantium.Instance), - ((ForkActivation)0, Frontier.Instance)), "not ordered"); } [Test] diff --git a/src/Nethermind/Nethermind.Specs/ChainSpecStyle/SpecProviderExtensions.cs b/src/Nethermind/Nethermind.Specs/ChainSpecStyle/SpecProviderBase.cs similarity index 99% rename from src/Nethermind/Nethermind.Specs/ChainSpecStyle/SpecProviderExtensions.cs rename to src/Nethermind/Nethermind.Specs/ChainSpecStyle/SpecProviderBase.cs index 83ebf2ac10d..bc5410bb807 100644 --- a/src/Nethermind/Nethermind.Specs/ChainSpecStyle/SpecProviderExtensions.cs +++ b/src/Nethermind/Nethermind.Specs/ChainSpecStyle/SpecProviderBase.cs @@ -27,6 +27,7 @@ protected void LoadTransitions((ForkActivation Activation, IReleaseSpec Spec)[] { throw new ArgumentException($"There must be at least one release specified when instantiating {GetType()}", $"{nameof(transitions)}"); } + if (transitions.First().Activation.BlockNumber != 0L) { throw new ArgumentException($"First release specified when instantiating {GetType()} should be at genesis block (0)", $"{nameof(transitions)}");