Minor fixes, testing server peer count.

This commit is contained in:
Ignotus Peverell 2016-12-13 16:05:24 -08:00
parent 7bea7341ab
commit 19a700b81e
No known key found for this signature in database
GPG key ID: 99CD25F39F8F8211
3 changed files with 15 additions and 6 deletions

View file

@ -1,5 +1,5 @@
[package] [package]
name = "grin_p2p_fut" name = "grin_p2p"
version = "0.1.0" version = "0.1.0"
authors = ["Ignotus Peverell <igno.peverell@protonmail.com>"] authors = ["Ignotus Peverell <igno.peverell@protonmail.com>"]

View file

@ -117,9 +117,9 @@ impl Server {
pub fn connect_peer(&self, pub fn connect_peer(&self,
addr: SocketAddr, addr: SocketAddr,
h: reactor::Handle) h: reactor::Handle)
-> Box<Future<Item = (), Error = Error>> { -> Box<Future<Item = (), Error = ()>> {
let socket = TcpStream::connect(&addr, &h).map_err(|e| Error::IOErr(e));
let peers = self.peers.clone(); let peers = self.peers.clone();
let socket = TcpStream::connect(&addr, &h).map_err(|e| Error::IOErr(e));
let request = socket.and_then(move |socket| { let request = socket.and_then(move |socket| {
let peers = peers.clone(); let peers = peers.clone();
@ -128,10 +128,15 @@ impl Server {
let peer_connect = add_to_peers(peers, Peer::connect(socket, &Handshake::new())); let peer_connect = add_to_peers(peers, Peer::connect(socket, &Handshake::new()));
with_timeout(Box::new(peer_connect), &h) with_timeout(Box::new(peer_connect), &h)
}) })
.and_then(|(socket, peer)| peer.run(socket, &DummyAdapter {})); .and_then(|(socket, peer)| peer.run(socket, &DummyAdapter {}))
.map_err(|_| ());
Box::new(request) Box::new(request)
} }
pub fn peers_count(&self) -> u32 {
self.peers.read().unwrap().len() as u32
}
/// Stops the server. Disconnect from all peers at the same time. /// Stops the server. Disconnect from all peers at the same time.
pub fn stop(self) { pub fn stop(self) {
let peers = self.peers.write().unwrap(); let peers = self.peers.write().unwrap();

View file

@ -13,7 +13,7 @@
// limitations under the License. // limitations under the License.
extern crate grin_core as core; extern crate grin_core as core;
extern crate grin_p2p_fut as p2p; extern crate grin_p2p as p2p;
extern crate env_logger; extern crate env_logger;
extern crate futures; extern crate futures;
extern crate tokio_core; extern crate tokio_core;
@ -60,7 +60,11 @@ fn peer_handshake() {
assert!(sent > 0); assert!(sent > 0);
assert!(recv > 0); assert!(recv > 0);
Ok(()) Ok(())
}).and_then(|_| {server.stop(); Ok(())}) }).and_then(|_| {
assert!(server.peers_count() > 0);
server.stop();
Ok(())
})
}).map_err(|e| { }).map_err(|e| {
panic!("Client connection failed: {}", e); panic!("Client connection failed: {}", e);
})); }));