@@ -82,10 +82,16 @@ impl Details {
82
82
self . success_count + self . failure_count
83
83
}
84
84
85
- fn update_average_time ( & mut self , new_time : Duration ) {
85
+ fn report_success ( & mut self , new_time : Duration ) {
86
+ self . success_count += 1 ;
86
87
self . average_time =
87
88
( self . average_time * ( self . success_count - 1 ) + new_time) / self . success_count
88
89
}
90
+
91
+ fn report_failure ( & mut self ) {
92
+ // don't update average time on failure
93
+ self . failure_count += 1 ;
94
+ }
89
95
}
90
96
91
97
#[ tokio:: main]
@@ -159,42 +165,39 @@ async fn audit_block(
159
165
match header_handle. await ? {
160
166
Ok ( found_time) => {
161
167
let mut metrics = metrics. lock ( ) . unwrap ( ) ;
162
- metrics. header . success_count += 1 ;
163
168
metrics. active_audit_count -= 1 ;
164
169
let time_diff = found_time - timestamp;
165
- metrics. header . update_average_time ( time_diff) ;
170
+ metrics. header . report_success ( time_diff) ;
166
171
}
167
172
Err ( _) => {
168
173
let mut metrics = metrics. lock ( ) . unwrap ( ) ;
169
174
metrics. active_audit_count -= 1 ;
170
- metrics. header . failure_count += 1 ;
175
+ metrics. header . report_failure ( ) ;
171
176
}
172
177
}
173
178
match block_body_handle. await ? {
174
179
Ok ( found_time) => {
175
180
let mut metrics = metrics. lock ( ) . unwrap ( ) ;
176
- metrics. block_body . success_count += 1 ;
177
181
metrics. active_audit_count -= 1 ;
178
182
let time_diff = found_time - timestamp;
179
- metrics. block_body . update_average_time ( time_diff) ;
183
+ metrics. block_body . report_success ( time_diff) ;
180
184
}
181
185
Err ( _) => {
182
186
let mut metrics = metrics. lock ( ) . unwrap ( ) ;
183
- metrics. block_body . failure_count += 1 ;
187
+ metrics. block_body . report_failure ( ) ;
184
188
metrics. active_audit_count -= 1 ;
185
189
}
186
190
}
187
191
match receipts_handle. await ? {
188
192
Ok ( found_time) => {
189
193
let mut metrics = metrics. lock ( ) . unwrap ( ) ;
190
- metrics. receipts . success_count += 1 ;
191
194
metrics. active_audit_count -= 1 ;
192
195
let time_diff = found_time - timestamp;
193
- metrics. receipts . update_average_time ( time_diff) ;
196
+ metrics. receipts . report_success ( time_diff) ;
194
197
}
195
198
Err ( _) => {
196
199
let mut metrics = metrics. lock ( ) . unwrap ( ) ;
197
- metrics. receipts . failure_count += 1 ;
200
+ metrics. receipts . report_failure ( ) ;
198
201
metrics. active_audit_count -= 1 ;
199
202
}
200
203
}
@@ -296,17 +299,15 @@ mod test {
296
299
fn test_detail ( ) {
297
300
let mut details = Details :: default ( ) ;
298
301
assert_eq ! ( details. total_count( ) , 0 ) ;
299
- details. success_count += 1 ;
300
- details. update_average_time ( Duration :: from_secs ( 1 ) ) ;
302
+ details. report_success ( Duration :: from_secs ( 1 ) ) ;
301
303
assert_eq ! ( details. total_count( ) , 1 ) ;
302
304
assert_eq ! ( details. average_time, Duration :: from_secs( 1 ) ) ;
303
- details. failure_count += 1 ;
305
+ details. report_failure ( ) ;
304
306
assert_eq ! ( details. total_count( ) , 2 ) ;
305
- details. success_count += 1 ;
306
- details. update_average_time ( Duration :: from_secs ( 3 ) ) ;
307
+ details. report_success ( Duration :: from_secs ( 3 ) ) ;
307
308
assert_eq ! ( details. total_count( ) , 3 ) ;
308
309
assert_eq ! ( details. average_time, Duration :: from_secs( 2 ) ) ;
309
- details. failure_count += 1 ;
310
+ details. report_failure ( ) ;
310
311
assert_eq ! ( details. total_count( ) , 4 ) ;
311
312
}
312
313
}
0 commit comments