private static StateSyncItem PushItem(IPendingSyncItems items, NodeDataType nodeDataType, int level, uint rightness, int progress = 0) { StateSyncItem stateSyncItem1 = new (Keccak.Zero, null, null, nodeDataType, level, rightness); items.PushToSelectedStream(stateSyncItem1, progress); return(stateSyncItem1); }
public void Max_levels_should_be_zero_at_start() { IPendingSyncItems items = Init(); items.MaxStateLevel.Should().Be(0); items.MaxStorageLevel.Should().Be(0); }
public void Can_peek_root() { IPendingSyncItems items = Init(); StateSyncItem stateSyncItem = new (Keccak.Zero, null, null, NodeDataType.State); items.PushToSelectedStream(stateSyncItem, 0); items.PeekState().Should().Be(stateSyncItem); }
public void Can_recalculate_and_clear_with_root_only() { IPendingSyncItems items = Init(); StateSyncItem stateSyncItem = new (Keccak.Zero, null, null, NodeDataType.State); items.PushToSelectedStream(stateSyncItem, 0); items.RecalculatePriorities(); items.Clear(); items.Count.Should().Be(0); }
public StateSyncFeed(ISnapshotableDb codeDb, ISnapshotableDb stateDb, IDb tempDb, ISyncModeSelector syncModeSelector, IBlockTree blockTree, ILogManager logManager) : base(logManager) { _codeDb = codeDb?.Innermost ?? throw new ArgumentNullException(nameof(codeDb)); _stateDb = stateDb?.Innermost ?? throw new ArgumentNullException(nameof(stateDb)); _tempDb = tempDb ?? throw new ArgumentNullException(nameof(tempDb)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _syncModeSelector = syncModeSelector ?? throw new ArgumentNullException(nameof(syncModeSelector)); _syncModeSelector.Changed += SyncModeSelectorOnChanged; _logger = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); byte[] progress = _codeDb.Get(_fastSyncProgressKey); _data = new DetailedProgress(_blockTree.ChainId, progress); _pendingItems = new PendingSyncItems(); }
public void Prefers_left_single_branch() { IPendingSyncItems items = Init(); items.MaxStateLevel = 64; PushState(items, 1, 15); // branch child 16 PushState(items, 1, 1); // branch child 1 PushState(items, 1, 0); // branch child 0 items.RecalculatePriorities(); List <StateSyncItem> batch = items.TakeBatch(256); batch[0].Rightness.Should().Be(0); batch[1].Rightness.Should().Be(1); batch[2].Rightness.Should().Be(15); }
public void Prioritizes_code_over_storage_over_state() { IPendingSyncItems items = Init(); items.MaxStateLevel = 64; PushState(items, 64, 0); PushStorage(items, 32, 0); PushCode(items); items.RecalculatePriorities(); List <StateSyncItem> batch = items.TakeBatch(256); items.Count.Should().Be(0); batch[0].NodeDataType.Should().Be(NodeDataType.Code); batch[1].NodeDataType.Should().Be(NodeDataType.Storage); batch[2].NodeDataType.Should().Be(NodeDataType.State); }
public void Prioritizes_depth() { IPendingSyncItems items = Init(); items.MaxStateLevel = 64; PushState(items, 0, 0); PushState(items, 32, 0); PushState(items, 64, 0); items.RecalculatePriorities(); List <StateSyncItem> batch = items.TakeBatch(256); items.Count.Should().Be(0); batch[0].Level.Should().Be(64); batch[1].Level.Should().Be(32); batch[2].Level.Should().Be(0); }
public void Can_clear_at_start() { IPendingSyncItems items = Init(); items.Clear(); }
public void Peek_state_is_null_at_start() { IPendingSyncItems items = Init(); items.PeekState().Should().Be(null); }
public void Can_recalculate_priorities_at_start() { IPendingSyncItems items = Init(); items.RecalculatePriorities().Should().NotBeNullOrWhiteSpace(); }
public void Description_does_not_throw_at_start() { IPendingSyncItems items = Init(); items.Description.Should().NotBeNullOrWhiteSpace(); }
public void At_start_count_is_zero() { IPendingSyncItems items = Init(); items.Count.Should().Be(0); }
private static StateSyncItem PushState(IPendingSyncItems items, int level, uint rightness, int progress = 0) { return(PushItem(items, NodeDataType.State, level, rightness, progress)); }
private static StateSyncItem PushCode(IPendingSyncItems items, int progress = 0) { return(PushItem(items, NodeDataType.Code, 0, 0, progress)); }