diff --git a/ipc/tests/Cargo.toml b/ipc/tests/Cargo.toml index 931bf8061..035de644c 100644 --- a/ipc/tests/Cargo.toml +++ b/ipc/tests/Cargo.toml @@ -14,6 +14,8 @@ serde = "0.7.0" ethcore-devtools = { path = "../../devtools" } semver = "0.2.0" nanomsg = "0.5.0" +ethcore-ipc-nano = { path = "../nano" } + [build-dependencies] syntex = "0.30.0" diff --git a/ipc/tests/over_nano.rs b/ipc/tests/over_nano.rs new file mode 100644 index 000000000..944f12c2e --- /dev/null +++ b/ipc/tests/over_nano.rs @@ -0,0 +1,54 @@ +// Copyright 2015, 2016 Ethcore (UK) Ltd. +// This file is part of Parity. + +// Parity is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity. If not, see . + +#[cfg(test)] +mod tests { + + use super::super::service::*; + use nanoipc; + use std::sync::Arc; + + fn init_worker(addr: &str) -> nanoipc::Worker { + let mut worker = nanoipc::Worker::::new(Arc::new(Service::new())); + worker.add_duplex(addr).unwrap(); + worker + } + + #[test] + fn can_create_client() { + let client = nanoipc::init_client::>("ipc:///tmp/parity-examples-test10.ipc"); + assert!(client.is_ok()); + } + + #[test] + fn can_call_handshake() { + let exit = Arc::new(::std::sync::atomic::AtomicBool::new(false)); + let url = "ipc:///tmp/parity-test-examples-20.ipc"; + + let worker_exit = exit.clone(); + ::std::thread::spawn(move || { + let mut worker = init_worker(url); + while !worker_exit.load(::std::sync::atomic::Ordering::Relaxed) { worker.poll() } + }); + let client = nanoipc::init_client::>(url).unwrap(); + + let hs = client.handshake(); + + exit.store(true, ::std::sync::atomic::Ordering::Relaxed); + assert!(hs.is_ok()); + } + +} diff --git a/ipc/tests/run.rs b/ipc/tests/run.rs index 0b86fe368..d3eb15287 100644 --- a/ipc/tests/run.rs +++ b/ipc/tests/run.rs @@ -20,6 +20,8 @@ extern crate serde; extern crate ethcore_devtools as devtools; extern crate semver; extern crate nanomsg; +extern crate ethcore_ipc_nano as nanoipc; pub mod service; mod examples; +mod over_nano;