@@ -9,8 +9,7 @@ use std::collections::{hash_map, HashMap};
99use std:: future:: Future ;
1010use std:: panic:: RefUnwindSafe ;
1111use std:: path:: PathBuf ;
12- use std:: sync:: { Arc , Mutex } ;
13- use std:: time:: Duration ;
12+ use std:: sync:: Mutex ;
1413
1514use lightning:: events:: ClosureReason ;
1615use lightning:: io;
@@ -27,8 +26,6 @@ use lightning::util::test_utils;
2726use rand:: distr:: Alphanumeric ;
2827use rand:: { rng, Rng } ;
2928
30- use crate :: runtime:: Runtime ;
31-
3229type TestMonitorUpdatePersister < ' a , K > = MonitorUpdatingPersister <
3330 & ' a K ,
3431 & ' a test_utils:: TestLogger ,
@@ -356,168 +353,3 @@ pub(crate) fn do_test_store<K: KVStoreSync + Sync>(store_0: &K, store_1: &K) {
356353 // Make sure everything is persisted as expected after close.
357354 check_persisted_data ! ( persister_0_max_pending_updates * 2 * EXPECTED_UPDATES_PER_PAYMENT + 1 ) ;
358355}
359-
360- struct DelayedStoreInner {
361- storage : Mutex < HashMap < String , Vec < u8 > > > ,
362- delay : Duration ,
363- }
364-
365- impl DelayedStoreInner {
366- fn new ( delay : Duration ) -> Self {
367- Self { storage : Mutex :: new ( HashMap :: new ( ) ) , delay }
368- }
369-
370- fn make_key ( pn : & str , sn : & str , key : & str ) -> String {
371- format ! ( "{}/{}/{}" , pn, sn, key)
372- }
373-
374- async fn read_internal (
375- & self , primary_namespace : String , secondary_namespace : String , key : String ,
376- ) -> Result < Vec < u8 > , io:: Error > {
377- tokio:: time:: sleep ( self . delay ) . await ;
378-
379- let full_key = Self :: make_key ( & primary_namespace, & secondary_namespace, & key) ;
380- let storage = self . storage . lock ( ) . unwrap ( ) ;
381- storage
382- . get ( & full_key)
383- . cloned ( )
384- . ok_or_else ( || io:: Error :: new ( io:: ErrorKind :: NotFound , "key not found" ) )
385- }
386-
387- async fn write_internal (
388- & self , primary_namespace : String , secondary_namespace : String , key : String , buf : Vec < u8 > ,
389- ) -> Result < ( ) , io:: Error > {
390- tokio:: time:: sleep ( self . delay ) . await ;
391-
392- let full_key = Self :: make_key ( & primary_namespace, & secondary_namespace, & key) ;
393- let mut storage = self . storage . lock ( ) . unwrap ( ) ;
394- storage. insert ( full_key, buf) ;
395- Ok ( ( ) )
396- }
397-
398- async fn remove_internal (
399- & self , primary_namespace : String , secondary_namespace : String , key : String ,
400- ) -> Result < ( ) , io:: Error > {
401- tokio:: time:: sleep ( self . delay ) . await ;
402-
403- let full_key = Self :: make_key ( & primary_namespace, & secondary_namespace, & key) ;
404- let mut storage = self . storage . lock ( ) . unwrap ( ) ;
405- storage. remove ( & full_key) ;
406- Ok ( ( ) )
407- }
408-
409- async fn list_internal (
410- & self , primary_namespace : String , secondary_namespace : String ,
411- ) -> Result < Vec < String > , io:: Error > {
412- tokio:: time:: sleep ( self . delay ) . await ;
413-
414- let prefix = format ! ( "{}/{}/" , primary_namespace, secondary_namespace) ;
415- let storage = self . storage . lock ( ) . unwrap ( ) ;
416- Ok ( storage
417- . keys ( )
418- . filter ( |k| k. starts_with ( & prefix) )
419- . map ( |k| k. strip_prefix ( & prefix) . unwrap ( ) . to_string ( ) )
420- . collect ( ) )
421- }
422- }
423-
424- pub struct DelayedStore {
425- inner : Arc < DelayedStoreInner > ,
426- runtime : Arc < Runtime > ,
427- }
428-
429- impl DelayedStore {
430- pub fn new ( delay_ms : u64 , runtime : Arc < Runtime > ) -> Self {
431- Self { inner : Arc :: new ( DelayedStoreInner :: new ( Duration :: from_millis ( delay_ms) ) ) , runtime }
432- }
433- }
434-
435- impl KVStore for DelayedStore {
436- fn read (
437- & self , primary_namespace : & str , secondary_namespace : & str , key : & str ,
438- ) -> impl Future < Output = Result < Vec < u8 > , io:: Error > > + ' static + Send {
439- let inner = Arc :: clone ( & self . inner ) ;
440- let pn = primary_namespace. to_string ( ) ;
441- let sn = secondary_namespace. to_string ( ) ;
442- let key = key. to_string ( ) ;
443-
444- async move { inner. read_internal ( pn, sn, key) . await }
445- }
446-
447- fn write (
448- & self , primary_namespace : & str , secondary_namespace : & str , key : & str , buf : Vec < u8 > ,
449- ) -> impl Future < Output = Result < ( ) , io:: Error > > + ' static + Send {
450- let inner = Arc :: clone ( & self . inner ) ;
451- let pn = primary_namespace. to_string ( ) ;
452- let sn = secondary_namespace. to_string ( ) ;
453- let key = key. to_string ( ) ;
454-
455- async move { inner. write_internal ( pn, sn, key, buf) . await }
456- }
457-
458- fn remove (
459- & self , primary_namespace : & str , secondary_namespace : & str , key : & str , _lazy : bool ,
460- ) -> impl Future < Output = Result < ( ) , io:: Error > > + ' static + Send {
461- let inner = Arc :: clone ( & self . inner ) ;
462- let pn = primary_namespace. to_string ( ) ;
463- let sn = secondary_namespace. to_string ( ) ;
464- let key = key. to_string ( ) ;
465-
466- async move { inner. remove_internal ( pn, sn, key) . await }
467- }
468-
469- fn list (
470- & self , primary_namespace : & str , secondary_namespace : & str ,
471- ) -> impl Future < Output = Result < Vec < String > , io:: Error > > + ' static + Send {
472- let inner = Arc :: clone ( & self . inner ) ;
473- let pn = primary_namespace. to_string ( ) ;
474- let sn = secondary_namespace. to_string ( ) ;
475-
476- async move { inner. list_internal ( pn, sn) . await }
477- }
478- }
479-
480- impl KVStoreSync for DelayedStore {
481- fn read (
482- & self , primary_namespace : & str , secondary_namespace : & str , key : & str ,
483- ) -> Result < Vec < u8 > , io:: Error > {
484- let inner = Arc :: clone ( & self . inner ) ;
485- let pn = primary_namespace. to_string ( ) ;
486- let sn = secondary_namespace. to_string ( ) ;
487- let key = key. to_string ( ) ;
488-
489- self . runtime . block_on ( async move { inner. read_internal ( pn, sn, key) . await } )
490- }
491-
492- fn write (
493- & self , primary_namespace : & str , secondary_namespace : & str , key : & str , buf : Vec < u8 > ,
494- ) -> Result < ( ) , io:: Error > {
495- let inner = Arc :: clone ( & self . inner ) ;
496- let pn = primary_namespace. to_string ( ) ;
497- let sn = secondary_namespace. to_string ( ) ;
498- let key = key. to_string ( ) ;
499-
500- self . runtime . block_on ( async move { inner. write_internal ( pn, sn, key, buf) . await } )
501- }
502-
503- fn remove (
504- & self , primary_namespace : & str , secondary_namespace : & str , key : & str , _lazy : bool ,
505- ) -> Result < ( ) , io:: Error > {
506- let inner = Arc :: clone ( & self . inner ) ;
507- let pn = primary_namespace. to_string ( ) ;
508- let sn = secondary_namespace. to_string ( ) ;
509- let key = key. to_string ( ) ;
510-
511- self . runtime . block_on ( async move { inner. remove_internal ( pn, sn, key) . await } )
512- }
513-
514- fn list (
515- & self , primary_namespace : & str , secondary_namespace : & str ,
516- ) -> Result < Vec < String > , io:: Error > {
517- let inner = Arc :: clone ( & self . inner ) ;
518- let pn = primary_namespace. to_string ( ) ;
519- let sn = secondary_namespace. to_string ( ) ;
520-
521- self . runtime . block_on ( async move { inner. list_internal ( pn, sn) . await } )
522- }
523- }
0 commit comments