File tree 2 files changed +54
-2
lines changed
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";
32
32
/// An event emitted by [`LdkLite`] that should be handled by the user.
33
33
///
34
34
/// [`LdkLite`]: [`crate::LdkLite`]
35
- #[ derive( Debug , Clone ) ]
36
- pub enum LdkLiteEvent {
35
+ #[ derive( Debug , Clone , PartialEq ) ]
36
+ pub enum Event {
37
37
/// A payment we sent was successful.
38
38
PaymentSuccessful {
39
39
/// The hash of the payment.
@@ -564,3 +564,29 @@ impl LdkEventHandler for LdkLiteEventHandler {
564
564
}
565
565
}
566
566
}
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