File tree Expand file tree Collapse file tree 2 files changed +54
-2
lines changed Expand file tree Collapse file tree 2 files changed +54
-2
lines changed Original file line number Diff line number Diff line change @@ -32,8 +32,8 @@ pub(crate) const EVENTS_PERSISTENCE_KEY: &str = "events";
3232/// An event emitted by [`LdkLite`] that should be handled by the user.
3333///
3434/// [`LdkLite`]: [`crate::LdkLite`]
35- #[ derive( Debug , Clone ) ]
36- pub enum LdkLiteEvent {
35+ #[ derive( Debug , Clone , PartialEq ) ]
36+ pub enum Event {
3737 /// A payment we sent was successful.
3838 PaymentSuccessful {
3939 /// The hash of the payment.
@@ -564,3 +564,29 @@ impl LdkEventHandler for LdkLiteEventHandler {
564564 }
565565 }
566566}
567+
568+ #[ cfg( test) ]
569+ mod tests {
570+ use super :: * ;
571+ use crate :: test_utils:: TestPersister ;
572+
573+ #[ test]
574+ fn event_queue_persistence ( ) {
575+ let test_persister = Arc :: new ( TestPersister :: new ( ) ) ;
576+ let event_queue = EventQueue :: new ( Arc :: clone ( & test_persister) ) ;
577+
578+ let expected_event = Event :: ChannelReady { channel_id : [ 23u8 ; 32 ] , user_channel_id : 2323 } ;
579+ event_queue. add_event ( expected_event. clone ( ) ) . unwrap ( ) ;
580+ assert ! ( test_persister. get_and_clear_pending_persist( ) ) ;
581+
582+ // Check we get the expected event and that it is returned until we mark it handled.
583+ for _ in 0 ..5 {
584+ assert_eq ! ( event_queue. next_event( ) , expected_event) ;
585+ assert_eq ! ( false , test_persister. get_and_clear_pending_persist( ) ) ;
586+ }
587+
588+ // Check we persisted on `event_handled()`
589+ event_queue. event_handled ( ) . unwrap ( ) ;
590+ assert ! ( test_persister. get_and_clear_pending_persist( ) ) ;
591+ }
592+ }
Original file line number Diff line number Diff line change 1+ use lightning:: util:: persist:: KVStorePersister ;
2+ use lightning:: util:: ser:: Writeable ;
3+
4+ use std:: sync:: atomic:: { AtomicBool , Ordering } ;
5+
6+ pub ( crate ) struct TestPersister {
7+ pending_persist : AtomicBool ,
8+ }
9+
10+ impl TestPersister {
11+ pub fn new ( ) -> Self {
12+ let pending_persist = AtomicBool :: new ( false ) ;
13+ Self { pending_persist }
14+ }
15+
16+ pub fn get_and_clear_pending_persist ( & self ) -> bool {
17+ self . pending_persist . swap ( false , Ordering :: SeqCst )
18+ }
19+ }
20+
21+ impl KVStorePersister for TestPersister {
22+ fn persist < W : Writeable > ( & self , _key : & str , _object : & W ) -> std:: io:: Result < ( ) > {
23+ self . pending_persist . store ( true , Ordering :: SeqCst ) ;
24+ Ok ( ( ) )
25+ }
26+ }
You can’t perform that action at this time.
0 commit comments