From b4febf2e40030f1b4dbadd2cae94c817a745b37c Mon Sep 17 00:00:00 2001 From: Ignotus Peverell Date: Fri, 17 Aug 2018 01:31:51 +0100 Subject: [PATCH] Test teardown cleanup fix Can't reproduce the current failing of servers tests, but stopping the servers cleanly can't hurt. I think. --- servers/tests/framework/mod.rs | 18 +++++++++++++----- servers/tests/simulnet.rs | 12 ++++++++---- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/servers/tests/framework/mod.rs b/servers/tests/framework/mod.rs index 4db11eec7..f745bcf0f 100644 --- a/servers/tests/framework/mod.rs +++ b/servers/tests/framework/mod.rs @@ -24,6 +24,7 @@ extern crate grin_wallet as wallet; extern crate blake2_rfc as blake2; use std::default::Default; +use std::ops::Deref; use std::sync::{Arc, Mutex}; use std::{fs, thread, time}; @@ -175,7 +176,7 @@ impl LocalServerContainer { }) } - pub fn run_server(&mut self, duration_in_seconds: u64) -> servers::ServerStats { + pub fn run_server(&mut self, duration_in_seconds: u64) -> servers::Server { let api_addr = format!("{}:{}", self.config.base_addr, self.config.api_server_port); let mut seeding_type = servers::Seeding::None; @@ -232,7 +233,7 @@ impl LocalServerContainer { self.stop_wallet(); } - s.get_server_stats().unwrap() + s } /// Starts a wallet daemon to receive and returns the @@ -507,7 +508,7 @@ impl LocalServerContainerPool { /// once they've all been run /// - pub fn run_all_servers(self) -> Vec { + pub fn run_all_servers(self) -> Arc>> { let run_length = self.config.run_length_in_seconds; let mut handles = vec![]; @@ -543,9 +544,9 @@ impl LocalServerContainerPool { } } } + // return a much simplified version of the results - let return_vec = return_containers.lock().unwrap(); - return_vec.clone() + return_containers.clone() } pub fn connect_all_peers(&mut self) { @@ -567,6 +568,13 @@ impl LocalServerContainerPool { } } +pub fn stop_all_servers(servers: Arc>>) { + let locked_servs = servers.lock().unwrap(); + for s in locked_servs.deref() { + s.stop(); + } +} + /// Create and return a ServerConfig pub fn config(n: u16, test_name_dir: &str, seed_n: u16) -> servers::ServerConfig { servers::ServerConfig { diff --git a/servers/tests/simulnet.rs b/servers/tests/simulnet.rs index 351c5d463..59b305975 100644 --- a/servers/tests/simulnet.rs +++ b/servers/tests/simulnet.rs @@ -28,7 +28,8 @@ use std::{thread, time}; use core::core::hash::Hashed; use core::global::{self, ChainTypes}; -use framework::{config, stratum_config, LocalServerContainerConfig, LocalServerContainerPool, +use framework::{config, stratum_config, stop_all_servers, + LocalServerContainerConfig, LocalServerContainerPool, LocalServerContainerPoolConfig}; /// Testing the frameworks by starting a fresh server, creating a genesis @@ -59,7 +60,8 @@ fn basic_genesis_mine() { server_config.burn_mining_rewards = true; pool.create_server(&mut server_config); - pool.run_all_servers(); + let servers = pool.run_all_servers(); + stop_all_servers(servers); } /// Creates 5 servers, first being a seed and check that through peer address @@ -106,7 +108,8 @@ fn simulate_seeding() { // pool.connect_all_peers(); - let _ = pool.run_all_servers(); + let servers = pool.run_all_servers(); + stop_all_servers(servers); } /// Create 1 server, start it mining, then connect 4 other peers mining and @@ -160,7 +163,8 @@ fn simulate_parallel_mining() { // pool.connect_all_peers(); - let _ = pool.run_all_servers(); + let servers = pool.run_all_servers(); + stop_all_servers(servers); // Check mining difficulty here?, though I'd think it's more valuable // to simply output it. Can at least see the evolution of the difficulty target