mirror of
https://github.com/mimblewimble/grin.git
synced 2025-05-08 02:01:14 +03:00
test: avoid infinite waiting on basic_stratum_server test (#1634)
* test: avoid infinite waiting on basic_stratum_server test * rustfmt
This commit is contained in:
parent
4a6cae0fe6
commit
147159b0bd
1 changed files with 22 additions and 0 deletions
|
@ -22,6 +22,8 @@ extern crate grin_wallet as wallet;
|
|||
|
||||
extern crate bufstream;
|
||||
extern crate serde_json;
|
||||
#[macro_use]
|
||||
extern crate slog;
|
||||
|
||||
mod framework;
|
||||
|
||||
|
@ -30,9 +32,11 @@ use serde_json::Value;
|
|||
use std::io::prelude::{BufRead, Write};
|
||||
use std::net::TcpStream;
|
||||
|
||||
use std::process;
|
||||
use std::{thread, time};
|
||||
|
||||
use core::global::{self, ChainTypes};
|
||||
use util::LOGGER;
|
||||
|
||||
use framework::{config, stratum_config};
|
||||
|
||||
|
@ -71,6 +75,7 @@ fn basic_stratum_server() {
|
|||
}
|
||||
// As this stream falls out of scope it will be disconnected
|
||||
}
|
||||
info!(LOGGER, "stratum server connected");
|
||||
|
||||
// Create a few new worker connections
|
||||
let mut workers = vec![];
|
||||
|
@ -82,6 +87,7 @@ fn basic_stratum_server() {
|
|||
workers.push(stream);
|
||||
}
|
||||
assert!(workers.len() == 5);
|
||||
info!(LOGGER, "workers length verification ok");
|
||||
|
||||
// Simulate a worker lost connection
|
||||
workers.remove(4);
|
||||
|
@ -110,6 +116,7 @@ fn basic_stratum_server() {
|
|||
assert!(false);
|
||||
}
|
||||
}
|
||||
info!(LOGGER, "a few stratum JSONRpc commands verification ok");
|
||||
|
||||
// keepalive - expected "ok" result
|
||||
let mut response = String::new();
|
||||
|
@ -120,6 +127,7 @@ fn basic_stratum_server() {
|
|||
thread::sleep(time::Duration::from_secs(1)); // Wait for the server to reply
|
||||
let _st = workers[2].read_line(&mut response);
|
||||
assert_eq!(response.as_str(), ok_resp);
|
||||
info!(LOGGER, "keepalive test ok");
|
||||
|
||||
// "doesnotexist" - error expected
|
||||
let mut response = String::new();
|
||||
|
@ -130,6 +138,7 @@ fn basic_stratum_server() {
|
|||
thread::sleep(time::Duration::from_secs(1)); // Wait for the server to reply
|
||||
let _st = workers[3].read_line(&mut response);
|
||||
assert_eq!(response.as_str(), ok_resp);
|
||||
info!(LOGGER, "worker doesnotexist test ok");
|
||||
|
||||
// Verify stratum server and worker stats
|
||||
let stats = s.get_server_stats().unwrap();
|
||||
|
@ -137,9 +146,20 @@ fn basic_stratum_server() {
|
|||
assert_eq!(stats.stratum_stats.num_workers, 4); // 5 - 1 = 4
|
||||
assert_eq!(stats.stratum_stats.worker_stats[5].is_connected, false); // worker was removed
|
||||
assert_eq!(stats.stratum_stats.worker_stats[1].is_connected, true);
|
||||
info!(LOGGER, "stratum server and worker stats verification ok");
|
||||
|
||||
// Start mining blocks
|
||||
s.start_test_miner(None);
|
||||
info!(LOGGER, "test miner started");
|
||||
|
||||
// This test is supposed to complete in 3 seconds,
|
||||
// so let's set a timeout on 10s to avoid infinite waiting happened in Travis-CI.
|
||||
let handler = thread::spawn(|| {
|
||||
thread::sleep(time::Duration::from_secs(10));
|
||||
error!(LOGGER, "basic_stratum_server test fail on timeout!");
|
||||
thread::sleep(time::Duration::from_millis(100));
|
||||
process::exit(1);
|
||||
});
|
||||
|
||||
// Simulate a worker lost connection
|
||||
workers.remove(1);
|
||||
|
@ -151,10 +171,12 @@ fn basic_stratum_server() {
|
|||
let _st = workers[2].read_line(&mut jobtemplate);
|
||||
let job_template: Value = serde_json::from_str(&jobtemplate).unwrap();
|
||||
assert_eq!(job_template["method"], expected);
|
||||
info!(LOGGER, "blocks broadcasting to workers test ok");
|
||||
|
||||
// Verify stratum server and worker stats
|
||||
let stats = s.get_server_stats().unwrap();
|
||||
assert_eq!(stats.stratum_stats.num_workers, 3); // 5 - 2 = 3
|
||||
assert_eq!(stats.stratum_stats.worker_stats[2].is_connected, false); // worker was removed
|
||||
assert_ne!(stats.stratum_stats.block_height, 1);
|
||||
info!(LOGGER, "basic_stratum_server test done and ok.");
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue