Add an system_syncState RPC method (#7315)

* Add system_syncState RPC method

* Update client/rpc-api/src/system/helpers.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This commit is contained in:
Pierre Krieger
2020-10-13 17:53:49 +02:00
committed by GitHub
parent e4cb862123
commit bcde7b4f3f
6 changed files with 83 additions and 5 deletions
@@ -86,6 +86,18 @@ pub enum NodeRole {
Sentry,
}
/// The state of the syncing of the node.
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SyncState<Number> {
/// Height of the block at which syncing started.
pub starting_block: Number,
/// Height of the current best block of the node.
pub current_block: Number,
/// Height of the highest block learned from the network. Missing if no block is known yet.
#[serde(default = "Default::default", skip_serializing_if = "Option::is_none")]
pub highest_block: Option<Number>,
}
#[cfg(test)]
mod tests {
use super::*;
@@ -114,4 +126,25 @@ mod tests {
r#"{"peerId":"2","roles":"a","bestHash":5,"bestNumber":6}"#,
);
}
#[test]
fn should_serialize_sync_state() {
assert_eq!(
::serde_json::to_string(&SyncState {
starting_block: 12u32,
current_block: 50u32,
highest_block: Some(128u32),
}).unwrap(),
r#"{"startingBlock":12,"currentBlock":50,"highestBlock":128}"#,
);
assert_eq!(
::serde_json::to_string(&SyncState {
starting_block: 12u32,
current_block: 50u32,
highest_block: None,
}).unwrap(),
r#"{"startingBlock":12,"currentBlock":50}"#,
);
}
}