Browse Source

buggy detections

pull/25/head
Alexey Velikiy 3 years ago
parent
commit
bfaec56725
  1. 4
      server/src/services/analytic_service/analytic_service.rs
  2. 39
      server/src/services/analytic_service/pattern_detector.rs

4
server/src/services/analytic_service/analytic_service.rs

@ -249,10 +249,6 @@ impl AnalyticService {
})
.collect();
// TODO: run detections
// TODO: convert detections to segments
// Ok(result_segments)
match tx.send(Ok(result_segments)) {
Ok(_) => {}
Err(_e) => {

39
server/src/services/analytic_service/pattern_detector.rs

@ -4,6 +4,8 @@ use tokio::time::{sleep, Duration};
#[derive(Debug, Clone)]
pub struct LearningResults {
backet_size: usize,
// avg_min: f64,
// avg_max: f64,
}
#[derive(Clone)]
@ -26,18 +28,45 @@ impl PatternDetector {
max_size = max_size.max(r.len());
}
let ten_millis = time::Duration::from_millis(1000);
thread::sleep(ten_millis);
// let mut max_sum = 0;
// let mut min_sum = 0;
sleep(Duration::from_millis(1000)).await;
// for read in reads {
// let my_max = read.iter().map(|(t,v)| *v).max().unwrap();
// let my_min = read.iter().min().unwrap();
// }
LearningResults {
backet_size: (min_size + max_size) / 2,
}
}
// TODO: get iterator instead of vector
pub fn detect(&self, ts: &Vec<(u64, f64)>) -> Vec<(u64, u64)> {
// fill backet
return Vec::new();
let mut results = Vec::new();
let mut i = 0;
while i < ts.len() - self.learning_results.backet_size {
let backet: Vec<_> = ts.iter().skip(i).take(self.learning_results.backet_size).collect();
let mut min = f64::MAX;
let mut max = f64::MIN;
for (t, v) in backet.iter() {
min = v.min(min);
max = v.max(max);
}
if min > 10_000. && max < 100_000. {
let from = backet[i].0;
let to = backet[i + self.learning_results.backet_size - 1].0;
results.push((from, to));
}
i += 100;
}
return results;
}
}

Loading…
Cancel
Save