orientdb-client 0.6.0

A Rust client for OrientDB™
Documentation
extern crate dotenv;
extern crate orientdb_client;

mod common;

use common::{config, connect, create_database};

#[test]
fn test_open_sessions() {
    let client = connect();
    let config = config();

    create_database("test_open_sessions", &client, &config);

    let result = client.sessions(
        "test_open_sessions",
        &config.username,
        &config.password,
        None,
    );

    assert!(result.is_ok());

    let pool = result.unwrap();

    let session = pool.get().unwrap();

    assert_eq!(19, pool.idle());

    drop(session);

    assert_eq!(20, pool.idle());
}

#[cfg(feature = "async")]
mod asynchronous {

    use super::common::asynchronous::{connect, create_database};
    use super::config;

    use std::time::Duration;

    #[cfg(feature = "async-std-runtime")]
    use async_std::task;

    #[cfg(feature = "tokio-runtime")]
    use tokio::task;

    #[cfg_attr(feature = "async-std-runtime", async_std::test)]
    #[cfg_attr(feature = "tokio-runtime", tokio::test)]
    #[allow(unused_must_use)]
    async fn test_open_sessions() {
        let client = connect().await;
        let config = config();

        create_database("async_test_open_sessions", &client, &config).await;

        let result = client
            .sessions(
                "async_test_open_sessions",
                &config.username,
                &config.password,
                None,
                Some(20),
            )
            .await;

        assert!(result.is_ok());

        let pool = result.unwrap();

        let session = pool.get().await.unwrap();

        assert_eq!(1, pool.used().await);

        drop(session);

        task::spawn_blocking(move || {
            std::thread::sleep(Duration::from_millis(200));
        })
        .await;

        assert_eq!(0, pool.used().await);

        assert_eq!(1, pool.idle().await);
    }
}