042e80570c
* Add logging on shutdown * Replace tokio::spawn with handle.spawn * Upgrade tokio * Add a task executor * Beacon chain tasks use task executor * Validator client tasks use task executor * Rename runtime_handle to executor * Add duration histograms; minor fixes * Cleanup * Fix logs * Fix tests * Remove random file * Get enr dependency instead of libp2p * Address some review comments * Libp2p takes a TaskExecutor * Ugly fix libp2p tests * Move TaskExecutor to own file * Upgrade Dockerfile rust version * Minor fixes * Revert "Ugly fix libp2p tests" This reverts commit 58d4bb690f52de28d893943b7504d2d0c6621429. * Pretty fix libp2p tests * Add spawn_without_exit; change Counter to Gauge * Tidy * Move log from RuntimeContext to TaskExecutor * Fix errors * Replace histogram with int_gauge for async tasks * Fix todo * Fix memory leak in test by exiting all spawned tasks at the end
56 lines
1.6 KiB
Rust
56 lines
1.6 KiB
Rust
#![cfg(test)]
|
|
|
|
use beacon_chain::StateSkipConfig;
|
|
use node_test_rig::{
|
|
environment::{Environment, EnvironmentBuilder},
|
|
testing_client_config, LocalBeaconNode,
|
|
};
|
|
use types::{EthSpec, MinimalEthSpec, Slot};
|
|
|
|
fn env_builder() -> EnvironmentBuilder<MinimalEthSpec> {
|
|
EnvironmentBuilder::minimal()
|
|
}
|
|
|
|
fn build_node<E: EthSpec>(env: &mut Environment<E>) -> LocalBeaconNode<E> {
|
|
let context = env.core_context();
|
|
env.runtime()
|
|
.block_on(LocalBeaconNode::production(
|
|
context,
|
|
testing_client_config(),
|
|
))
|
|
.expect("should block until node created")
|
|
}
|
|
|
|
#[test]
|
|
fn http_server_genesis_state() {
|
|
let mut env = env_builder()
|
|
.null_logger()
|
|
.expect("should build env logger")
|
|
.multi_threaded_tokio_runtime()
|
|
.expect("should start tokio runtime")
|
|
.build()
|
|
.expect("environment should build");
|
|
|
|
let node = build_node(&mut env);
|
|
let remote_node = node.remote_node().expect("should produce remote node");
|
|
|
|
let (api_state, _root) = env
|
|
.runtime()
|
|
.block_on(remote_node.http.beacon().get_state_by_slot(Slot::new(0)))
|
|
.expect("should fetch state from http api");
|
|
|
|
let mut db_state = node
|
|
.client
|
|
.beacon_chain()
|
|
.expect("client should have beacon chain")
|
|
.state_at_slot(Slot::new(0), StateSkipConfig::WithStateRoots)
|
|
.expect("should find state");
|
|
db_state.drop_all_caches();
|
|
|
|
assert_eq!(
|
|
api_state, db_state,
|
|
"genesis state from api should match that from the DB"
|
|
);
|
|
env.fire_signal();
|
|
}
|