@@ -17,6 +17,7 @@ fn post_statistics(
17
17
. and ( warp:: post ( ) )
18
18
. and ( warp:: body:: json ( ) )
19
19
. and ( middlewares:: with_event_transmitter ( dependency_manager) )
20
+ . and ( middlewares:: with_metrics_service ( dependency_manager) )
20
21
. and_then ( handlers:: post_snapshot_statistics)
21
22
}
22
23
@@ -28,11 +29,17 @@ mod handlers {
28
29
29
30
use crate :: event_store:: { EventMessage , TransmitterService } ;
30
31
use crate :: http_server:: routes:: reply;
32
+ use crate :: MetricsService ;
31
33
32
34
pub async fn post_snapshot_statistics (
33
35
snapshot_download_message : SnapshotDownloadMessage ,
34
36
event_transmitter : Arc < TransmitterService < EventMessage > > ,
37
+ metrics_service : Arc < MetricsService > ,
35
38
) -> Result < impl warp:: Reply , Infallible > {
39
+ metrics_service
40
+ . get_cardano_db_total_restoration_since_startup ( )
41
+ . increment ( ) ;
42
+
36
43
let headers: Vec < ( & str , & str ) > = Vec :: new ( ) ;
37
44
38
45
match event_transmitter. send_event_message (
@@ -61,7 +68,8 @@ mod tests {
61
68
} ;
62
69
63
70
use crate :: {
64
- dependency_injection:: DependenciesBuilder , http_server:: SERVER_BASE_PATH , Configuration ,
71
+ dependency_injection:: DependenciesBuilder , http_server:: SERVER_BASE_PATH ,
72
+ initialize_dependencies, Configuration ,
65
73
} ;
66
74
67
75
fn setup_router (
@@ -108,4 +116,30 @@ mod tests {
108
116
let _ = rx. try_recv ( ) . unwrap ( ) ;
109
117
result. unwrap ( ) ;
110
118
}
119
+
120
+ #[ tokio:: test]
121
+ async fn test_post_statistics_increments_cardano_db_total_restoration_since_startup_metric ( ) {
122
+ let method = Method :: POST . as_str ( ) ;
123
+ let path = "/statistics/snapshot" ;
124
+ let dependency_manager = Arc :: new ( initialize_dependencies ( ) . await ) ;
125
+ let initial_counter_value = dependency_manager
126
+ . metrics_service
127
+ . get_cardano_db_total_restoration_since_startup ( )
128
+ . get ( ) ;
129
+
130
+ request ( )
131
+ . method ( method)
132
+ . json ( & SnapshotDownloadMessage :: dummy ( ) )
133
+ . path ( & format ! ( "/{SERVER_BASE_PATH}{path}" ) )
134
+ . reply ( & setup_router ( dependency_manager. clone ( ) ) )
135
+ . await ;
136
+
137
+ assert_eq ! (
138
+ initial_counter_value + 1 ,
139
+ dependency_manager
140
+ . metrics_service
141
+ . get_cardano_db_total_restoration_since_startup( )
142
+ . get( )
143
+ ) ;
144
+ }
111
145
}
0 commit comments