mirror of
https://github.com/mimblewimble/grin.git
synced 2025-01-21 11:31:08 +03:00
030bd0e1d9
* [PIBD_IMPL] Introduce PIBD state into sync workflow (#3685) * experimental addition of pibd download state for testnet only * fixes to bitmap number of segments calculation + conversion of bitmap accumulator to bitmap * attempt to call a test message * add p2p methods for receiving bitmap segment and applying to desegmenter associated with chain * fixes to state sync * add pibd receive messages to network, and basic calls to desegmenter from each (#3686) * [PIBD_IMPL] PIBD Desegmenter State (#3688) * add functions to desegmenter to report next desired segments, begin to add state to determine which segments have been requested * add segmentidentifier type to id requested segments uniquely * make a call on where to keep track of which PIBD segments have been requested * move segmenttype definition, add functions to manipulate peer segment list * remove desegmenter state enum * change chain desegmenter function to provide rwlock * trace, warning cleanup * udpate to test compliation * [PIBD_IMPL] Bitmap accumulator reconstruction + TxHashset set reconstruction (#3689) * application of received bitmap segments to local accumulator * add all required elements to send/receive output segment requests and responses * testing of output sync * add special cases to pmmr segment request * [PIBD_IMPL] PMMR Reassembly from Segments (#3690) * update pibd copy test to use new desgmenter structure * begin reconstruction of output pmmr * clean up hash/leaf insertion logic * push pruned subtree appears to be working, now also calculates left hand hashes correctly * factor out ordering of segment/hash order array * refactor for pmmr application code * test of chain copy appears to be working * add rangeproof functions to desegmenter * add kernel functions, attempt refactor * small test cleanup, reconstruction of live chain working in manual copy test * [PIBD_IMPL] PIBD tree sync via network and kill/resume functionality (#3691) * add functions to determing latest verifiable block height for the given pibd state * attempting to allow for pibd to resume after killing process * fix to ensure prune list is properly flushed during pibd sync * removal of unneeded code * ignore test for now (fix before full merge) * [PIBD_IMPL] Finalize PIBD download and move state to chain validation (#3692) * investigations as to why a slight rewind is needed on startup during PIBD * move validation code into desegmenter validation thread (for now) * ensure genesis entries in pmmrs are removed if they're removed in the first segment * validation all working except for verifying kernel sums * remove unneeded pmmr rollbacks on resume now root cause was found * updates to remove unpruned leaves from leaf set when rebuilding pmmr * remove + 1 to segment traversal iter length * [PIBD_IMPL] PIBD Stats + Retry on validation errors (#3694) * start to add stats and reset chain state after errors detected * add functions to reset prune list when resetting chain pibd state * debug statement * remove test function * [PIBD_IMPL] Update number of simultaneous peer requests for segments (#3696) * cleanup of segment request list * allow for more simultaneous requests during state sync * up number of simultaneous peer requests for segments * [PIBD_IMPL] Thread simplification + More TUI Updates + Stop State Propagation (#3698) * change pibd stat display to show progress as a percentage of downloaded leaves * attempt some inline rp validation * propagate shutdown state through kernel validation * change validation loop timing * simplify validator threading * add more detailed tracking of kernel history validation to tui, allow stop state during * adding more stop state + tui progress indication * remove progressive validate * test fix * revert to previous method of applying segments (#3699) * fix for deadlock issue (#3700) * update Cargo.lock for next release * [PIBD_IMPL] Catch-Up functionality + Fixes based on testing (#3702) * ensure desegmenter attempts to apply correct block after a resumte * ensure txhashset's committed implementation takes into account output bitmap for summing purposes * remove check to de-apply outputs during segment application * return removal of spent outputs during pibd * remove unneeded status * remove uneeded change to rewind function * documentation updates + todo fixes (#3703) * add pibd abort timeout case (#3704) * [PIBD_IMPL] BitmapAccumulator Serialization Fix (#3705) * fix for writing / calculating incorrect length for negative indices * update capabilities with new version of PIBD hist * remove incorrect comment * fix capabilities flag, trace output * test fix * Merge DNSSeed scope changes into pibd impl branch (#3708) * update Cargo.lock for next release * visibility scope tweaks to aid seed test utilities (#3707) * move all PIBD-related constants into pibd_params modules (#3711) * remove potential double read lock during compaction
72 lines
1.8 KiB
Rust
72 lines
1.8 KiB
Rust
// Copyright 2021 The Grin Developers
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
use grin_p2p as p2p;
|
|
|
|
use num::FromPrimitive;
|
|
|
|
// Test that Healthy == 0.
|
|
#[test]
|
|
fn test_store_state_enum() {
|
|
assert_eq!(p2p::State::from_i32(0), Some(p2p::State::Healthy));
|
|
}
|
|
|
|
#[test]
|
|
fn test_direction_enum() {
|
|
assert_eq!(p2p::Direction::from_i32(0), Some(p2p::Direction::Inbound));
|
|
}
|
|
|
|
#[test]
|
|
fn test_reason_for_ban_enum() {
|
|
assert_eq!(
|
|
p2p::types::ReasonForBan::from_i32(0),
|
|
Some(p2p::types::ReasonForBan::None)
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn test_type_enum() {
|
|
assert_eq!(p2p::msg::Type::from_i32(0), Some(p2p::msg::Type::Error));
|
|
}
|
|
|
|
#[test]
|
|
fn test_capabilities() {
|
|
let expected = p2p::types::Capabilities::default();
|
|
|
|
assert_eq!(
|
|
p2p::types::Capabilities::from_bits_truncate(0b00000000 as u32),
|
|
p2p::types::Capabilities::UNKNOWN
|
|
);
|
|
assert_eq!(
|
|
p2p::types::Capabilities::from_bits_truncate(0b10000000 as u32),
|
|
p2p::types::Capabilities::UNKNOWN
|
|
);
|
|
|
|
assert_eq!(
|
|
expected,
|
|
p2p::types::Capabilities::from_bits_truncate(0b1011111 as u32),
|
|
);
|
|
|
|
assert_eq!(
|
|
expected,
|
|
p2p::types::Capabilities::from_bits_truncate(0b01011111 as u32),
|
|
);
|
|
|
|
assert!(p2p::types::Capabilities::from_bits_truncate(0b01011111 as u32).contains(expected));
|
|
|
|
assert!(
|
|
p2p::types::Capabilities::from_bits_truncate(0b00101111 as u32)
|
|
.contains(p2p::types::Capabilities::TX_KERNEL_HASH)
|
|
);
|
|
}
|