bevy_connect 0.19.2

Connectivity via TCP sessions
Documentation
mod test_app;
use std::env;
use std::sync::LazyLock;

use bevy::log::tracing_subscriber;
use test_app::Msg as M1;
use test_app::Msg2 as M2;
use test_app::TestApp as TA;
use tracing::info;

static LOG: LazyLock<()> = LazyLock::new(|| {
    if env::var("LOG").is_ok() {
        tracing_subscriber::fmt()
            .with_env_filter("info,bevy_connect=trace,tubes=trace")
            .init();
    }
});

#[test]
fn test_broadcasts_plain() {
    let () = &*LOG;
    let mut tg = TA::new_triple(6000);

    tg.test_all_clients_joined();

    tg.test_message_all_combos(&M2 {
        data: vec![1; 1_000_000],
    });
    tg.wait_a_while();

    tg.test_message_p2p(&M1 { value: 1 });
    tg.test_message_p2p(&M1 { value: 1 });
    tg.test_message_all_combos(&M1 { value: 1 });
    tg.test_message_all_combos(&M1 { value: 1 });
}

#[test]
fn test_promotion() {
    let () = &*LOG;
    let mut tg = TA::new_triple(6100);

    tg.test_all_clients_joined();

    // Disconnect M2 then prmote only M1
    tg.test_disconnect::<M2>();
    tg.test_promote_new_host(6104);

    tg.test_message_p2p(&M1 { value: 1 });
    tg.test_message_p2p(&M1 { value: 1 });
    tg.test_message_all_combos(&M1 { value: 1 });
    tg.test_message_all_combos(&M1 { value: 1 });
}

#[test]
fn test_reconnection_plain() {
    let () = &*LOG;
    let mut tg = TA::new_triple(6010);

    tg.test_all_clients_joined();

    tg.disconnect_one_client();
    info!("Disconnected one client");
    tg.connect_new_client();
    info!("Connected new client");

    tg.test_message_all_combos(&M1 { value: 1 });
    tg.test_message_all_combos(&M1 { value: 1 });
}

#[test]
fn test_broadcasts_comp_enc() {
    let () = &*LOG;
    let mut tg = TA::new_triple_comp_enc(6020);

    tg.test_all_clients_joined();

    tg.test_message_all_combos(&M2 {
        data: vec![1; 1_000_000],
    });
    tg.wait_a_while();

    tg.test_message_p2p(&M1 { value: 1 });
    tg.test_message_p2p(&M1 { value: 1 });
    tg.test_message_all_combos(&M1 { value: 1 });
    tg.test_message_all_combos(&M1 { value: 1 });
}

#[test]
fn test_reconnection_comp_enc() {
    let () = &*LOG;
    let mut tg = TA::new_triple_comp_enc(6030);

    tg.test_all_clients_joined();

    tg.disconnect_one_client();
    info!("Disconnected one client");
    tg.connect_new_client_comp_enc();
    info!("Connected new client");

    tg.test_message_all_combos(&M1 { value: 1 });
    tg.test_message_all_combos(&M1 { value: 1 });
}