@@ -123,13 +123,14 @@ pub fn construction_payloads(
123
123
metadata : Option < ConstructionPayloadsRequestMetadata > ,
124
124
ledger_id : & Principal ,
125
125
public_keys : Vec < PublicKey > ,
126
+ now : SystemTime ,
126
127
) -> Result < ConstructionPayloadsResponse , Error > {
127
128
// The interval between each ingress message
128
129
// The permitted drift makes sure that intervals are overlapping and there are no edge cases when trying to submit to the IC
129
130
let ingress_interval: u64 =
130
131
( ic_constants:: MAX_INGRESS_TTL - ic_constants:: PERMITTED_DRIFT ) . as_nanos ( ) as u64 ;
131
132
132
- let now = SystemTime :: now ( )
133
+ let now = now
133
134
. duration_since ( SystemTime :: UNIX_EPOCH )
134
135
. unwrap ( )
135
136
. as_nanos ( ) as u64 ;
@@ -259,7 +260,6 @@ mod tests {
259
260
use proptest:: test_runner:: Config as TestRunnerConfig ;
260
261
use proptest:: test_runner:: TestRunner ;
261
262
use rosetta_core:: models:: RosettaSupportedKeyPair ;
262
- use std:: time:: Duration ;
263
263
264
264
const NUM_TEST_CASES : u32 = 100 ;
265
265
const NUM_BLOCKS : usize = 1 ;
@@ -287,11 +287,10 @@ mod tests {
287
287
parse_response : ConstructionParseResponse ,
288
288
operations : Vec < Operation > ,
289
289
metadata : ConstructionPayloadsRequestMetadata ,
290
- now : Duration ,
290
+ now : u64 ,
291
291
) {
292
292
let received_metadata =
293
293
ConstructionPayloadsRequestMetadata :: try_from ( parse_response. metadata ) . unwrap ( ) ;
294
- let now_u64 = now. as_nanos ( ) as u64 ;
295
294
296
295
parse_response. operations . into_iter ( ) . for_each ( |operation| {
297
296
assert ! (
@@ -307,17 +306,17 @@ mod tests {
307
306
if let Some ( created_at_time) = metadata. created_at_time {
308
307
assert_eq ! ( received_metadata. created_at_time. unwrap( ) , created_at_time) ;
309
308
} else {
310
- assert ! ( received_metadata. created_at_time. unwrap( ) >= now_u64 ) ;
309
+ assert ! ( received_metadata. created_at_time. unwrap( ) >= now ) ;
311
310
}
312
311
assert_eq ! ( received_metadata. memo, metadata. memo) ;
313
312
314
313
if let Some ( ingress_start) = metadata. ingress_start {
315
314
assert_eq ! ( received_metadata. ingress_start. unwrap( ) , ingress_start) ;
316
315
} else {
317
- assert ! ( received_metadata. ingress_start. unwrap( ) >= now_u64 ) ;
316
+ assert ! ( received_metadata. ingress_start. unwrap( ) >= now ) ;
318
317
assert ! (
319
318
received_metadata. ingress_start. unwrap( )
320
- <= now_u64
319
+ <= now
321
320
+ ( ic_constants:: MAX_INGRESS_TTL - ic_constants:: PERMITTED_DRIFT ) . as_nanos( )
322
321
as u64
323
322
) ;
@@ -420,17 +419,23 @@ mod tests {
420
419
. try_into ( )
421
420
. unwrap ( ) ;
422
421
423
- let now = SystemTime :: now ( )
424
- . duration_since ( SystemTime :: UNIX_EPOCH )
425
- . unwrap ( ) ;
422
+ let now = SystemTime :: now ( ) ;
426
423
427
424
let construction_payloads_response = construction_payloads (
428
425
rosetta_core_operations. clone ( ) ,
429
426
Some ( payloads_metadata. clone ( ) ) ,
430
427
& PrincipalId :: new_anonymous ( ) . 0 ,
431
428
vec ! [ ( & arg_with_caller. caller) . into( ) ] ,
429
+ now,
432
430
) ;
433
431
432
+ let now = now
433
+ . duration_since ( SystemTime :: UNIX_EPOCH )
434
+ . unwrap ( )
435
+ . as_nanos ( ) as u64 ;
436
+ let ingress_interval = ( ic_constants:: MAX_INGRESS_TTL
437
+ - ic_constants:: PERMITTED_DRIFT )
438
+ . as_nanos ( ) as u64 ;
434
439
match (
435
440
payloads_metadata. ingress_end ,
436
441
payloads_metadata. ingress_start ,
@@ -440,30 +445,27 @@ mod tests {
440
445
assert ! ( construction_payloads_response. is_err( ) ) ;
441
446
continue ;
442
447
}
443
- if ingress_end
444
- < ( now + ic_constants:: MAX_INGRESS_TTL ) . as_nanos ( ) as u64
445
- {
448
+ if ingress_end < now + ingress_interval {
446
449
assert ! ( construction_payloads_response. is_err( ) ) ;
447
450
continue ;
448
451
}
449
452
}
450
453
( Some ( ingress_end) , _) => {
451
- if ingress_end
452
- < ( now + ic_constants:: MAX_INGRESS_TTL ) . as_nanos ( ) as u64
453
- {
454
+ if ingress_end < now + ingress_interval {
454
455
assert ! ( construction_payloads_response. is_err( ) ) ;
455
456
continue ;
456
457
}
457
458
}
458
459
( _, Some ( ingress_start) ) => {
459
- if ingress_start < now. as_nanos ( ) as u64 {
460
+ let ingress_end = ingress_start + ingress_interval;
461
+ if ingress_end < now + ingress_interval {
460
462
assert ! ( construction_payloads_response. is_err( ) ) ;
461
463
continue ;
462
464
}
463
465
}
464
466
( _, _) => { }
465
467
}
466
-
468
+ println ! ( "{:?}" , payloads_metadata ) ;
467
469
let construction_parse_response = construction_parse (
468
470
construction_payloads_response
469
471
. clone ( )
0 commit comments