Changeset - 63a9f085c357
[Not reviewed]
2 1 0
Hans-Dieter Hiep - 5 years ago 2020-02-04 17:01:31
hdh@cwi.nl
Update connector test
3 files changed with 52 insertions and 88 deletions:
0 comments (0 inline, 0 general)
src/test/connector.rs
Show inline comments
 
@@ -10,84 +10,96 @@ 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 || {
 
#[test]
 
fn incremental() {
 
    let timeout = Duration::from_millis(1_500);
 
    let addrs = ["127.0.0.1:7010".parse().unwrap(), "127.0.0.1:7011".parse().unwrap()];
 
    let a = thread::spawn(move || {
 
        let mut x = Connector::Unconfigured(Unconfigured { controller_id: 0 });
 
        x.configure(one.as_bytes()).unwrap();
 
        x.configure(
 
            b"primitive main(out a, out b) {
 
            synchronous {
 
                msg m = create(0);
 
                put(a, m);
 
            }
 
        }",
 
        )
 
        .unwrap();
 
        x.bind_port(0, PortBinding::Passive(addrs[0])).unwrap();
 
        x.bind_port(1, PortBinding::Active(addrs[1])).unwrap();
 
        x.bind_port(1, PortBinding::Passive(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.configure(
 
            b"primitive main(in a, in b) {
 
            synchronous {
 
                get(a);
 
            }
 
        }",
 
        )
 
        .unwrap();
 
        x.bind_port(0, PortBinding::Active(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());
 
    });
 
    handle(a.join());
 
    handle(b.join());
 
}
 

	
 
#[test]
 
fn incremental() {
 
fn duo() {
 
    let timeout = Duration::from_millis(1_500);
 
    let addrs = ["127.0.0.1:7010".parse().unwrap(), "127.0.0.1:7011".parse().unwrap()];
 
    let addrs = ["127.0.0.1:7012".parse().unwrap(), "127.0.0.1:7013".parse().unwrap()];
 
    let a = thread::spawn(move || {
 
        let mut x = Connector::Unconfigured(Unconfigured { controller_id: 0 });
 
        x.configure(
 
            b"primitive main(out a, out b) {
 
        x.configure(b"
 
        primitive main(out a, out b) {
 
            synchronous {}
 
            synchronous {}
 
            synchronous {
 
                msg m = create(0);
 
                put(a, m);
 
            }
 
        }",
 
        )
 
        .unwrap();
 
            synchronous {
 
                msg m = create(0);
 
                put(b, m);
 
            }
 
        }").unwrap();
 
        x.bind_port(0, PortBinding::Passive(addrs[0])).unwrap();
 
        x.bind_port(1, PortBinding::Passive(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());
 
    });
 
    let b = thread::spawn(move || {
 
        let mut x = Connector::Unconfigured(Unconfigured { controller_id: 1 });
 
        x.configure(
 
            b"primitive main(in a, in b) {
 
        x.configure(b"
 
        primitive main(in a, in b) {
 
            while (true) {
 
                synchronous {
 
                    if (fires(a)) {
 
                        get(a);
 
                    }
 
        }",
 
        )
 
        .unwrap();
 
                }
 
                synchronous {
 
                    if (fires(b)) {
 
                        get(b);
 
                    }
 
                }
 
            }
 
        }").unwrap();
 
        x.bind_port(0, PortBinding::Active(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());
 
    });
 
    handle(a.join());
 
    handle(b.join());
testdata/connector/duo/1.apdl
Show inline comments
 
deleted file
testdata/connector/duo/1.bpdl
Show inline comments
 
deleted file
0 comments (0 inline, 0 general)