From 360ffeec6367915fa1e8abee7879bdef78d7f256 Mon Sep 17 00:00:00 2001 From: Alexey Velikiy Date: Tue, 23 Nov 2021 11:47:23 +0300 Subject: [PATCH] code format --- server/src/config.rs | 26 ++++++++--------- .../analytic_service/analytic_service.rs | 4 +-- .../analytic_unit/anomaly_analytic_unit.rs | 29 +++++++++---------- .../analytic_unit/pattern_analytic_unit.rs | 2 +- .../analytic_unit/threshold_analytic_unit.rs | 4 +-- .../analytic_service/detection_runner.rs | 15 ++++------ server/src/services/analytic_service/mod.rs | 3 +- server/src/services/analytic_service/types.rs | 2 +- 8 files changed, 37 insertions(+), 48 deletions(-) diff --git a/server/src/config.rs b/server/src/config.rs index e2784a2..f7110ae 100644 --- a/server/src/config.rs +++ b/server/src/config.rs @@ -49,33 +49,34 @@ fn resolve_alerting(config: &config::Config) -> anyhow::Result("alerting.endpoint").is_err() { - return Err(anyhow::format_err!("missing endpoint param in alerting")); + return Err(anyhow::format_err!("missing endpoint param in alerting")); } if config.get::("alerting.interval").is_err() { - return Err(anyhow::format_err!("missing interval param in alerting")); + return Err(anyhow::format_err!("missing interval param in alerting")); } if config.get::("alerting.interval").is_err() { - return Err(anyhow::format_err!("alerting interval should be a positive integer number")); + return Err(anyhow::format_err!( + "alerting interval should be a positive integer number" + )); } let analytic_type = config.get::("alerting.type").unwrap(); if analytic_type != "webhook" { - return Err(anyhow::format_err!("unknown alerting typy {}", analytic_type)); + return Err(anyhow::format_err!( + "unknown alerting typy {}", + analytic_type + )); } let endpoint = config.get::("alerting.endpoint").unwrap(); let interval = config.get::("alerting.interval").unwrap(); return Ok(Some(AlertingConfig { - alerting_type: AlertingType::Webhook(WebhookAlertingConfig{ - endpoint - }), - interval - })) - + alerting_type: AlertingType::Webhook(WebhookAlertingConfig { endpoint }), + interval, + })); } impl Config { pub fn new() -> anyhow::Result { - let mut config = config::Config::default(); if std::path::Path::new("config.toml").exists() { @@ -90,11 +91,10 @@ impl Config { config.set("port", "8000").unwrap(); } - Ok(Config { port: config.get::("port").unwrap(), datasource_config: resolve_datasource(&config)?, - alerting: resolve_alerting(&config)? + alerting: resolve_alerting(&config)?, }) } } diff --git a/server/src/services/analytic_service/analytic_service.rs b/server/src/services/analytic_service/analytic_service.rs index 514e9b8..744b1b8 100644 --- a/server/src/services/analytic_service/analytic_service.rs +++ b/server/src/services/analytic_service/analytic_service.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use super::analytic_unit::types::{AnalyticUnitConfig, PatchConfig}; use super::detection_runner::DetectionRunner; -use super::types::{self, AnalyticUnitRF, DetectionRunnerConfig, HSR, LearningWaiter}; +use super::types::{self, AnalyticUnitRF, DetectionRunnerConfig, LearningWaiter, HSR}; use super::{ analytic_client::AnalyticClient, types::{AnalyticServiceMessage, LearningStatus, RequestType, ResponseType}, @@ -265,7 +265,7 @@ impl AnalyticService { pub async fn serve(&mut self) { // TODO: remove this hack self.consume_request(RequestType::RunLearning); - // TODO: start detection runner if + // TODO: start detection runner if if self.alerting.is_some() { self.run_detection_runner(); } diff --git a/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs b/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs index c00f64b..1a8f3a7 100644 --- a/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs +++ b/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs @@ -1,7 +1,5 @@ use crate::services::{ - analytic_service::types::{HSR}, - metric_service::MetricService, - segments_service::SegmentsService, + analytic_service::types::HSR, metric_service::MetricService, segments_service::SegmentsService, }; use super::types::{AnalyticUnit, AnalyticUnitConfig, AnomalyConfig, LearningResult}; @@ -13,18 +11,17 @@ use chrono::prelude::*; struct SARIMA { pub ts: Vec, - pub seasonality: u64 + pub seasonality: u64, } impl SARIMA { - pub fn new(seasonality: u64) -> SARIMA { return SARIMA { ts: Vec::new(), - seasonality - } + seasonality, + }; } - + pub fn learn(&mut self, ts: &Vec<(u64, f64)>) { // TODO: compute avg based on seasonality } @@ -36,12 +33,10 @@ impl SARIMA { pub fn push_point() { // TODO: inmplement } - + // TODO: don't count NaNs in model } - - // TODO: move to config const DETECTION_STEP: u64 = 10; @@ -59,12 +54,15 @@ fn get_value_with_offset(ts: &Vec<(u64, f64)>, index: usize, offset: u64) -> any pub struct AnomalyAnalyticUnit { config: AnomalyConfig, - sarima: Option + sarima: Option, } impl AnomalyAnalyticUnit { pub fn new(config: AnomalyConfig) -> AnomalyAnalyticUnit { - AnomalyAnalyticUnit { config, sarima: None } + AnomalyAnalyticUnit { + config, + sarima: None, + } } fn get_hsr_from_metric_result(&self, mr: &MetricResult) -> anyhow::Result { @@ -114,7 +112,6 @@ impl AnalyticUnit for AnomalyAnalyticUnit { } } async fn learn(&mut self, ms: MetricService, _ss: SegmentsService) -> LearningResult { - let mut sarima = SARIMA::new(self.config.seasonality); let utc: DateTime = Utc::now(); @@ -129,10 +126,10 @@ impl AnalyticUnit for AnomalyAnalyticUnit { let k = mr.data.keys().nth(0).unwrap(); let ts = &mr.data[k]; sarima.learn(ts); - + // TODO: ensure that learning reruns on seasonaliy change // TODO: load data to learning - + // TODO: update model to work online return LearningResult::Finished; } diff --git a/server/src/services/analytic_service/analytic_unit/pattern_analytic_unit.rs b/server/src/services/analytic_service/analytic_unit/pattern_analytic_unit.rs index 2055f2e..84b5212 100644 --- a/server/src/services/analytic_service/analytic_unit/pattern_analytic_unit.rs +++ b/server/src/services/analytic_service/analytic_unit/pattern_analytic_unit.rs @@ -4,7 +4,7 @@ use futures::future; use parking_lot::Mutex; use gbdt::config::Config; -use gbdt::decision_tree::{Data}; +use gbdt::decision_tree::Data; use gbdt::gradient_boost::GBDT; use crate::services::{ diff --git a/server/src/services/analytic_service/analytic_unit/threshold_analytic_unit.rs b/server/src/services/analytic_service/analytic_unit/threshold_analytic_unit.rs index d1e5b46..849d006 100644 --- a/server/src/services/analytic_service/analytic_unit/threshold_analytic_unit.rs +++ b/server/src/services/analytic_service/analytic_unit/threshold_analytic_unit.rs @@ -1,7 +1,5 @@ use crate::services::{ - analytic_service::types::{HSR}, - metric_service::MetricService, - segments_service::SegmentsService, + analytic_service::types::HSR, metric_service::MetricService, segments_service::SegmentsService, }; use super::types::{AnalyticUnit, AnalyticUnitConfig, LearningResult, ThresholdConfig}; diff --git a/server/src/services/analytic_service/detection_runner.rs b/server/src/services/analytic_service/detection_runner.rs index 209ae06..b2d57d6 100644 --- a/server/src/services/analytic_service/detection_runner.rs +++ b/server/src/services/analytic_service/detection_runner.rs @@ -9,7 +9,6 @@ use tokio::sync::{mpsc, RwLock}; use super::types::{AnalyticUnitRF, DetectionRunnerConfig}; use tokio::time::{sleep, Duration}; - pub struct DetectionRunner { config: DetectionRunnerConfig, analytic_unit: AnalyticUnitRF, @@ -17,19 +16,15 @@ pub struct DetectionRunner { } impl DetectionRunner { - pub fn new( - config: DetectionRunnerConfig, - analytic_unit: AnalyticUnitRF, - ) -> DetectionRunner { + pub fn new(config: DetectionRunnerConfig, analytic_unit: AnalyticUnitRF) -> DetectionRunner { DetectionRunner { config, analytic_unit, - running_handler: None + running_handler: None, } } pub async fn run(&mut self, from: u64) { - // TODO: get last detection timestamp from persistance // TODO: set lst detection from "now" if self.running_handler.is_some() { @@ -48,10 +43,10 @@ impl DetectionRunner { } } })); - } - pub async fn set_analytic_unit(analytic_unit: Arc>>) { - + pub async fn set_analytic_unit( + analytic_unit: Arc>>, + ) { } } diff --git a/server/src/services/analytic_service/mod.rs b/server/src/services/analytic_service/mod.rs index 7697f8a..6bd1bb8 100644 --- a/server/src/services/analytic_service/mod.rs +++ b/server/src/services/analytic_service/mod.rs @@ -1,9 +1,8 @@ mod analytic_service; pub mod analytic_unit; -pub mod types; pub mod detection_runner; +pub mod types; pub mod analytic_client; - pub use analytic_service::AnalyticService; diff --git a/server/src/services/analytic_service/types.rs b/server/src/services/analytic_service/types.rs index 9fff125..9c41570 100644 --- a/server/src/services/analytic_service/types.rs +++ b/server/src/services/analytic_service/types.rs @@ -11,7 +11,7 @@ use super::analytic_unit::types::PatchConfig; use anyhow::Result; use serde::Serialize; -use tokio::sync::{RwLock, oneshot}; +use tokio::sync::{oneshot, RwLock}; use crate::services::analytic_service::analytic_unit::types::AnalyticUnit;