Skip to content

Commit

Permalink
show logs
Browse files Browse the repository at this point in the history
  • Loading branch information
dkijania committed Oct 14, 2021
1 parent 2de50e2 commit 449fd71
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 29 deletions.
12 changes: 1 addition & 11 deletions testing/jormungandr-scenario-tests/src/node.rs
Expand Up @@ -14,8 +14,7 @@ use chain_impl_mockchain::{
use jormungandr_lib::{
crypto::hash::Hash,
interfaces::{
FragmentLog, LeadershipLog, Log, LogEntry, LogOutput, NodeState, NodeStatsDto, PeerRecord,
PeerStats, VotePlanStatus,
FragmentLog, LeadershipLog, NodeState, NodeStatsDto, PeerRecord, PeerStats, VotePlanStatus,
},
multiaddr,
};
Expand Down Expand Up @@ -633,15 +632,6 @@ pub struct SpawnBuilder<'a, R: RngCore, N> {

impl<'a, R: RngCore, N> SpawnBuilder<'a, R, N> {
pub fn new(context: &'a Context<R>, node_settings: &'a mut NodeSetting) -> Self {
// Ensure that logs are set in JSON format and output to stdout
// when spawning a new Node.
let format = "json";
let level = context.log_level();
node_settings.config.log = Some(Log(LogEntry {
format: format.to_string(),
level,
output: LogOutput::Stdout,
}));
Self {
jormungandr: PathBuf::new(),
context,
Expand Down
62 changes: 56 additions & 6 deletions testing/jormungandr-scenario-tests/src/scenario/controller.rs
Expand Up @@ -21,6 +21,11 @@ use chain_impl_mockchain::testing::scenario::template::{
};
use indicatif::{MultiProgress, ProgressBar};
use jormungandr_lib::crypto::hash::Hash;
use jormungandr_lib::interfaces::Log;
use jormungandr_lib::interfaces::LogEntry;
use jormungandr_lib::interfaces::LogOutput;
use jormungandr_testing_utils::testing::node::LogLevel;
use jormungandr_testing_utils::testing::BlockDateGenerator;
use jormungandr_testing_utils::{
stake_pool::StakePool,
testing::{
Expand Down Expand Up @@ -355,6 +360,20 @@ impl Controller {
let mut node_setting_overriden = node_setting.clone();
params.override_settings(&mut node_setting_overriden.config);

let log_file_path = self
.node_dir(params.get_alias())
.child("node.log")
.path()
.to_path_buf();
node_setting_overriden.config.log = Some(Log(LogEntry {
format: "json".into(),
level: params
.get_log_level()
.unwrap_or(&LogLevel::DEBUG)
.to_string(),
output: LogOutput::File(log_file_path),
}));

let block0_setting = match params.get_leadership_mode() {
LeadershipMode::Leader => NodeBlock0::File(self.block0_file.as_path().into()),
LeadershipMode::Passive => NodeBlock0::Hash(self.block0_hash),
Expand Down Expand Up @@ -391,6 +410,20 @@ impl Controller {
let mut node_setting_overriden = node_setting.clone();
params.override_settings(&mut node_setting_overriden.config);

let log_file_path = self
.node_dir(params.get_alias())
.child("node.log")
.path()
.to_path_buf();
node_setting_overriden.config.log = Some(Log(LogEntry {
format: "json".into(),
level: params
.get_log_level()
.unwrap_or(&LogLevel::DEBUG)
.to_string(),
output: LogOutput::File(log_file_path),
}));

// remove all id from trusted peers for current version
for trusted_peer in node_setting_overriden.config.p2p.trusted_peers.iter_mut() {
trusted_peer.id = None;
Expand Down Expand Up @@ -478,14 +511,31 @@ impl Controller {
builder.dump_fragments_into(root_dir.join("fragments"));
let hash = Hash::from_hash(self.block0_hash);

let blockchain_configuration = self
.settings
.network_settings
.block0
.blockchain_configuration
.clone();

let block_date_generator = BlockDateGenerator::Rolling {
block0_time: blockchain_configuration.block0_date.into(),
slot_duration: {
let slot_duration: u8 = blockchain_configuration.slot_duration.into();
slot_duration.into()
},
slots_per_epoch: blockchain_configuration.slots_per_epoch.into(),
shift: BlockDate {
epoch: 1,
slot_id: 0,
},
shift_back: false,
};

FragmentSender::new(
hash,
self.settings
.network_settings
.block0
.blockchain_configuration
.linear_fees,
BlockDate::first().next_epoch().into(),
blockchain_configuration.linear_fees,
block_date_generator,
builder.build(),
)
}
Expand Down
Expand Up @@ -114,15 +114,12 @@ pub fn leader_restart(mut context: Context<ChaChaRng>) -> Result<ScenarioResult>
)?;
leader_2.wait_for_bootstrap()?;

let leader = controller
.spawn_node_custom(controller.new_spawn_params(LEADER).policy(policy).leader())?;
let leader =
controller.spawn_node(LEADER, LeadershipMode::Passive, PersistenceMode::Persistent)?;
leader.wait_for_bootstrap()?;

let passive = controller.spawn_node(
PASSIVE,
LeadershipMode::Passive,
PersistenceMode::Persistent,
)?;
let passive = controller
.spawn_node_custom(controller.new_spawn_params(LEADER).policy(policy).passive())?;
passive.wait_for_bootstrap()?;

let mut wallet1 = controller.wallet("unassigned1")?;
Expand Down
Expand Up @@ -39,7 +39,7 @@ pub enum AdversaryFragmentSenderError {
SendFragmentError(#[from] super::node::FragmentNodeError),
#[error("cannot send fragment")]
FragmentVerifierError(#[from] super::FragmentVerifierError),
#[error("fragment exporter error")]
#[error(transparent)]
FragmentExporterError(#[from] FragmentExporterError),
#[error("cannot sync node before sending fragment")]
SyncNodeError(#[from] crate::testing::SyncNodeError),
Expand Down
Expand Up @@ -69,6 +69,7 @@ impl FragmentExporter {
) -> Result<(), FragmentExporterError> {
let file_name = self.generate_file_name(fragment, sender, via);
let file_path = self.dump_folder.join(file_name);

let mut file = fs::File::create(&file_path)
.map_err(|_| FragmentExporterError::CannotCreateDumpFile(file_path))?;

Expand Down Expand Up @@ -97,7 +98,7 @@ impl FragmentExporter {

format!(
"{}_{}_from_{}_to_{}.txt",
now.format("%F_%H_%M_%S_%f"),
now.format("%F_%H_%M_%S"),
self.format_id(fragment.hash()),
self.format_address(sender.address()),
alias
Expand All @@ -120,6 +121,6 @@ impl FragmentExporter {
}

fn format_hash(&self, hash: String) -> String {
hash
hash[..6].to_owned()
}
}
Expand Up @@ -47,7 +47,7 @@ pub enum FragmentSenderError {
WalletError(#[from] crate::wallet::WalletError),
#[error("wrong sender configuration: cannot use disable transaction auto confirm when sending more than one transaction")]
TransactionAutoConfirmDisabledError,
#[error("fragment exporter error")]
#[error(transparent)]
FragmentExporterError(#[from] FragmentExporterError),
}

Expand Down
Expand Up @@ -138,7 +138,7 @@ impl Controller {
.get_log_level()
.unwrap_or(&LogLevel::DEBUG)
.to_string(),
output: LogOutput::Stdout,
output: LogOutput::File(log_file_path.clone()),
}));

if let PersistenceMode::Persistent = spawn_params.get_persistence_mode() {
Expand Down

0 comments on commit 449fd71

Please sign in to comment.