11use crate :: builder:: NodeBuilder ;
22use crate :: io:: test_utils:: TestSyncStore ;
3- use crate :: io:: utils:: check_namespace_key_validity;
43use crate :: { Config , Node } ;
54use lightning:: util:: logger:: { Level , Logger , Record } ;
6- use lightning:: util:: persist:: KVStore ;
75
86use bitcoin:: { Address , Amount , Network , OutPoint , Txid } ;
97
@@ -16,12 +14,9 @@ use regex;
1614
1715use rand:: distributions:: Alphanumeric ;
1816use rand:: { thread_rng, Rng } ;
19- use std:: collections:: hash_map;
2017use std:: collections:: HashMap ;
2118use std:: env;
22- use std:: io:: { self , Write } ;
2319use std:: path:: PathBuf ;
24- use std:: sync:: atomic:: { AtomicBool , Ordering } ;
2520use std:: sync:: Arc ;
2621use std:: sync:: Mutex ;
2722use std:: time:: Duration ;
@@ -42,105 +37,6 @@ macro_rules! expect_event {
4237
4338pub ( crate ) use expect_event;
4439
45- pub ( crate ) struct TestStore {
46- persisted_bytes : Mutex < HashMap < String , HashMap < String , Vec < u8 > > > > ,
47- did_persist : Arc < AtomicBool > ,
48- }
49-
50- impl TestStore {
51- pub fn new ( ) -> Self {
52- let persisted_bytes = Mutex :: new ( HashMap :: new ( ) ) ;
53- let did_persist = Arc :: new ( AtomicBool :: new ( false ) ) ;
54-
55- Self { persisted_bytes, did_persist }
56- }
57-
58- pub fn get_and_clear_did_persist ( & self ) -> bool {
59- self . did_persist . swap ( false , Ordering :: Relaxed )
60- }
61- }
62-
63- impl KVStore for TestStore {
64- fn read (
65- & self , primary_namespace : & str , secondary_namespace : & str , key : & str ,
66- ) -> io:: Result < Vec < u8 > > {
67- check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "read" ) ?;
68- let persisted_lock = self . persisted_bytes . lock ( ) . unwrap ( ) ;
69- let prefixed = if secondary_namespace. is_empty ( ) {
70- primary_namespace. to_string ( )
71- } else {
72- format ! ( "{}/{}" , primary_namespace, secondary_namespace)
73- } ;
74-
75- if let Some ( outer_ref) = persisted_lock. get ( & prefixed) {
76- if let Some ( inner_ref) = outer_ref. get ( key) {
77- let bytes = inner_ref. clone ( ) ;
78- Ok ( bytes)
79- } else {
80- Err ( io:: Error :: new ( io:: ErrorKind :: NotFound , "Key not found" ) )
81- }
82- } else {
83- Err ( io:: Error :: new ( io:: ErrorKind :: NotFound , "Namespace not found" ) )
84- }
85- }
86-
87- fn write (
88- & self , primary_namespace : & str , secondary_namespace : & str , key : & str , buf : & [ u8 ] ,
89- ) -> io:: Result < ( ) > {
90- check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "write" ) ?;
91- let mut persisted_lock = self . persisted_bytes . lock ( ) . unwrap ( ) ;
92-
93- let prefixed = if secondary_namespace. is_empty ( ) {
94- primary_namespace. to_string ( )
95- } else {
96- format ! ( "{}/{}" , primary_namespace, secondary_namespace)
97- } ;
98- let outer_e = persisted_lock. entry ( prefixed) . or_insert ( HashMap :: new ( ) ) ;
99- let mut bytes = Vec :: new ( ) ;
100- bytes. write_all ( buf) ?;
101- outer_e. insert ( key. to_string ( ) , bytes) ;
102-
103- self . did_persist . store ( true , Ordering :: SeqCst ) ;
104-
105- Ok ( ( ) )
106- }
107-
108- fn remove (
109- & self , primary_namespace : & str , secondary_namespace : & str , key : & str , _lazy : bool ,
110- ) -> io:: Result < ( ) > {
111- check_namespace_key_validity ( primary_namespace, secondary_namespace, Some ( key) , "remove" ) ?;
112- let mut persisted_lock = self . persisted_bytes . lock ( ) . unwrap ( ) ;
113-
114- let prefixed = if secondary_namespace. is_empty ( ) {
115- primary_namespace. to_string ( )
116- } else {
117- format ! ( "{}/{}" , primary_namespace, secondary_namespace)
118- } ;
119- if let Some ( outer_ref) = persisted_lock. get_mut ( & prefixed) {
120- outer_ref. remove ( & key. to_string ( ) ) ;
121- }
122-
123- self . did_persist . store ( true , Ordering :: SeqCst ) ;
124-
125- Ok ( ( ) )
126- }
127-
128- fn list ( & self , primary_namespace : & str , secondary_namespace : & str ) -> io:: Result < Vec < String > > {
129- check_namespace_key_validity ( primary_namespace, secondary_namespace, None , "list" ) ?;
130- let mut persisted_lock = self . persisted_bytes . lock ( ) . unwrap ( ) ;
131-
132- let prefixed = if secondary_namespace. is_empty ( ) {
133- primary_namespace. to_string ( )
134- } else {
135- format ! ( "{}/{}" , primary_namespace, secondary_namespace)
136- } ;
137- match persisted_lock. entry ( prefixed) {
138- hash_map:: Entry :: Occupied ( e) => Ok ( e. get ( ) . keys ( ) . cloned ( ) . collect ( ) ) ,
139- hash_map:: Entry :: Vacant ( _) => Ok ( Vec :: new ( ) ) ,
140- }
141- }
142- }
143-
14440// Copied over from upstream LDK
14541#[ allow( dead_code) ]
14642pub struct TestLogger {
0 commit comments