Attempt to revive the singlenode demo

This commit is contained in:
Greg Fitzgerald
2018-05-31 16:48:03 -06:00
committed by Grimes
parent 2580155bf2
commit 4c0f3ed6f3

View File

@@ -19,7 +19,7 @@ use solana::transaction::Transaction;
use std::env; use std::env;
use std::fs::File; use std::fs::File;
use std::io::{stdin, Read}; use std::io::{stdin, Read};
use std::net::{IpAddr, SocketAddr, UdpSocket}; use std::net::{IpAddr, Ipv4Addr, SocketAddr, UdpSocket};
use std::process::exit; use std::process::exit;
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::{Arc, RwLock}; use std::sync::{Arc, RwLock};
@@ -50,13 +50,13 @@ fn get_ip_addr() -> Option<IpAddr> {
fn main() { fn main() {
let mut threads = 4usize; let mut threads = 4usize;
let mut num_nodes = 10usize; let mut num_nodes = 0usize;
let mut leader = "leader.json".to_string();
let mut opts = Options::new(); let mut opts = Options::new();
opts.optopt("l", "", "leader", "leader.json"); opts.optopt("l", "", "leader", "leader.json");
opts.optopt("c", "", "client port", "port"); opts.optopt("c", "", "client port", "port");
opts.optopt("t", "", "number of threads", &format!("{}", threads)); opts.optopt("t", "", "number of threads", &format!("{}", threads));
opts.optflag("d", "dyn", "detect network address dynamically");
opts.optopt( opts.optopt(
"n", "n",
"", "",
@@ -78,15 +78,14 @@ fn main() {
print_usage(&program, opts); print_usage(&program, opts);
return; return;
} }
if matches.opt_present("l") { let mut addr: SocketAddr = "0.0.0.0:8010".parse().unwrap();
leader = matches.opt_str("l").unwrap();
}
let mut addr: SocketAddr = "127.0.0.1:8010".parse().unwrap();
if matches.opt_present("c") { if matches.opt_present("c") {
let port = matches.opt_str("c").unwrap().parse().unwrap(); let port = matches.opt_str("c").unwrap().parse().unwrap();
addr.set_port(port); addr.set_port(port);
} }
addr.set_ip(get_ip_addr().unwrap()); if matches.opt_present("d") {
addr.set_ip(get_ip_addr().unwrap());
}
let client_addr: Arc<RwLock<SocketAddr>> = Arc::new(RwLock::new(addr)); let client_addr: Arc<RwLock<SocketAddr>> = Arc::new(RwLock::new(addr));
if matches.opt_present("t") { if matches.opt_present("t") {
threads = matches.opt_str("t").unwrap().parse().expect("integer"); threads = matches.opt_str("t").unwrap().parse().expect("integer");
@@ -95,7 +94,13 @@ fn main() {
num_nodes = matches.opt_str("n").unwrap().parse().expect("integer"); num_nodes = matches.opt_str("n").unwrap().parse().expect("integer");
} }
let leader: ReplicatedData = read_leader(leader); let leader = if matches.opt_present("l") {
read_leader(matches.opt_str("l").unwrap())
} else {
let server_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 8000);
ReplicatedData::new_leader(&server_addr)
};
let signal = Arc::new(AtomicBool::new(false)); let signal = Arc::new(AtomicBool::new(false));
let mut c_threads = vec![]; let mut c_threads = vec![];
let validators = converge( let validators = converge(
@@ -237,6 +242,10 @@ fn converge(
num_nodes: usize, num_nodes: usize,
threads: &mut Vec<JoinHandle<()>>, threads: &mut Vec<JoinHandle<()>>,
) -> Vec<ReplicatedData> { ) -> Vec<ReplicatedData> {
if num_nodes <= 2 {
return vec![];
}
//lets spy on the network //lets spy on the network
let daddr = "0.0.0.0:0".parse().unwrap(); let daddr = "0.0.0.0:0".parse().unwrap();
let (spy, spy_gossip) = spy_node(client_addr); let (spy, spy_gossip) = spy_node(client_addr);