Dump chain to JSON file

This commit is contained in:
Paul Hauner 2019-01-26 08:25:56 +11:00
parent 90ae2298ab
commit eb77fb75b7
No known key found for this signature in database
GPG Key ID: D362883A9218FCC6
4 changed files with 15 additions and 1 deletions

View File

@ -13,7 +13,9 @@ failure = "0.1"
failure_derive = "0.1" failure_derive = "0.1"
genesis = { path = "../../eth2/genesis" } genesis = { path = "../../eth2/genesis" }
hashing = { path = "../../eth2/utils/hashing" } hashing = { path = "../../eth2/utils/hashing" }
serde = "1.0"
serde_derive = "1.0" serde_derive = "1.0"
serde_json = "1.0"
slot_clock = { path = "../../eth2/utils/slot_clock" } slot_clock = { path = "../../eth2/utils/slot_clock" }
ssz = { path = "../../eth2/utils/ssz" } ssz = { path = "../../eth2/utils/ssz" }
types = { path = "../../eth2/types" } types = { path = "../../eth2/types" }

View File

@ -1,7 +1,8 @@
use super::{BeaconChain, ClientDB, DBError, SlotClock}; use super::{BeaconChain, ClientDB, DBError, SlotClock};
use serde_derive::Serialize;
use types::{BeaconBlock, BeaconState, Hash256}; use types::{BeaconBlock, BeaconState, Hash256};
#[derive(Debug, Clone)] #[derive(Debug, Clone, Serialize)]
pub struct SlotDump { pub struct SlotDump {
pub beacon_block: BeaconBlock, pub beacon_block: BeaconBlock,
pub beacon_block_root: Hash256, pub beacon_block_root: Hash256,

View File

@ -15,4 +15,6 @@ fn it_can_produce_blocks() {
let dump = rig.chain_dump().expect("Chain dump failed."); let dump = rig.chain_dump().expect("Chain dump failed.");
assert_eq!(dump.len(), blocks + 1); // + 1 for genesis block. assert_eq!(dump.len(), blocks + 1); // + 1 for genesis block.
rig.dump_to_file("/tmp/chaindump.json".to_string(), &dump);
} }

View File

@ -6,7 +6,10 @@ use db::{
stores::{BeaconBlockStore, BeaconStateStore}, stores::{BeaconBlockStore, BeaconStateStore},
MemoryDB, MemoryDB,
}; };
use serde_json::Result as SerdeResult;
use slot_clock::TestingSlotClock; use slot_clock::TestingSlotClock;
use std::fs::File;
use std::io::prelude::*;
use std::sync::Arc; use std::sync::Arc;
use types::{ChainSpec, Keypair, Validator}; use types::{ChainSpec, Keypair, Validator};
@ -87,4 +90,10 @@ impl TestRig {
pub fn chain_dump(&self) -> Result<Vec<SlotDump>, DumpError> { pub fn chain_dump(&self) -> Result<Vec<SlotDump>, DumpError> {
self.beacon_chain.chain_dump() self.beacon_chain.chain_dump()
} }
pub fn dump_to_file(&self, filename: String, chain_dump: &Vec<SlotDump>) {
let json = serde_json::to_string(chain_dump).unwrap();
let mut file = File::create(filename).unwrap();
file.write_all(json.as_bytes());
}
} }