Files @ 91c57e99c66e
Branch filter:

Location: CSY/reowolf/src/test/connector.rs - annotation

91c57e99c66e 3.6 KiB application/rls-services+xml Show Source Show as Raw Download as Raw
Christopher Esterhuyse
logging
06f259bf8031
06f259bf8031
06f259bf8031
06f259bf8031
06f259bf8031
06f259bf8031
06f259bf8031
06f259bf8031
06f259bf8031
06f259bf8031
06f259bf8031
06f259bf8031
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
06f259bf8031
91c57e99c66e
91c57e99c66e
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
06f259bf8031
63a9f085c357
06f259bf8031
06f259bf8031
91c57e99c66e
06f259bf8031
06f259bf8031
91c57e99c66e
91c57e99c66e
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
06f259bf8031
06f259bf8031
91c57e99c66e
06f259bf8031
06f259bf8031
06f259bf8031
06f259bf8031
b788ae5c2251
b788ae5c2251
63a9f085c357
b788ae5c2251
63a9f085c357
b788ae5c2251
b788ae5c2251
91c57e99c66e
91c57e99c66e
63a9f085c357
63a9f085c357
63a9f085c357
b788ae5c2251
b788ae5c2251
b788ae5c2251
b788ae5c2251
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
91c57e99c66e
91c57e99c66e
91c57e99c66e
b788ae5c2251
b788ae5c2251
b788ae5c2251
b788ae5c2251
63a9f085c357
63a9f085c357
63a9f085c357
b788ae5c2251
b788ae5c2251
b788ae5c2251
91c57e99c66e
91c57e99c66e
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
63a9f085c357
b788ae5c2251
91c57e99c66e
91c57e99c66e
91c57e99c66e
b788ae5c2251
b788ae5c2251
b788ae5c2251
b788ae5c2251
63a9f085c357
63a9f085c357
63a9f085c357
b788ae5c2251
b788ae5c2251
b788ae5c2251
b788ae5c2251
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]
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 controller_id = 0;
        let mut x = Connector::Unconfigured(Unconfigured { controller_id });
        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::Passive(addrs[1])).unwrap();
        x.connect(timeout).unwrap();
        assert_eq!(0, x.sync(timeout).unwrap());
        println!("\n---------\nLOG CID={}\n{}", controller_id, x.get_mut_logger().unwrap());
    });
    let b = thread::spawn(move || {
        let controller_id = 1;
        let mut x = Connector::Unconfigured(Unconfigured { controller_id });
        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());
        println!("\n---------\nLOG CID={}\n{}", controller_id, x.get_mut_logger().unwrap());
    });
    handle(a.join());
    handle(b.join());
}

#[test]
fn duo() {
    let timeout = Duration::from_millis(1_500);
    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) {
            synchronous {}
            synchronous {}
            synchronous {
                msg m = create(0);
                put(a, m);
            }
            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) {
            while (true) {
                synchronous {
                    if (fires(a)) {
                        get(a);
                    }
                }
                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());
}