Skip to content

Commit 3af8a57

Browse files
authored
Merge pull request #2068 from input-output-hk/sfauvel/2023/fix_metrics_per_day_view
Fix metrics_per_day view and improve test by building the real Metric…
2 parents 215620c + d91a2c6 commit 3af8a57

File tree

5 files changed

+41
-33
lines changed

5 files changed

+41
-33
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-aggregator/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-aggregator"
3-
version = "0.5.96"
3+
version = "0.5.97"
44
description = "A Mithril Aggregator server"
55
authors = { workspace = true }
66
edition = { workspace = true }

mithril-aggregator/src/event_store/database/migration.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ create table if not exists event (
2525
r#"
2626
create view if not exists metrics_per_day as select metric_date as date, action as counter_name, sum(counter) value from
2727
(
28-
select action, json_extract(content, '$.content.counter') counter, date(json_extract(content, '$.content.date')) metric_date
28+
select action, json_extract(content, '$.content.value') counter, date(json_extract(content, '$.content.date')) metric_date
2929
from event
3030
where source='Metrics'
3131
)

mithril-aggregator/src/event_store/database/repository.rs

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,18 @@ mod tests {
6262
mod metrics_per_day_view {
6363
use std::time::Duration;
6464

65-
use crate::event_store::database::test_helper::event_store_db_connection;
66-
use chrono::{DateTime, Utc};
67-
use serde::{Deserialize, Serialize};
65+
use crate::{
66+
event_store::{database::test_helper::event_store_db_connection, TransmitterService},
67+
services::UsageReporter,
68+
test_tools::TestLogger,
69+
};
70+
use chrono::DateTime;
6871

6972
use mithril_common::StdResult;
7073

7174
use sqlite::ConnectionThreadSafe;
7275

7376
use super::*;
74-
#[derive(Serialize, Deserialize)]
75-
struct MetricMessage {
76-
counter: i64,
77-
duration: Duration,
78-
date: DateTime<Utc>,
79-
}
8077

8178
fn get_all_metrics(
8279
connection: Arc<ConnectionThreadSafe>,
@@ -106,16 +103,18 @@ mod tests {
106103
let metric_date =
107104
DateTime::parse_from_str(&format!("{date} +0000"), "%Y-%m-%d %H:%M:%S %z").unwrap();
108105

109-
let message = EventMessage::new(
110-
"Metrics",
111-
metric_name,
112-
serde_json::json!(MetricMessage {
113-
counter: value,
114-
duration: Duration::from_secs(3),
115-
date: metric_date.into(),
116-
}),
106+
let (tx, mut rx) = tokio::sync::mpsc::unbounded_channel::<EventMessage>();
107+
let transmitter_service = Arc::new(TransmitterService::new(tx, TestLogger::stdout()));
108+
let _result = UsageReporter::send_metric_event(
109+
&transmitter_service,
110+
metric_name.to_string(),
111+
value,
112+
Duration::from_secs(5),
113+
metric_date.into(),
117114
);
118115

116+
let message: EventMessage = rx.try_recv().unwrap();
117+
119118
let _event = persister.persist(message).unwrap();
120119
}
121120

mithril-aggregator/src/services/usage_reporter.rs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,26 @@ impl UsageReporter {
5959
.collect()
6060
}
6161

62+
pub(crate) fn send_metric_event(
63+
transmitter: &TransmitterService<EventMessage>,
64+
name: String,
65+
value: i64,
66+
period: Duration,
67+
date: DateTime<Utc>,
68+
) -> Result<(), String> {
69+
transmitter.send_event_message::<MetricEventMessage>(
70+
"Metrics",
71+
&name.clone(),
72+
&MetricEventMessage {
73+
name,
74+
value,
75+
period,
76+
date,
77+
},
78+
vec![],
79+
)
80+
}
81+
6282
fn send_metrics(&mut self, duration: &Duration) {
6383
let metrics = self.metrics_service.export_metrics_map();
6484
let delta = Self::compute_metrics_delta(&self.last_reported_metrics, &metrics);
@@ -67,19 +87,8 @@ impl UsageReporter {
6787
self.last_reported_metrics = metrics;
6888

6989
for (name, value) in delta {
70-
let _result = self
71-
.transmitter_service
72-
.send_event_message::<MetricEventMessage>(
73-
"Metrics",
74-
&name.clone(),
75-
&MetricEventMessage {
76-
name,
77-
value,
78-
period: *duration,
79-
date,
80-
},
81-
vec![],
82-
);
90+
let _result =
91+
Self::send_metric_event(&self.transmitter_service, name, value, *duration, date);
8392
}
8493
}
8594

0 commit comments

Comments
 (0)