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,101 +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 ( & self , namespace : & str , sub_namespace : & str , key : & str ) -> io:: Result < Vec < u8 > > {
65- check_namespace_key_validity ( namespace, sub_namespace, Some ( key) , "read" ) ?;
66- let persisted_lock = self . persisted_bytes . lock ( ) . unwrap ( ) ;
67- let prefixed = if sub_namespace. is_empty ( ) {
68- namespace. to_string ( )
69- } else {
70- format ! ( "{}/{}" , namespace, sub_namespace)
71- } ;
72-
73- if let Some ( outer_ref) = persisted_lock. get ( & prefixed) {
74- if let Some ( inner_ref) = outer_ref. get ( key) {
75- let bytes = inner_ref. clone ( ) ;
76- Ok ( bytes)
77- } else {
78- Err ( io:: Error :: new ( io:: ErrorKind :: NotFound , "Key not found" ) )
79- }
80- } else {
81- Err ( io:: Error :: new ( io:: ErrorKind :: NotFound , "Namespace not found" ) )
82- }
83- }
84-
85- fn write ( & self , namespace : & str , sub_namespace : & str , key : & str , buf : & [ u8 ] ) -> io:: Result < ( ) > {
86- check_namespace_key_validity ( namespace, sub_namespace, Some ( key) , "write" ) ?;
87- let mut persisted_lock = self . persisted_bytes . lock ( ) . unwrap ( ) ;
88-
89- let prefixed = if sub_namespace. is_empty ( ) {
90- namespace. to_string ( )
91- } else {
92- format ! ( "{}/{}" , namespace, sub_namespace)
93- } ;
94- let outer_e = persisted_lock. entry ( prefixed) . or_insert ( HashMap :: new ( ) ) ;
95- let mut bytes = Vec :: new ( ) ;
96- bytes. write_all ( buf) ?;
97- outer_e. insert ( key. to_string ( ) , bytes) ;
98-
99- self . did_persist . store ( true , Ordering :: SeqCst ) ;
100-
101- Ok ( ( ) )
102- }
103-
104- fn remove (
105- & self , namespace : & str , sub_namespace : & str , key : & str , _lazy : bool ,
106- ) -> io:: Result < ( ) > {
107- check_namespace_key_validity ( namespace, sub_namespace, Some ( key) , "remove" ) ?;
108- let mut persisted_lock = self . persisted_bytes . lock ( ) . unwrap ( ) ;
109-
110- let prefixed = if sub_namespace. is_empty ( ) {
111- namespace. to_string ( )
112- } else {
113- format ! ( "{}/{}" , namespace, sub_namespace)
114- } ;
115- if let Some ( outer_ref) = persisted_lock. get_mut ( & prefixed) {
116- outer_ref. remove ( & key. to_string ( ) ) ;
117- }
118-
119- self . did_persist . store ( true , Ordering :: SeqCst ) ;
120-
121- Ok ( ( ) )
122- }
123-
124- fn list ( & self , namespace : & str , sub_namespace : & str ) -> io:: Result < Vec < String > > {
125- check_namespace_key_validity ( namespace, sub_namespace, None , "list" ) ?;
126- let mut persisted_lock = self . persisted_bytes . lock ( ) . unwrap ( ) ;
127-
128- let prefixed = if sub_namespace. is_empty ( ) {
129- namespace. to_string ( )
130- } else {
131- format ! ( "{}/{}" , namespace, sub_namespace)
132- } ;
133- match persisted_lock. entry ( prefixed) {
134- hash_map:: Entry :: Occupied ( e) => Ok ( e. get ( ) . keys ( ) . cloned ( ) . collect ( ) ) ,
135- hash_map:: Entry :: Vacant ( _) => Ok ( Vec :: new ( ) ) ,
136- }
137- }
138- }
139-
14040// Copied over from upstream LDK
14141#[ allow( dead_code) ]
14242pub struct TestLogger {
0 commit comments