Merge branch 'rolling' into improve-results-caching
Browse files- .gitpod.Dockerfile +3 -0
- .gitpod.yml +20 -14
- docs/configuration.md +1 -0
- docs/installation.md +1 -0
- src/bin/websurfx.rs +1 -1
- src/config/parser.rs +18 -18
- src/results/aggregator.rs +2 -0
.gitpod.Dockerfile
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM gitpod/workspace-rust
|
| 2 |
+
|
| 3 |
+
RUN sudo install-packages redis-server nodejs npm
|
.gitpod.yml
CHANGED
|
@@ -1,23 +1,25 @@
|
|
| 1 |
---
|
| 2 |
-
image:
|
|
|
|
|
|
|
| 3 |
# Commands that will run on workspace start
|
| 4 |
tasks:
|
| 5 |
-
- name:
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
# vscode IDE setup
|
| 16 |
vscode:
|
| 17 |
extensions:
|
| 18 |
- vadimcn.vscode-lldb
|
| 19 |
- cschleiden.vscode-github-actions
|
| 20 |
-
- rust-lang.rust
|
| 21 |
- bungcip.better-toml
|
| 22 |
- serayuzgur.crates
|
| 23 |
- usernamehw.errorlens
|
|
@@ -26,13 +28,17 @@ vscode:
|
|
| 26 |
- stylelint.vscode-stylelint
|
| 27 |
- dbaeumer.vscode-eslint
|
| 28 |
- evgeniypeshkov.syntax-highlighter
|
| 29 |
-
- redhat.vscode-yaml
|
| 30 |
- ms-azuretools.vscode-docker
|
| 31 |
- Catppuccin.catppuccin-vsc
|
| 32 |
- PKief.material-icon-theme
|
| 33 |
- oderwat.indent-rainbow
|
| 34 |
- formulahendry.auto-rename-tag
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
- eamodio.gitlens
|
|
|
|
| 36 |
github:
|
| 37 |
prebuilds:
|
| 38 |
master: true
|
|
@@ -40,5 +46,5 @@ github:
|
|
| 40 |
pullRequests: true
|
| 41 |
pullRequestsFromForks: true
|
| 42 |
addCheck: true
|
| 43 |
-
addComment: false
|
| 44 |
addBadge: true
|
|
|
|
| 1 |
---
|
| 2 |
+
image:
|
| 3 |
+
file: .gitpod.Dockerfile
|
| 4 |
+
|
| 5 |
# Commands that will run on workspace start
|
| 6 |
tasks:
|
| 7 |
+
- name: Start Redis Server
|
| 8 |
+
command: redis-server --port 8082
|
| 9 |
+
- name: Run The App
|
| 10 |
+
init: cargo build
|
| 11 |
+
command: PKG_ENV=dev ./target/release/websurfx
|
| 12 |
+
- name: Tests
|
| 13 |
+
command: cargo test
|
| 14 |
+
- name: Clippy Checks
|
| 15 |
+
command: cargo clippy
|
| 16 |
+
|
| 17 |
# vscode IDE setup
|
| 18 |
vscode:
|
| 19 |
extensions:
|
| 20 |
- vadimcn.vscode-lldb
|
| 21 |
- cschleiden.vscode-github-actions
|
| 22 |
+
- rust-lang.rust-analyzer
|
| 23 |
- bungcip.better-toml
|
| 24 |
- serayuzgur.crates
|
| 25 |
- usernamehw.errorlens
|
|
|
|
| 28 |
- stylelint.vscode-stylelint
|
| 29 |
- dbaeumer.vscode-eslint
|
| 30 |
- evgeniypeshkov.syntax-highlighter
|
|
|
|
| 31 |
- ms-azuretools.vscode-docker
|
| 32 |
- Catppuccin.catppuccin-vsc
|
| 33 |
- PKief.material-icon-theme
|
| 34 |
- oderwat.indent-rainbow
|
| 35 |
- formulahendry.auto-rename-tag
|
| 36 |
+
- swellaby.vscode-rust-test-adapter
|
| 37 |
+
- belfz.search-crates-io
|
| 38 |
+
- hbenl.test-adapter-converter
|
| 39 |
+
- hbenl.vscode-test-explorer
|
| 40 |
- eamodio.gitlens
|
| 41 |
+
|
| 42 |
github:
|
| 43 |
prebuilds:
|
| 44 |
master: true
|
|
|
|
| 46 |
pullRequests: true
|
| 47 |
pullRequestsFromForks: true
|
| 48 |
addCheck: true
|
| 49 |
+
addComment: false
|
| 50 |
addBadge: true
|
docs/configuration.md
CHANGED
|
@@ -23,6 +23,7 @@ Some of the configuration options provided in the file are stated below. These a
|
|
| 23 |
|
| 24 |
- **logging:** An option to enable or disable logs.
|
| 25 |
- **debug:** An option to enable or disable debug mode.
|
|
|
|
| 26 |
|
| 27 |
## Server
|
| 28 |
|
|
|
|
| 23 |
|
| 24 |
- **logging:** An option to enable or disable logs.
|
| 25 |
- **debug:** An option to enable or disable debug mode.
|
| 26 |
+
- **threads:** The amount of threads that the app will use to run (the value should be greater than 0).
|
| 27 |
|
| 28 |
## Server
|
| 29 |
|
docs/installation.md
CHANGED
|
@@ -79,6 +79,7 @@ After that edit the config.lua file located under `websurfx` directory. In the c
|
|
| 79 |
-- ### General ###
|
| 80 |
logging = true -- an option to enable or disable logs.
|
| 81 |
debug = false -- an option to enable or disable debug mode.
|
|
|
|
| 82 |
|
| 83 |
-- ### Server ###
|
| 84 |
port = "8080" -- port on which server should be launched
|
|
|
|
| 79 |
-- ### General ###
|
| 80 |
logging = true -- an option to enable or disable logs.
|
| 81 |
debug = false -- an option to enable or disable debug mode.
|
| 82 |
+
threads = 10 -- the amount of threads that the app will use to run (the value should be greater than 0).
|
| 83 |
|
| 84 |
-- ### Server ###
|
| 85 |
port = "8080" -- port on which server should be launched
|
src/bin/websurfx.rs
CHANGED
|
@@ -24,8 +24,8 @@ async fn main() -> std::io::Result<()> {
|
|
| 24 |
);
|
| 25 |
log::info!(
|
| 26 |
"Open http://{}:{}/ in your browser",
|
|
|
|
| 27 |
config.port,
|
| 28 |
-
config.binding_ip
|
| 29 |
);
|
| 30 |
|
| 31 |
let listener = TcpListener::bind((config.binding_ip.clone(), config.port))?;
|
|
|
|
| 24 |
);
|
| 25 |
log::info!(
|
| 26 |
"Open http://{}:{}/ in your browser",
|
| 27 |
+
config.binding_ip,
|
| 28 |
config.port,
|
|
|
|
| 29 |
);
|
| 30 |
|
| 31 |
let listener = TcpListener::bind((config.binding_ip.clone(), config.port))?;
|
src/config/parser.rs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
| 4 |
use super::parser_models::Style;
|
| 5 |
use log::LevelFilter;
|
| 6 |
use rlua::Lua;
|
| 7 |
-
use std::{collections::HashMap, format, fs,
|
| 8 |
|
| 9 |
// ------- Constants --------
|
| 10 |
static COMMON_DIRECTORY_NAME: &str = "websurfx";
|
|
@@ -79,26 +79,26 @@ impl Config {
|
|
| 79 |
|
| 80 |
// Check whether logging has not been initialized before.
|
| 81 |
if logging_initialized {
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
} else
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
}
|
| 91 |
|
| 92 |
let threads: u8 = if parsed_threads == 0 {
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
log::info!("Falling back to using {} threads", total_num_of_threads)
|
| 97 |
-
} else {
|
| 98 |
-
std::io::stdout()
|
| 99 |
-
.lock()
|
| 100 |
-
.write_all(&format!("Config Error: The value of `threads` option should be a non zero positive integer\nFalling back to using {} threads\n", total_num_of_threads).into_bytes())?;
|
| 101 |
-
};
|
| 102 |
total_num_of_threads as u8
|
| 103 |
} else {
|
| 104 |
parsed_threads
|
|
|
|
| 4 |
use super::parser_models::Style;
|
| 5 |
use log::LevelFilter;
|
| 6 |
use rlua::Lua;
|
| 7 |
+
use std::{collections::HashMap, format, fs, path::Path, thread::available_parallelism};
|
| 8 |
|
| 9 |
// ------- Constants --------
|
| 10 |
static COMMON_DIRECTORY_NAME: &str = "websurfx";
|
|
|
|
| 79 |
|
| 80 |
// Check whether logging has not been initialized before.
|
| 81 |
if logging_initialized {
|
| 82 |
+
if let Ok(pkg_env_var) = std::env::var("PKG_ENV"){
|
| 83 |
+
if pkg_env_var.to_lowercase() == "dev" {
|
| 84 |
+
env_logger::Builder::new().filter(None, LevelFilter::Trace).init();
|
| 85 |
+
}
|
| 86 |
+
} else {
|
| 87 |
+
// Initializing logging middleware with level set to default or info.
|
| 88 |
+
let mut log_level: LevelFilter = LevelFilter::Error;
|
| 89 |
+
if logging && debug == false {
|
| 90 |
+
log_level = LevelFilter::Info;
|
| 91 |
+
} else if debug {
|
| 92 |
+
log_level = LevelFilter::Debug;
|
| 93 |
+
};
|
| 94 |
+
env_logger::Builder::new().filter(None, log_level).init();
|
| 95 |
+
}
|
| 96 |
}
|
| 97 |
|
| 98 |
let threads: u8 = if parsed_threads == 0 {
|
| 99 |
+
let total_num_of_threads: usize = available_parallelism()?.get() / 2;
|
| 100 |
+
log::error!("Config Error: The value of `threads` option should be a non zero positive integer");
|
| 101 |
+
log::error!("Falling back to using {} threads", total_num_of_threads);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 102 |
total_num_of_threads as u8
|
| 103 |
} else {
|
| 104 |
parsed_threads
|
src/results/aggregator.rs
CHANGED
|
@@ -144,6 +144,7 @@ pub async fn aggregate(
|
|
| 144 |
initial = false
|
| 145 |
}
|
| 146 |
Err(error_type) => {
|
|
|
|
| 147 |
engine_errors_info.push(EngineErrorInfo::new(
|
| 148 |
error_type.downcast_ref::<EngineError>().unwrap(),
|
| 149 |
upstream_search_engines[counter].clone(),
|
|
@@ -172,6 +173,7 @@ pub async fn aggregate(
|
|
| 172 |
counter += 1
|
| 173 |
}
|
| 174 |
Err(error_type) => {
|
|
|
|
| 175 |
engine_errors_info.push(EngineErrorInfo::new(
|
| 176 |
error_type.downcast_ref::<EngineError>().unwrap(),
|
| 177 |
upstream_search_engines[counter].clone(),
|
|
|
|
| 144 |
initial = false
|
| 145 |
}
|
| 146 |
Err(error_type) => {
|
| 147 |
+
log::error!("Engine Error: {:?}", error_type);
|
| 148 |
engine_errors_info.push(EngineErrorInfo::new(
|
| 149 |
error_type.downcast_ref::<EngineError>().unwrap(),
|
| 150 |
upstream_search_engines[counter].clone(),
|
|
|
|
| 173 |
counter += 1
|
| 174 |
}
|
| 175 |
Err(error_type) => {
|
| 176 |
+
log::error!("Engine Error: {:?}", error_type);
|
| 177 |
engine_errors_info.push(EngineErrorInfo::new(
|
| 178 |
error_type.downcast_ref::<EngineError>().unwrap(),
|
| 179 |
upstream_search_engines[counter].clone(),
|