From 978f586f6a7a926b3fc2b3311fe62da228b3362a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patrick=20Jos=C3=A9=20Pereira?=
Date: Thu, 30 Nov 2023 09:38:51 -0300
Subject: [PATCH 1/7] helper: threads: Add process_task_counter function
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Patrick José Pereira
---
src/helper/threads.rs | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/helper/threads.rs b/src/helper/threads.rs
index 8ecf62ff..aade09ee 100644
--- a/src/helper/threads.rs
+++ b/src/helper/threads.rs
@@ -1,17 +1,20 @@
+use cached::proc_macro::cached;
use std::thread;
use std::time::Duration;
use sysinfo::{System, SystemExt};
use tracing::*;
-pub fn start_thread_counter_thread() {
+#[cached(time = 1)]
+pub fn process_task_counter() -> usize {
let mut system = System::new_all();
let pid = sysinfo::get_current_pid().expect("Failed to get current PID.");
+ system.refresh_process(pid);
+ system.process(pid).unwrap().tasks.len()
+}
+
+pub fn start_thread_counter_thread() {
thread::spawn(move || loop {
- system.refresh_process(pid);
- info!(
- "Number of child processes: {}",
- system.process(pid).unwrap().tasks.len()
- );
+ info!("Number of child processes: {}", process_task_counter());
thread::sleep(Duration::from_secs(1));
});
}
From 6fe6293105132a25a3e21acc105ae07477417c25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patrick=20Jos=C3=A9=20Pereira?=
Date: Thu, 30 Nov 2023 09:39:17 -0300
Subject: [PATCH 2/7] server: pages: Add info endpoint
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Patrick José Pereira
---
src/server/manager.rs | 1 +
src/server/pages.rs | 46 ++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 46 insertions(+), 1 deletion(-)
diff --git a/src/server/manager.rs b/src/server/manager.rs
index 73df7dee..dd337eb5 100644
--- a/src/server/manager.rs
+++ b/src/server/manager.rs
@@ -55,6 +55,7 @@ pub async fn run(server_address: &str) -> Result<(), std::io::Error> {
r"/{filename:.*(\.html|\.js|\.css)}",
web::get().to(pages::root),
)
+ .route("/info", web::get().to(pages::info))
.route("/delete_stream", web::delete().to(pages::remove_stream))
.route("/reset_settings", web::post().to(pages::reset_settings))
.route("/streams", web::get().to(pages::streams))
diff --git a/src/server/pages.rs b/src/server/pages.rs
index dad07ba1..e4d7598c 100644
--- a/src/server/pages.rs
+++ b/src/server/pages.rs
@@ -1,3 +1,4 @@
+use crate::helper;
use crate::settings;
use crate::stream::{manager as stream_manager, types::StreamInformation};
use crate::video::{
@@ -12,7 +13,8 @@ use actix_web::{
web::{self, Json},
HttpRequest, HttpResponse,
};
-use paperclip::actix::{api_v2_operation, Apiv2Schema};
+
+use paperclip::actix::{api_v2_operation, Apiv2Schema, CreatedJson};
use serde::{Deserialize, Serialize};
use tracing::*;
use validator::Validate;
@@ -77,6 +79,41 @@ pub struct ThumbnailFileRequest {
target_height: Option,
}
+#[derive(Apiv2Schema, Serialize, Debug)]
+pub struct Development {
+ number_of_tasks: usize,
+}
+
+#[derive(Apiv2Schema, Serialize, Debug)]
+pub struct Info {
+ /// Name of the program
+ name: String,
+ /// Version/tag
+ version: String,
+ /// Git SHA
+ sha: String,
+ build_date: String,
+ /// Authors name
+ authors: String,
+ /// Unstable field for custom development
+ development: Development,
+}
+
+impl Info {
+ pub fn new() -> Self {
+ Self {
+ name: env!("CARGO_PKG_NAME").into(),
+ version: env!("VERGEN_GIT_SEMVER").into(),
+ sha: env!("VERGEN_GIT_SHA_SHORT").into(),
+ build_date: env!("VERGEN_BUILD_DATE").into(),
+ authors: env!("CARGO_PKG_AUTHORS").into(),
+ development: Development {
+ number_of_tasks: helper::threads::process_task_counter(),
+ },
+ }
+ }
+}
+
use std::{ffi::OsStr, path::Path};
use include_dir::{include_dir, Dir};
@@ -136,6 +173,13 @@ pub fn root(req: HttpRequest) -> HttpResponse {
HttpResponse::Ok().content_type(mime).body(content)
}
+#[api_v2_operation]
+/// Provide information about the running service
+/// There is no stable API guarantee for the development field
+pub async fn info() -> CreatedJson {
+ CreatedJson(Info::new())
+}
+
//TODO: change endpoint name to sources
#[api_v2_operation]
/// Provides list of all video sources, with controls and formats
From 9ca1274d1584f5d560fd7d7f23721588652cf8c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patrick=20Jos=C3=A9=20Pereira?=
Date: Thu, 30 Nov 2023 10:08:33 -0300
Subject: [PATCH 3/7] stream: webrtc: frontend: App: Add id for buttons to be
used by automatic tools
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Patrick José Pereira
---
src/stream/webrtc/frontend/src/App.vue | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/stream/webrtc/frontend/src/App.vue b/src/stream/webrtc/frontend/src/App.vue
index b624edb1..8cf72fda 100644
--- a/src/stream/webrtc/frontend/src/App.vue
+++ b/src/stream/webrtc/frontend/src/App.vue
@@ -41,10 +41,18 @@ const manager = reactive(new Manager(ip, 6021, rtc_configuration));
Consumers: {{ manager.consumers.size }}
-
@@ -96,6 +104,7 @@ const manager = reactive(new Manager(ip, 6021, rtc_configuration));
{{ stream.encode }}
From 8a0eeb077cee05aad007128a34ae575e43b76c72 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patrick=20Jos=C3=A9=20Pereira?=
Date: Thu, 30 Nov 2023 12:05:02 -0300
Subject: [PATCH 4/7] Cargo: Update lock file
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Patrick José Pereira
---
Cargo.lock | 548 +++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 445 insertions(+), 103 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 46f23807..d0aabfe4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -74,7 +74,7 @@ dependencies = [
"actix-service",
"actix-utils",
"ahash",
- "base64",
+ "base64 0.21.5",
"bitflags 2.4.1",
"brotli",
"bytes",
@@ -348,12 +348,12 @@ dependencies = [
[[package]]
name = "async-channel"
-version = "2.1.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d37875bd9915b7d67c2f117ea2c30a0989874d0b2cb694fe25403c85763c0c9e"
+checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c"
dependencies = [
"concurrent-queue",
- "event-listener 3.1.0",
+ "event-listener 4.0.0",
"event-listener-strategy",
"futures-core",
"pin-project-lite",
@@ -361,11 +361,11 @@ dependencies = [
[[package]]
name = "async-executor"
-version = "1.7.2"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc5ea910c42e5ab19012bab31f53cb4d63d54c3a27730f9a833a88efcf4bb52d"
+checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c"
dependencies = [
- "async-lock 3.1.1",
+ "async-lock 3.1.2",
"async-task",
"concurrent-queue",
"fastrand 2.0.1",
@@ -375,16 +375,16 @@ dependencies = [
[[package]]
name = "async-global-executor"
-version = "2.3.1"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776"
+checksum = "9b4353121d5644cdf2beb5726ab752e79a8db1ebb52031770ec47db31d245526"
dependencies = [
- "async-channel 1.9.0",
+ "async-channel 2.1.1",
"async-executor",
- "async-io",
- "async-lock 2.8.0",
+ "async-io 2.2.1",
+ "async-lock 3.1.2",
"blocking",
- "futures-lite 1.13.0",
+ "futures-lite 2.0.1",
"once_cell",
"tokio",
]
@@ -402,13 +402,32 @@ dependencies = [
"futures-lite 1.13.0",
"log",
"parking",
- "polling",
+ "polling 2.8.0",
"rustix 0.37.27",
"slab",
"socket2 0.4.10",
"waker-fn",
]
+[[package]]
+name = "async-io"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6d3b15875ba253d1110c740755e246537483f152fa334f91abd7fe84c88b3ff"
+dependencies = [
+ "async-lock 3.1.2",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-io",
+ "futures-lite 2.0.1",
+ "parking",
+ "polling 3.3.1",
+ "rustix 0.38.25",
+ "slab",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
[[package]]
name = "async-lock"
version = "2.8.0"
@@ -420,11 +439,11 @@ dependencies = [
[[package]]
name = "async-lock"
-version = "3.1.1"
+version = "3.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "655b9c7fe787d3b25cc0f804a1a8401790f0c5bc395beb5a64dc77d8de079105"
+checksum = "dea8b3453dd7cc96711834b75400d671b73e3656975fa68d9f277163b7f7e316"
dependencies = [
- "event-listener 3.1.0",
+ "event-listener 4.0.0",
"event-listener-strategy",
"pin-project-lite",
]
@@ -437,7 +456,7 @@ checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d"
dependencies = [
"async-channel 1.9.0",
"async-global-executor",
- "async-io",
+ "async-io 1.13.0",
"async-lock 2.8.0",
"crossbeam-utils",
"futures-channel",
@@ -516,6 +535,12 @@ dependencies = [
"rustc-demangle",
]
+[[package]]
+name = "base64"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
[[package]]
name = "base64"
version = "0.21.5"
@@ -584,8 +609,8 @@ version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
dependencies = [
- "async-channel 2.1.0",
- "async-lock 3.1.1",
+ "async-channel 2.1.1",
+ "async-lock 3.1.2",
"async-task",
"fastrand 2.0.1",
"futures-io",
@@ -730,8 +755,9 @@ dependencies = [
"iana-time-zone",
"js-sys",
"num-traits",
+ "serde",
"wasm-bindgen",
- "windows-targets",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -951,7 +977,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
dependencies = [
"cfg-if",
- "hashbrown 0.14.2",
+ "hashbrown 0.14.3",
"lock_api",
"once_cell",
"parking_lot_core",
@@ -1019,7 +1045,7 @@ dependencies = [
"libc",
"option-ext",
"redox_users",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -1077,12 +1103,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "errno"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
dependencies = [
"libc",
- "windows-sys",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -1093,9 +1119,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
[[package]]
name = "event-listener"
-version = "3.1.0"
+version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2"
+checksum = "770d968249b5d99410d61f5bf89057f3199a077a04d087092f58e7d10692baae"
dependencies = [
"concurrent-queue",
"parking",
@@ -1104,11 +1130,11 @@ dependencies = [
[[package]]
name = "event-listener-strategy"
-version = "0.3.0"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d96b852f1345da36d551b9473fa1e2b1eb5c5195585c6c018118bc92a8d91160"
+checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
dependencies = [
- "event-listener 3.1.0",
+ "event-listener 4.0.0",
"pin-project-lite",
]
@@ -1128,6 +1154,28 @@ dependencies = [
"zune-inflate",
]
+[[package]]
+name = "fantoccini"
+version = "0.19.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "65f0fbe245d714b596ba5802b46f937f5ce68dcae0f32f9a70b5c3b04d3c6f64"
+dependencies = [
+ "base64 0.13.1",
+ "cookie",
+ "futures-core",
+ "futures-util",
+ "http",
+ "hyper",
+ "hyper-rustls",
+ "mime",
+ "serde",
+ "serde_json",
+ "time",
+ "tokio",
+ "url",
+ "webdriver",
+]
+
[[package]]
name = "fastrand"
version = "1.9.0"
@@ -1194,9 +1242,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "form_urlencoded"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
dependencies = [
"percent-encoding",
]
@@ -1377,9 +1425,9 @@ dependencies = [
[[package]]
name = "gimli"
-version = "0.28.0"
+version = "0.28.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
[[package]]
name = "gio"
@@ -1795,9 +1843,9 @@ checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
[[package]]
name = "hashbrown"
-version = "0.14.2"
+version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
[[package]]
name = "heck"
@@ -1826,7 +1874,7 @@ version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
dependencies = [
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -1893,6 +1941,21 @@ dependencies = [
"want",
]
+[[package]]
+name = "hyper-rustls"
+version = "0.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c"
+dependencies = [
+ "http",
+ "hyper",
+ "log",
+ "rustls",
+ "rustls-native-certs",
+ "tokio",
+ "tokio-rustls",
+]
+
[[package]]
name = "hyper-tls"
version = "0.5.0"
@@ -1945,6 +2008,16 @@ dependencies = [
"unicode-normalization",
]
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
[[package]]
name = "if_chain"
version = "1.0.2"
@@ -1996,7 +2069,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
dependencies = [
"equivalent",
- "hashbrown 0.14.2",
+ "hashbrown 0.14.3",
]
[[package]]
@@ -2016,7 +2089,7 @@ checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
dependencies = [
"hermit-abi 0.3.3",
"libc",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -2087,9 +2160,9 @@ dependencies = [
[[package]]
name = "js-sys"
-version = "0.3.65"
+version = "0.3.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8"
+checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca"
dependencies = [
"wasm-bindgen",
]
@@ -2305,7 +2378,8 @@ dependencies = [
"serde",
"serde_json",
"serial_test",
- "sys-info",
+ "sysinfo",
+ "thirtyfour",
"tokio",
"tokio-tungstenite",
"tracing",
@@ -2402,7 +2476,7 @@ dependencies = [
"libc",
"log",
"wasi",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -2464,6 +2538,15 @@ dependencies = [
"minimal-lexical",
]
+[[package]]
+name = "ntapi"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"
+dependencies = [
+ "winapi",
+]
+
[[package]]
name = "nu-ansi-term"
version = "0.46.0"
@@ -2542,9 +2625,9 @@ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
[[package]]
name = "openssl"
-version = "0.10.59"
+version = "0.10.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a257ad03cd8fb16ad4172fedf8094451e1af1c4b70097636ef2eac9a5f0cc33"
+checksum = "79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800"
dependencies = [
"bitflags 2.4.1",
"cfg-if",
@@ -2574,9 +2657,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-sys"
-version = "0.9.95"
+version = "0.9.96"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40a4130519a360279579c2053038317e40eff64d13fd3f004f9e1b72b8a6aaf9"
+checksum = "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f"
dependencies = [
"cc",
"libc",
@@ -2708,7 +2791,7 @@ dependencies = [
"libc",
"redox_syscall",
"smallvec",
- "windows-targets",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -2725,9 +2808,9 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
[[package]]
name = "percent-encoding"
-version = "2.3.0"
+version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "pin-project"
@@ -2895,7 +2978,21 @@ dependencies = [
"libc",
"log",
"pin-project-lite",
- "windows-sys",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "polling"
+version = "3.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "pin-project-lite",
+ "rustix 0.38.25",
+ "tracing",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -2961,9 +3058,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.69"
+version = "1.0.70"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
+checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
dependencies = [
"unicode-ident",
]
@@ -3122,7 +3219,7 @@ version = "0.11.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b"
dependencies = [
- "base64",
+ "base64 0.21.5",
"bytes",
"encoding_rs",
"futures-core",
@@ -3164,11 +3261,25 @@ dependencies = [
"libc",
"once_cell",
"spin 0.5.2",
- "untrusted",
+ "untrusted 0.7.1",
"web-sys",
"winapi",
]
+[[package]]
+name = "ring"
+version = "0.17.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "684d5e6e18f669ccebf64a92236bb7db9a34f07be010e3627368182027180866"
+dependencies = [
+ "cc",
+ "getrandom",
+ "libc",
+ "spin 0.9.8",
+ "untrusted 0.9.0",
+ "windows-sys 0.48.0",
+]
+
[[package]]
name = "rustc-demangle"
version = "0.1.23"
@@ -3201,7 +3312,7 @@ dependencies = [
"io-lifetimes",
"libc",
"linux-raw-sys 0.3.8",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -3214,7 +3325,40 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys 0.4.11",
- "windows-sys",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "rustls"
+version = "0.20.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99"
+dependencies = [
+ "log",
+ "ring 0.16.20",
+ "sct",
+ "webpki",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+dependencies = [
+ "base64 0.21.5",
]
[[package]]
@@ -3235,7 +3379,7 @@ version = "0.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
dependencies = [
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -3250,6 +3394,16 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+[[package]]
+name = "sct"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
+dependencies = [
+ "ring 0.17.6",
+ "untrusted 0.9.0",
+]
+
[[package]]
name = "security-framework"
version = "2.9.2"
@@ -3305,6 +3459,7 @@ version = "1.0.108"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
dependencies = [
+ "indexmap",
"itoa",
"ryu",
"serde",
@@ -3323,6 +3478,17 @@ dependencies = [
"thiserror",
]
+[[package]]
+name = "serde_repr"
+version = "0.1.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145"
+dependencies = [
+ "proc-macro2",
+ "quote 1.0.33",
+ "syn 2.0.39",
+]
+
[[package]]
name = "serde_spanned"
version = "0.6.4"
@@ -3497,7 +3663,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
dependencies = [
"libc",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -3515,6 +3681,15 @@ dependencies = [
"lock_api",
]
+[[package]]
+name = "stringmatch"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6aadc0801d92f0cdc26127c67c4b8766284f52a5ba22894f285e3101fa57d05d"
+dependencies = [
+ "regex",
+]
+
[[package]]
name = "strsim"
version = "0.8.0"
@@ -3552,12 +3727,12 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7beb1624a3ea34778d58d30e2b8606b4d29fe65e87c4d50b87ed30afd5c3830c"
dependencies = [
- "base64",
+ "base64 0.21.5",
"crc",
"lazy_static",
"md-5",
"rand",
- "ring",
+ "ring 0.16.20",
"subtle",
"thiserror",
"tokio",
@@ -3594,13 +3769,18 @@ dependencies = [
]
[[package]]
-name = "sys-info"
-version = "0.9.1"
+name = "sysinfo"
+version = "0.29.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c"
+checksum = "cd727fc423c2060f6c92d9534cef765c65a6ed3f428a03d7def74a8c4348e666"
dependencies = [
- "cc",
+ "cfg-if",
+ "core-foundation-sys",
"libc",
+ "ntapi",
+ "once_cell",
+ "rayon",
+ "winapi",
]
[[package]]
@@ -3653,7 +3833,7 @@ dependencies = [
"fastrand 2.0.1",
"redox_syscall",
"rustix 0.38.25",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -3683,6 +3863,44 @@ dependencies = [
"unicode-width",
]
+[[package]]
+name = "thirtyfour"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72fc70ad9624071cdd96d034676b84b504bfeb4bee1580df1324c99373ea0ca7"
+dependencies = [
+ "async-trait",
+ "base64 0.13.1",
+ "chrono",
+ "cookie",
+ "fantoccini",
+ "futures",
+ "http",
+ "log",
+ "parking_lot",
+ "serde",
+ "serde_json",
+ "serde_repr",
+ "stringmatch",
+ "thirtyfour-macros",
+ "thiserror",
+ "tokio",
+ "url",
+ "urlparse",
+]
+
+[[package]]
+name = "thirtyfour-macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cae91d1c7c61ec65817f1064954640ee350a50ae6548ff9a1bdd2489d6ffbb0"
+dependencies = [
+ "proc-macro-error",
+ "proc-macro2",
+ "quote 1.0.33",
+ "syn 1.0.109",
+]
+
[[package]]
name = "thiserror"
version = "1.0.50"
@@ -3784,7 +4002,7 @@ dependencies = [
"signal-hook-registry",
"socket2 0.5.5",
"tokio-macros",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -3808,6 +4026,17 @@ dependencies = [
"tokio",
]
+[[package]]
+name = "tokio-rustls"
+version = "0.23.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59"
+dependencies = [
+ "rustls",
+ "tokio",
+ "webpki",
+]
+
[[package]]
name = "tokio-tungstenite"
version = "0.20.1"
@@ -4117,12 +4346,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58f4fcb97da0426e8146fe0e9b78cc13120161087256198701d12d9df77f7701"
dependencies = [
"async-trait",
- "base64",
+ "base64 0.21.5",
"futures",
"log",
"md-5",
"rand",
- "ring",
+ "ring 0.16.20",
"stun",
"thiserror",
"tokio",
@@ -4165,6 +4394,12 @@ dependencies = [
"tinyvec",
]
+[[package]]
+name = "unicode-segmentation"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+
[[package]]
name = "unicode-width"
version = "0.1.11"
@@ -4183,18 +4418,30 @@ version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
[[package]]
name = "url"
-version = "2.4.1"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
dependencies = [
"form_urlencoded",
- "idna",
+ "idna 0.5.0",
"percent-encoding",
"serde",
]
+[[package]]
+name = "urlparse"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "110352d4e9076c67839003c7788d8604e24dcded13e0b375af3efaa8cf468517"
+
[[package]]
name = "utf-8"
version = "0.7.6"
@@ -4246,7 +4493,7 @@ version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b92f40481c04ff1f4f61f304d61793c7b56ff76ac1469f1beb199b1445b253bd"
dependencies = [
- "idna",
+ "idna 0.4.0",
"lazy_static",
"regex",
"serde",
@@ -4357,9 +4604,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.88"
+version = "0.2.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce"
+checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
@@ -4367,9 +4614,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.88"
+version = "0.2.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217"
+checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
dependencies = [
"bumpalo",
"log",
@@ -4382,9 +4629,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.38"
+version = "0.4.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02"
+checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12"
dependencies = [
"cfg-if",
"js-sys",
@@ -4394,9 +4641,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.88"
+version = "0.2.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2"
+checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
dependencies = [
"quote 1.0.33",
"wasm-bindgen-macro-support",
@@ -4404,9 +4651,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.88"
+version = "0.2.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907"
+checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
dependencies = [
"proc-macro2",
"quote 1.0.33",
@@ -4417,20 +4664,49 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.88"
+version = "0.2.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b"
+checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
[[package]]
name = "web-sys"
-version = "0.3.65"
+version = "0.3.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85"
+checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f"
dependencies = [
"js-sys",
"wasm-bindgen",
]
+[[package]]
+name = "webdriver"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9973cb72c8587d5ad5efdb91e663d36177dc37725e6c90ca86c626b0cc45c93f"
+dependencies = [
+ "base64 0.13.1",
+ "bytes",
+ "cookie",
+ "http",
+ "log",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "time",
+ "unicode-segmentation",
+ "url",
+]
+
+[[package]]
+name = "webpki"
+version = "0.22.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53"
+dependencies = [
+ "ring 0.17.6",
+ "untrusted 0.9.0",
+]
+
[[package]]
name = "webrtc-sdp"
version = "0.3.10"
@@ -4517,7 +4793,7 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
dependencies = [
- "windows-targets",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -4526,7 +4802,7 @@ version = "0.51.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
dependencies = [
- "windows-targets",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -4535,7 +4811,16 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
- "windows-targets",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.0",
]
[[package]]
@@ -4544,13 +4829,28 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.0",
+ "windows_aarch64_msvc 0.52.0",
+ "windows_i686_gnu 0.52.0",
+ "windows_i686_msvc 0.52.0",
+ "windows_x86_64_gnu 0.52.0",
+ "windows_x86_64_gnullvm 0.52.0",
+ "windows_x86_64_msvc 0.52.0",
]
[[package]]
@@ -4559,42 +4859,84 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+
[[package]]
name = "windows_aarch64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+
[[package]]
name = "windows_i686_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+
[[package]]
name = "windows_i686_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+
[[package]]
name = "windows_x86_64_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+
[[package]]
name = "windows_x86_64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+
[[package]]
name = "winnow"
version = "0.5.19"
@@ -4611,7 +4953,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
dependencies = [
"cfg-if",
- "windows-sys",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -4625,18 +4967,18 @@ dependencies = [
[[package]]
name = "zerocopy"
-version = "0.7.26"
+version = "0.7.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0"
+checksum = "f43de342578a3a14a9314a2dab1942cbfcbe5686e1f91acdc513058063eafe18"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.7.26"
+version = "0.7.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f"
+checksum = "e1012d89e3acb79fad7a799ce96866cfb8098b74638465ea1b1533d35900ca90"
dependencies = [
"proc-macro2",
"quote 1.0.33",
From abd3fb0f14d441bb1e07732d0b07cf41ea5afc4d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patrick=20Jos=C3=A9=20Pereira?=
Date: Thu, 30 Nov 2023 12:05:17 -0300
Subject: [PATCH 5/7] Cargo: Add thirtyfour
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Patrick José Pereira
---
Cargo.toml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Cargo.toml b/Cargo.toml
index 87402322..e76c6b7f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -49,6 +49,7 @@ v4l = "0.14.0"
directories = "5.0.1"
pnet = { version = "0.34.0", features = ["std"] }
semver = "1.0"
+thirtyfour = "0.31"
tracing = { version = "0.1.37", features = ["log", "async-await"] }
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
tracing-log = "0.1.3"
From 460215a8ce0af9462920362e271c669f4e5f55fa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patrick=20Jos=C3=A9=20Pereira?=
Date: Thu, 30 Nov 2023 12:06:01 -0300
Subject: [PATCH 6/7] helper: Add develp with test using webrtc and task count
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Patrick José Pereira
---
src/helper/develop.rs | 56 +++++++++++++++++++++++++++++++++++++++++++
src/helper/mod.rs | 1 +
2 files changed, 57 insertions(+)
create mode 100644 src/helper/develop.rs
diff --git a/src/helper/develop.rs b/src/helper/develop.rs
new file mode 100644
index 00000000..c48ee1d9
--- /dev/null
+++ b/src/helper/develop.rs
@@ -0,0 +1,56 @@
+use crate::cli;
+use crate::helper;
+use anyhow::Result;
+use core::time::Duration;
+use std::thread;
+use thirtyfour::prelude::*;
+use tokio::runtime::Runtime;
+use tracing::*;
+
+async fn task(mut counter: i32) -> Result<()> {
+ info!("Started webrtc test..");
+
+ let mut caps = DesiredCapabilities::chrome();
+ let _ = caps.set_headless();
+
+ let port = cli::manager::enable_webrtc_task_test().unwrap();
+ let driver = WebDriver::new(&format!("http://localhost:{}", port), caps)
+ .await
+ .expect("Failed to create web driver.");
+
+ driver
+ .goto("http://0.0.0.0:6020/webrtc/index.html")
+ .await
+ .expect("Failed to connect to local webrtc page.");
+
+ loop {
+ for button in ["add-consumer", "add-session", "remove-all-consumers"] {
+ thread::sleep(Duration::from_secs(3));
+ driver.find(By::Id(button)).await?.click().await?;
+ }
+
+ counter += 1;
+
+ info!("Restarted webrtc {} times", counter);
+ if helper::threads::process_task_counter() > 100 {
+ error!("Thead leak detected!");
+ std::process::exit(-1);
+ }
+ }
+}
+
+pub fn start_check_tasks_on_webrtc_reconnects() {
+ let counter = 0;
+ thread::spawn(move || {
+ let rt = Runtime::new().unwrap();
+ rt.block_on(async move {
+ loop {
+ if let Err(error) = task(counter).await {
+ error!("WebRTC Checker Task failed: {error:#?}");
+ }
+ }
+ });
+ error!("Webrtc test failed internally.");
+ std::process::exit(-1);
+ });
+}
diff --git a/src/helper/mod.rs b/src/helper/mod.rs
index 28f540e6..9b871db5 100644
--- a/src/helper/mod.rs
+++ b/src/helper/mod.rs
@@ -1,3 +1,4 @@
#[macro_use]
+pub mod develop;
pub mod macros;
pub mod threads;
From ff9fd29aa43afb84b309f3140fc664bf3a65e97d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Patrick=20Jos=C3=A9=20Pereira?=
Date: Thu, 30 Nov 2023 12:07:55 -0300
Subject: [PATCH 7/7] Add enable-webrtc-task-check
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Patrick José Pereira
---
src/cli/manager.rs | 16 ++++++++++++++++
src/main.rs | 4 ++++
2 files changed, 20 insertions(+)
diff --git a/src/cli/manager.rs b/src/cli/manager.rs
index c2fe5cb8..a07ec543 100644
--- a/src/cli/manager.rs
+++ b/src/cli/manager.rs
@@ -97,6 +97,14 @@ pub fn enable_thread_counter() -> bool {
.is_present("enable-thread-counter");
}
+pub fn enable_webrtc_task_test() -> Option {
+ return MANAGER
+ .as_ref()
+ .clap_matches
+ .value_of("enable-webrtc-task-test")
+ .and_then(|value| value.parse::().ok());
+}
+
// Return the command line used to start this application
pub fn command_line_string() -> String {
std::env::args().collect::>().join(" ")
@@ -230,6 +238,14 @@ fn get_clap_matches<'a>() -> clap::ArgMatches<'a> {
.long("enable-thread-counter")
.help("Enable a thread that prints the number of children processes.")
.takes_value(false),
+ )
+ .arg(
+ clap::Arg::with_name("enable-webrtc-task-test")
+ .long("enable-webrtc-task-test")
+ .help("Enable webrtc thread test with limit of child tasks (can use port for webdriver as parameter).")
+ .value_name("PORT")
+ .default_value("9515")
+ .empty_values(true)
);
matches.get_matches()
diff --git a/src/main.rs b/src/main.rs
index 030e1b61..3377e6b8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -38,6 +38,10 @@ async fn main() -> Result<(), std::io::Error> {
helper::threads::start_thread_counter_thread();
}
+ if cli::manager::enable_webrtc_task_test().is_some() {
+ helper::develop::start_check_tasks_on_webrtc_reconnects();
+ }
+
stream::webrtc::signalling_server::SignallingServer::default();
if let Err(error) = stream::manager::start_default() {