v0.25.1
This commit is contained in:
1 parent
87e571c170
commit
fa7abc9e53
308 files changed
+49746
-50237
No files matched your search
+6
-59
@@ -114,8 +114,7 @@ impl Counters {
|
||||
self.response_bytes = self.response_bytes.saturating_add(sample.response_bytes);
|
||||
self.methods.add(&sample.method, 1);
|
||||
self.statuses.add(&format!("{}xx", sample.status / 100), 1);
|
||||
self.routes
|
||||
.add(sample.route.as_deref().unwrap_or("(main)"), 1);
|
||||
self.routes.add(sample.route.as_deref().unwrap_or("(main)"), 1);
|
||||
self.paths.add(&sample.path, 1);
|
||||
self.cache.add(sample.cache, 1);
|
||||
if let Some(country) = sample.country.as_deref() {
|
||||
@@ -150,8 +149,7 @@ impl Counters {
|
||||
duration_ms: self.duration_ms,
|
||||
request_bytes: self.request_bytes,
|
||||
response_bytes: self.response_bytes,
|
||||
mean_duration_ms: (self.requests > 0)
|
||||
.then(|| self.duration_ms as f64 / self.requests as f64),
|
||||
mean_duration_ms: (self.requests > 0).then(|| self.duration_ms as f64 / self.requests as f64),
|
||||
countries: self.countries.view(),
|
||||
user_agents: self.user_agents.view(),
|
||||
client_ips: self.client_ips.view(),
|
||||
@@ -241,12 +239,7 @@ impl Analytics {
|
||||
}
|
||||
total.view()
|
||||
} else {
|
||||
state
|
||||
.vhosts
|
||||
.get(selected)
|
||||
.cloned()
|
||||
.unwrap_or_default()
|
||||
.view()
|
||||
state.vhosts.get(selected).cloned().unwrap_or_default().view()
|
||||
};
|
||||
View {
|
||||
scope: selected.to_owned(),
|
||||
@@ -271,12 +264,8 @@ impl Analytics {
|
||||
let mut state = self.state.lock().unwrap_or_else(|e| e.into_inner());
|
||||
match scope.filter(|value| !value.is_empty() && *value != "*") {
|
||||
Some(scope) => {
|
||||
if state.vhosts.remove(scope).is_some() {
|
||||
1
|
||||
} else {
|
||||
0
|
||||
}
|
||||
}
|
||||
if state.vhosts.remove(scope).is_some() { 1 } else { 0 }
|
||||
},
|
||||
None => {
|
||||
let count = state.vhosts.len();
|
||||
state.vhosts.clear();
|
||||
@@ -298,46 +287,4 @@ fn truncate(value: &str, max_bytes: usize) -> String {
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn top_table_is_bounded() {
|
||||
let mut table = TopTable::default();
|
||||
for i in 0..1000 {
|
||||
table.add(&format!("value-{i}"), 1);
|
||||
}
|
||||
assert_eq!(table.values.len(), TOP_CAPACITY);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn labels_are_truncated_at_utf8_boundaries() {
|
||||
let value = "ą".repeat(200);
|
||||
let trimmed = truncate(&value, 255);
|
||||
assert!(trimmed.len() <= 255);
|
||||
assert!(trimmed.is_char_boundary(trimmed.len()));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn client_ip_is_exposed_in_the_bounded_top_view() {
|
||||
let mut counters = Counters::default();
|
||||
counters.record(Sample {
|
||||
vhost: "site".into(),
|
||||
route: None,
|
||||
method: "GET".into(),
|
||||
path: "/".into(),
|
||||
client_ip: Some("203.0.113.7".into()),
|
||||
status: 200,
|
||||
duration_ms: 2,
|
||||
request_bytes: 10,
|
||||
response_bytes: 20,
|
||||
cache: "MISS",
|
||||
user_agent: Some("test-agent".into()),
|
||||
country: Some("PL".into()),
|
||||
});
|
||||
let view = counters.view();
|
||||
assert_eq!(view.client_ips.len(), 1);
|
||||
assert_eq!(view.client_ips[0].value, "203.0.113.7");
|
||||
assert_eq!(view.client_ips[0].count, 1);
|
||||
}
|
||||
}
|
||||
include!("traffic/tests.rs");
|
||||
Reference in new issue
Block a user