diff --git a/src/test/connector.rs b/src/test/connector.rs new file mode 100644 index 0000000000000000000000000000000000000000..9c80bba69266419dedbd025808a678de844be1fe --- /dev/null +++ b/src/test/connector.rs @@ -0,0 +1,55 @@ +extern crate test_generator; + +use super::*; + +use std::fs; +use std::path::Path; +use std::thread; +use test_generator::test_resources; + +use crate::common::*; +use crate::runtime::*; + +#[test_resources("testdata/connector/duo/*.apdl")] +fn batch1(resource: &str) { + let a = Path::new(resource); + let b = a.with_extension("bpdl"); + let a = fs::read_to_string(a).unwrap(); + let b = fs::read_to_string(b).unwrap(); + duo(a, b); +} + +fn duo(one: String, two: String) { + let a = thread::spawn(move || { + let timeout = Duration::from_millis(1_500); + let addrs = ["127.0.0.1:7010".parse().unwrap(), "127.0.0.1:7011".parse().unwrap()]; + let mut x = Connector::Unconfigured(Unconfigured { controller_id: 0 }); + x.configure(one.as_bytes()).unwrap(); + x.bind_port(0, PortBinding::Passive(addrs[0])).unwrap(); + x.bind_port(1, PortBinding::Active(addrs[1])).unwrap(); + x.connect(timeout).unwrap(); + assert_eq!(0, x.sync(timeout).unwrap()); + assert_eq!(0, x.sync(timeout).unwrap()); + assert_eq!(0, x.sync(timeout).unwrap()); + assert_eq!(0, x.sync(timeout).unwrap()); + assert_eq!(0, x.sync(timeout).unwrap()); + assert_eq!(0, x.sync(timeout).unwrap()); + }); + let b = thread::spawn(move || { + let timeout = Duration::from_millis(1_500); + let addrs = ["127.0.0.1:7010".parse().unwrap(), "127.0.0.1:7011".parse().unwrap()]; + let mut x = Connector::Unconfigured(Unconfigured { controller_id: 1 }); + x.configure(two.as_bytes()).unwrap(); + x.bind_port(0, PortBinding::Passive(addrs[1])).unwrap(); + x.bind_port(1, PortBinding::Active(addrs[0])).unwrap(); + x.connect(timeout).unwrap(); + assert_eq!(0, x.sync(timeout).unwrap()); + assert_eq!(0, x.sync(timeout).unwrap()); + assert_eq!(0, x.sync(timeout).unwrap()); + assert_eq!(0, x.sync(timeout).unwrap()); + assert_eq!(0, x.sync(timeout).unwrap()); + assert_eq!(0, x.sync(timeout).unwrap()); + }); + handle(a.join()); + handle(b.join()); +}