fixed demo
This commit is contained in:
parent
65352ce8e7
commit
7faa2b8698
|
@ -40,7 +40,6 @@ fn main() {
|
||||||
let mut threads = 4usize;
|
let mut threads = 4usize;
|
||||||
let mut num_nodes = 10usize;
|
let mut num_nodes = 10usize;
|
||||||
let mut leader = "leader.json".to_string();
|
let mut leader = "leader.json".to_string();
|
||||||
let mut client_addr: SocketAddr = "127.0.0.1:8010".parse().unwrap();
|
|
||||||
|
|
||||||
let mut opts = Options::new();
|
let mut opts = Options::new();
|
||||||
opts.optopt("l", "", "leader", "leader.json");
|
opts.optopt("l", "", "leader", "leader.json");
|
||||||
|
@ -70,9 +69,13 @@ fn main() {
|
||||||
if matches.opt_present("l") {
|
if matches.opt_present("l") {
|
||||||
leader = matches.opt_str("l").unwrap();
|
leader = matches.opt_str("l").unwrap();
|
||||||
}
|
}
|
||||||
if matches.opt_present("c") {
|
let client_addr: Arc<RwLock<SocketAddr>> =
|
||||||
client_addr = matches.opt_str("c").unwrap().parse().unwrap();
|
if matches.opt_present("c") {
|
||||||
}
|
let addr = matches.opt_str("c").unwrap().parse().unwrap();
|
||||||
|
Arc::new(RwLock::new(addr))
|
||||||
|
} else {
|
||||||
|
Arc::new(RwLock::new("127.0.0.1:8010".parse().unwrap()))
|
||||||
|
};
|
||||||
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");
|
||||||
}
|
}
|
||||||
|
@ -108,7 +111,7 @@ fn main() {
|
||||||
eprintln!("failed to parse json: {}", e);
|
eprintln!("failed to parse json: {}", e);
|
||||||
exit(1);
|
exit(1);
|
||||||
});
|
});
|
||||||
let mut client = mk_client(&mut client_addr, &leader);
|
let mut client = mk_client(&client_addr, &leader);
|
||||||
|
|
||||||
println!("Get last ID...");
|
println!("Get last ID...");
|
||||||
let last_id = client.get_last_id().wait().unwrap();
|
let last_id = client.get_last_id().wait().unwrap();
|
||||||
|
@ -146,7 +149,7 @@ fn main() {
|
||||||
let chunks: Vec<_> = transactions.chunks(sz).collect();
|
let chunks: Vec<_> = transactions.chunks(sz).collect();
|
||||||
chunks.into_par_iter().for_each(|trs| {
|
chunks.into_par_iter().for_each(|trs| {
|
||||||
println!("Transferring 1 unit {} times... to", trs.len());
|
println!("Transferring 1 unit {} times... to", trs.len());
|
||||||
let client = mk_client(&mut client_addr, &leader);
|
let client = mk_client(&client_addr, &leader);
|
||||||
for tr in trs {
|
for tr in trs {
|
||||||
client.transfer_signed(tr.clone()).unwrap();
|
client.transfer_signed(tr.clone()).unwrap();
|
||||||
}
|
}
|
||||||
|
@ -168,7 +171,7 @@ fn main() {
|
||||||
}
|
}
|
||||||
for val in validators {
|
for val in validators {
|
||||||
println!("Checking balance on {} ...", val.events_addr);
|
println!("Checking balance on {} ...", val.events_addr);
|
||||||
let mut client = mk_client(&mut client_addr, &val);
|
let mut client = mk_client(&client_addr, &val);
|
||||||
let mut tx_count = client.transaction_count();
|
let mut tx_count = client.transaction_count();
|
||||||
duration = now.elapsed();
|
duration = now.elapsed();
|
||||||
let txs = tx_count - initial_tx_count;
|
let txs = tx_count - initial_tx_count;
|
||||||
|
@ -183,14 +186,13 @@ fn main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mk_client(client_addr: &mut SocketAddr, r: &ReplicatedData) -> ThinClient {
|
fn mk_client(locked_addr: &Arc<RwLock<SocketAddr>>, r: &ReplicatedData) -> ThinClient {
|
||||||
let port = client_addr.port();
|
let mut addr = locked_addr.write().unwrap();
|
||||||
let c = client_addr.clone();
|
let port = addr.port();
|
||||||
let events_socket = UdpSocket::bind(c).unwrap();
|
let events_socket = UdpSocket::bind(addr.clone()).unwrap();
|
||||||
let mut addr = events_socket.local_addr().unwrap();
|
|
||||||
addr.set_port(port + 1);
|
addr.set_port(port + 1);
|
||||||
let requests_socket = UdpSocket::bind(addr).unwrap();
|
let requests_socket = UdpSocket::bind(addr.clone()).unwrap();
|
||||||
client_addr.set_port(port + 2);
|
addr.set_port(port + 2);
|
||||||
ThinClient::new(
|
ThinClient::new(
|
||||||
r.requests_addr,
|
r.requests_addr,
|
||||||
requests_socket,
|
requests_socket,
|
||||||
|
@ -199,10 +201,11 @@ fn mk_client(client_addr: &mut SocketAddr, r: &ReplicatedData) -> ThinClient {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn spy_node(client_addr: &SocketAddr) -> (ReplicatedData, UdpSocket) {
|
fn spy_node(client_addr: &Arc<RwLock<SocketAddr>>) -> (ReplicatedData, UdpSocket) {
|
||||||
let mut addr = client_addr.clone();
|
let mut addr = client_addr.write().unwrap();
|
||||||
addr.set_port(0);
|
let port = addr.port();
|
||||||
let gossip = UdpSocket::bind(addr).unwrap();
|
let gossip = UdpSocket::bind(addr.clone()).unwrap();
|
||||||
|
addr.set_port(port + 1);
|
||||||
let daddr = "0.0.0.0:0".parse().unwrap();
|
let daddr = "0.0.0.0:0".parse().unwrap();
|
||||||
let pubkey = KeyPair::new().pubkey();
|
let pubkey = KeyPair::new().pubkey();
|
||||||
let node = ReplicatedData::new(pubkey, gossip.local_addr().unwrap(), daddr, daddr, daddr);
|
let node = ReplicatedData::new(pubkey, gossip.local_addr().unwrap(), daddr, daddr, daddr);
|
||||||
|
@ -210,13 +213,12 @@ fn spy_node(client_addr: &SocketAddr) -> (ReplicatedData, UdpSocket) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn converge(
|
fn converge(
|
||||||
client_addr: &SocketAddr,
|
client_addr: &Arc<RwLock<SocketAddr>>,
|
||||||
leader: &ReplicatedData,
|
leader: &ReplicatedData,
|
||||||
exit: Arc<AtomicBool>,
|
exit: Arc<AtomicBool>,
|
||||||
num_nodes: usize,
|
num_nodes: usize,
|
||||||
threads: &mut Vec<JoinHandle<()>>,
|
threads: &mut Vec<JoinHandle<()>>,
|
||||||
) -> Vec<ReplicatedData> {
|
) -> Vec<ReplicatedData> {
|
||||||
let daddr = "0.0.0.0:0".parse().unwrap();
|
|
||||||
//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);
|
||||||
|
|
Loading…
Reference in New Issue