rnp 0.1.146

A simple layer 4 ping tool for cloud.
Documentation
use crate::ping_clients::ping_client_test_common::*;
use crate::{ping_clients::ping_client_factory, rnp_test_common, PingClientConfig, RnpSupportedProtocol};
use std::time::Duration;
use tokio::runtime::Runtime;

#[test]
fn ping_client_quic_should_fail_when_pinging_non_existing_host() {
    rnp_test_common::initialize();
    let rt = Runtime::new().unwrap();

    rt.block_on(async move {
        let config = create_ping_client_quic_default_config();
        let mut ping_client = ping_client_factory::new_ping_client(&RnpSupportedProtocol::QUIC, &config, None);
        ping_client_should_fail_when_pinging_non_existing_host(&mut ping_client, &ExpectedTestCaseResult::Timeout).await;
    });
}

#[test]
fn ping_client_quic_should_fail_when_pinging_non_existing_port() {
    rnp_test_common::initialize();
    let rt = Runtime::new().unwrap();

    rt.block_on(async move {
        let config = create_ping_client_quic_default_config();
        let mut ping_client = ping_client_factory::new_ping_client(&RnpSupportedProtocol::QUIC, &config, None);
        ping_client_should_fail_when_pinging_non_existing_port(&mut ping_client, &ExpectedTestCaseResult::Timeout).await;
    });
}

#[test]
fn ping_client_quic_should_fail_when_binding_invalid_source_ip() {
    rnp_test_common::initialize();
    let rt = Runtime::new().unwrap();

    rt.block_on(async move {
        let config = create_ping_client_quic_default_config();
        let mut ping_client = ping_client_factory::new_ping_client(&RnpSupportedProtocol::QUIC, &config, None);

        let expected_result =
            ExpectedTestCaseResult::Failed("failed to set up UDP socket: The requested address is not valid in its context. (os error 10049)");
        ping_client_should_fail_when_binding_invalid_source_ip(&mut ping_client, &expected_result).await;
    });
}

fn create_ping_client_quic_default_config() -> PingClientConfig {
    return PingClientConfig {
        wait_timeout: Duration::from_millis(300),
        time_to_live: None,
        check_disconnect: false,
        wait_before_disconnect: Duration::ZERO,
        disconnect_timeout: Duration::ZERO,
        server_name: Some("localhost".to_string()),
        log_tls_key: false,
        alpn_protocol: Some("hq-29".to_string()),
        use_timer_rtt: false,
    };
}