Skip to content
This repository has been archived by the owner on Aug 25, 2021. It is now read-only.

Drop Coturn sessions via Telnet #84

Merged
merged 23 commits into from
Feb 19, 2020
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add timeouts to config
alexlapa committed Feb 11, 2020
commit 92ced951848050ab60c8fa984c26502a69a1f66b
9 changes: 6 additions & 3 deletions config.toml
Original file line number Diff line number Diff line change
@@ -145,19 +145,22 @@
# pass = "turn"

[turn.cli.timeouts]
# Timeout when waiting for an available connection.
# Timeout when waiting for an available connection. 0 means no timeout and is
# not recommended.
#
# Env var: MEDEA_TURN__CLI__TIMEOUTS__WAIT
# Default:
# wait = "5s"

# Timeout when creating a new connection.
# Timeout when creating a new connection. 0 means no timeout and is not
# recommended.
#
# Env var: MEDEA_TURN__CLI__TIMEOUTS__CREATE
# Default:
# create = "5s"
tyranron marked this conversation as resolved.
Show resolved Hide resolved

# Timeout when recycling connection.
# Timeout when recycling connection. 0 means no timeout and is not
# recommended.
#
# Env var: MEDEA_TURN__CLI__TIMEOUTS__RECYCLE
# Default:
78 changes: 67 additions & 11 deletions src/conf/turn.rs
Original file line number Diff line number Diff line change
@@ -110,10 +110,31 @@ pub struct Timeouts {

impl Into<PoolTimeouts> for &Timeouts {
fn into(self) -> PoolTimeouts {
let wait = self.wait.and_then(|wait| {
if wait.as_nanos() == 0 {
None
} else {
Some(wait)
}
});
let create = self.create.and_then(|create| {
if create.as_nanos() == 0 {
None
} else {
Some(create)
}
});
let recycle = self.recycle.and_then(|recycle| {
if recycle.as_nanos() == 0 {
None
} else {
Some(recycle)
}
});
PoolTimeouts {
wait: self.wait,
create: self.create,
recycle: self.recycle
wait,
create,
recycle,
}
}
}
@@ -126,6 +147,8 @@ mod spec {

use crate::{conf::Conf, overrided_by_env_conf};

use super::*;

#[test]
#[serial]
fn redis_db_overrides_defaults() {
@@ -189,7 +212,7 @@ mod spec {
#[serial]
fn coturn_cli() {
let default_conf = Conf::default();
let env_conf:Conf = overrided_by_env_conf!(
let env_conf: Conf = overrided_by_env_conf!(
"MEDEA_TURN__CLI__IP" => "4.4.4.4",
"MEDEA_TURN__CLI__PORT" => "1234",
"MEDEA_TURN__CLI__PASS" => "clipass",
@@ -208,18 +231,51 @@ mod spec {
#[serial]
fn coturn_cli_timeouts() {
let default_conf = Conf::default();
let env_conf:Conf = overrided_by_env_conf!(
let env_conf: Conf = overrided_by_env_conf!(
"MEDEA_TURN__CLI__TIMEOUTS__WAIT" => "1s",
"MEDEA_TURN__CLI__TIMEOUTS__CREATE" => "2s",
"MEDEA_TURN__CLI__TIMEOUTS__RECYCLE" => "3s",
);

assert_ne!(default_conf.turn.cli.timeouts.wait, env_conf.turn.cli.timeouts.wait);
assert_ne!(default_conf.turn.cli.timeouts.create, env_conf.turn.cli.timeouts.create);
assert_ne!(default_conf.turn.cli.timeouts.recycle, env_conf.turn.cli.timeouts.recycle);
assert_ne!(
default_conf.turn.cli.timeouts.wait,
env_conf.turn.cli.timeouts.wait
);
assert_ne!(
default_conf.turn.cli.timeouts.create,
env_conf.turn.cli.timeouts.create
);
assert_ne!(
default_conf.turn.cli.timeouts.recycle,
env_conf.turn.cli.timeouts.recycle
);

assert_eq!(
env_conf.turn.cli.timeouts.wait,
Some(Duration::from_secs(1))
);
assert_eq!(
env_conf.turn.cli.timeouts.create,
Some(Duration::from_secs(2))
);
assert_eq!(
env_conf.turn.cli.timeouts.recycle,
Some(Duration::from_secs(3))
);
}

#[test]
fn into_pool_timeouts() {
let timeouts = Timeouts {
wait: None,
create: Some(Duration::from_secs(0)),
recycle: Some(Duration::from_secs(2)),
};

let timeouts: PoolTimeouts = (&timeouts).into();

assert_eq!(env_conf.turn.cli.timeouts.wait, Some(Duration::from_secs(1)));
assert_eq!(env_conf.turn.cli.timeouts.create, Some(Duration::from_secs(2)));
assert_eq!(env_conf.turn.cli.timeouts.recycle, Some(Duration::from_secs(3)));
assert!(timeouts.wait.is_none());
assert!(timeouts.create.is_none());
assert_eq!(timeouts.recycle, Some(Duration::from_secs(2)));
}
}