@@ -861,44 +861,23 @@ mod tests {
861
861
#[ test]
862
862
fn monitor_from_outpoint_works ( ) {
863
863
let monitor_name1 = MonitorName :: from ( OutPoint {
864
- txid : Txid :: from_hex (
865
- "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" ,
866
- )
867
- . unwrap ( ) ,
864
+ txid : Txid :: from_hex ( "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" ) . unwrap ( ) ,
868
865
index : 1 ,
869
866
} ) ;
870
- assert_eq ! (
871
- monitor_name1. as_str( ) ,
872
- "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef_1"
873
- ) ;
867
+ assert_eq ! ( monitor_name1. as_str( ) , "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef_1" ) ;
874
868
875
869
let monitor_name2 = MonitorName :: from ( OutPoint {
876
- txid : Txid :: from_hex (
877
- "f33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeef" ,
878
- )
879
- . unwrap ( ) ,
870
+ txid : Txid :: from_hex ( "f33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeef" ) . unwrap ( ) ,
880
871
index : u16:: MAX ,
881
872
} ) ;
882
- assert_eq ! (
883
- monitor_name2. as_str( ) ,
884
- "f33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeef_65535"
885
- ) ;
873
+ assert_eq ! ( monitor_name2. as_str( ) , "f33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeeff33dbeef_65535" ) ;
886
874
}
887
875
888
876
#[ test]
889
877
fn bad_monitor_string_fails ( ) {
890
- assert ! ( MonitorName :: new(
891
- "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" . to_string( )
892
- )
893
- . is_err( ) ) ;
894
- assert ! ( MonitorName :: new(
895
- "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef_65536" . to_string( )
896
- )
897
- . is_err( ) ) ;
898
- assert ! ( MonitorName :: new(
899
- "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef_21" . to_string( )
900
- )
901
- . is_err( ) ) ;
878
+ assert ! ( MonitorName :: new( "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" . to_string( ) ) . is_err( ) ) ;
879
+ assert ! ( MonitorName :: new( "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef_65536" . to_string( ) ) . is_err( ) ) ;
880
+ assert ! ( MonitorName :: new( "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef_21" . to_string( ) ) . is_err( ) ) ;
902
881
}
903
882
904
883
// Exercise the `MonitorUpdatingPersister` with real channels and payments.
@@ -949,24 +928,18 @@ mod tests {
949
928
950
929
// Check that the persisted channel data is empty before any channels are
951
930
// open.
952
- let mut persisted_chan_data_0 = persister_0
953
- . read_all_channel_monitors_with_updates ( & broadcaster_0, & chanmon_cfgs[ 0 ] . fee_estimator )
954
- . unwrap ( ) ;
931
+ let mut persisted_chan_data_0 = persister_0. read_all_channel_monitors_with_updates (
932
+ & broadcaster_0, & chanmon_cfgs[ 0 ] . fee_estimator ) . unwrap ( ) ;
955
933
assert_eq ! ( persisted_chan_data_0. len( ) , 0 ) ;
956
- let mut persisted_chan_data_1 = persister_1
957
- . read_all_channel_monitors_with_updates ( & broadcaster_1, & chanmon_cfgs[ 1 ] . fee_estimator )
958
- . unwrap ( ) ;
934
+ let mut persisted_chan_data_1 = persister_1. read_all_channel_monitors_with_updates (
935
+ & broadcaster_1, & chanmon_cfgs[ 1 ] . fee_estimator ) . unwrap ( ) ;
959
936
assert_eq ! ( persisted_chan_data_1. len( ) , 0 ) ;
960
937
961
938
// Helper to make sure the channel is on the expected update ID.
962
939
macro_rules! check_persisted_data {
963
940
( $expected_update_id: expr) => {
964
- persisted_chan_data_0 = persister_0
965
- . read_all_channel_monitors_with_updates(
966
- & broadcaster_0,
967
- & chanmon_cfgs[ 0 ] . fee_estimator,
968
- )
969
- . unwrap( ) ;
941
+ persisted_chan_data_0 = persister_0. read_all_channel_monitors_with_updates(
942
+ & broadcaster_0, & chanmon_cfgs[ 0 ] . fee_estimator) . unwrap( ) ;
970
943
// check that we stored only one monitor
971
944
assert_eq!( persisted_chan_data_0. len( ) , 1 ) ;
972
945
for ( _, mon) in persisted_chan_data_0. iter( ) {
@@ -977,42 +950,24 @@ mod tests {
977
950
let ( _, cm_0) = persister_0. read_monitor( & monitor_name) . unwrap( ) ;
978
951
if cm_0. get_latest_update_id( ) == $expected_update_id {
979
952
assert_eq!(
980
- persister_0
981
- . kv_store
982
- . list(
983
- CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE ,
984
- monitor_name. as_str( )
985
- )
986
- . unwrap( )
987
- . len( ) ,
953
+ persister_0. kv_store. list( CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE ,
954
+ monitor_name. as_str( ) ) . unwrap( ) . len( ) ,
988
955
0 ,
989
956
"updates stored when they shouldn't be in persister 0"
990
957
) ;
991
958
}
992
959
}
993
- persisted_chan_data_1 = persister_1
994
- . read_all_channel_monitors_with_updates(
995
- & broadcaster_1,
996
- & chanmon_cfgs[ 1 ] . fee_estimator,
997
- )
998
- . unwrap( ) ;
960
+ persisted_chan_data_1 = persister_1. read_all_channel_monitors_with_updates(
961
+ & broadcaster_1, & chanmon_cfgs[ 1 ] . fee_estimator) . unwrap( ) ;
999
962
assert_eq!( persisted_chan_data_1. len( ) , 1 ) ;
1000
963
for ( _, mon) in persisted_chan_data_1. iter( ) {
1001
964
assert_eq!( mon. get_latest_update_id( ) , $expected_update_id) ;
1002
965
let monitor_name = MonitorName :: from( mon. get_funding_txo( ) . 0 ) ;
1003
966
let ( _, cm_1) = persister_1. read_monitor( & monitor_name) . unwrap( ) ;
1004
- if $expected_update_id != CLOSED_CHANNEL_UPDATE_ID
1005
- && cm_1. get_latest_update_id( ) == $expected_update_id
1006
- {
967
+ if $expected_update_id != CLOSED_CHANNEL_UPDATE_ID && cm_1. get_latest_update_id( ) == $expected_update_id {
1007
968
assert_eq!(
1008
- persister_1
1009
- . kv_store
1010
- . list(
1011
- CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE ,
1012
- monitor_name. as_str( )
1013
- )
1014
- . unwrap( )
1015
- . len( ) ,
969
+ persister_1. kv_store. list( CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE ,
970
+ monitor_name. as_str( ) ) . unwrap( ) . len( ) ,
1016
971
0 ,
1017
972
"updates stored when they shouldn't be in persister 1"
1018
973
) ;
@@ -1049,76 +1004,33 @@ mod tests {
1049
1004
1050
1005
// Force close because cooperative close doesn't result in any persisted
1051
1006
// updates.
1052
- nodes[ 0 ]
1053
- . node
1054
- . force_close_broadcasting_latest_txn (
1055
- & nodes[ 0 ] . node . list_channels ( ) [ 0 ] . channel_id ,
1056
- & nodes[ 1 ] . node . get_our_node_id ( ) ,
1057
- )
1058
- . unwrap ( ) ;
1007
+ nodes[ 0 ] . node . force_close_broadcasting_latest_txn ( & nodes[ 0 ] . node . list_channels ( ) [ 0 ] . channel_id , & nodes[ 1 ] . node . get_our_node_id ( ) ) . unwrap ( ) ;
1059
1008
1060
- check_closed_event (
1061
- & nodes[ 0 ] ,
1062
- 1 ,
1063
- ClosureReason :: HolderForceClosed ,
1064
- false ,
1065
- & [ nodes[ 1 ] . node . get_our_node_id ( ) ] ,
1066
- 100000 ,
1067
- ) ;
1009
+ check_closed_event ( & nodes[ 0 ] , 1 , ClosureReason :: HolderForceClosed , false , & [ nodes[ 1 ] . node . get_our_node_id ( ) ] , 100000 ) ;
1068
1010
check_closed_broadcast ! ( nodes[ 0 ] , true ) ;
1069
1011
check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
1070
1012
1071
1013
let node_txn = nodes[ 0 ] . tx_broadcaster . txn_broadcast ( ) ;
1072
1014
assert_eq ! ( node_txn. len( ) , 1 ) ;
1073
1015
1074
- connect_block (
1075
- & nodes[ 1 ] ,
1076
- & create_dummy_block (
1077
- nodes[ 0 ] . best_block_hash ( ) ,
1078
- 42 ,
1079
- vec ! [ node_txn[ 0 ] . clone( ) , node_txn[ 0 ] . clone( ) ] ,
1080
- ) ,
1081
- ) ;
1016
+ connect_block ( & nodes[ 1 ] , & create_dummy_block ( nodes[ 0 ] . best_block_hash ( ) , 42 , vec ! [ node_txn[ 0 ] . clone( ) , node_txn[ 0 ] . clone( ) ] ) ) ;
1082
1017
1083
1018
check_closed_broadcast ! ( nodes[ 1 ] , true ) ;
1084
- check_closed_event (
1085
- & nodes[ 1 ] ,
1086
- 1 ,
1087
- ClosureReason :: CommitmentTxConfirmed ,
1088
- false ,
1089
- & [ nodes[ 0 ] . node . get_our_node_id ( ) ] ,
1090
- 100000 ,
1091
- ) ;
1019
+ check_closed_event ( & nodes[ 1 ] , 1 , ClosureReason :: CommitmentTxConfirmed , false , & [ nodes[ 0 ] . node . get_our_node_id ( ) ] , 100000 ) ;
1092
1020
check_added_monitors ! ( nodes[ 1 ] , 1 ) ;
1093
1021
1094
1022
// Make sure everything is persisted as expected after close.
1095
1023
check_persisted_data ! ( CLOSED_CHANNEL_UPDATE_ID ) ;
1096
1024
1097
1025
// Make sure the expected number of stale updates is present.
1098
- let persisted_chan_data = persister_0
1099
- . read_all_channel_monitors_with_updates ( & broadcaster_0, & chanmon_cfgs[ 0 ] . fee_estimator )
1100
- . unwrap ( ) ;
1026
+ let persisted_chan_data = persister_0. read_all_channel_monitors_with_updates ( & broadcaster_0, & chanmon_cfgs[ 0 ] . fee_estimator ) . unwrap ( ) ;
1101
1027
let ( _, monitor) = & persisted_chan_data[ 0 ] ;
1102
1028
let monitor_name = MonitorName :: from ( monitor. get_funding_txo ( ) . 0 ) ;
1103
1029
// The force-closer should have 0 updates, as it wrote a full monitor and consolidated.
1104
- assert_eq ! (
1105
- persister_0
1106
- . kv_store
1107
- . list( CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE , monitor_name. as_str( ) )
1108
- . unwrap( )
1109
- . len( ) ,
1110
- 0
1111
- ) ;
1030
+ assert_eq ! ( persister_0. kv_store. list( CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE , monitor_name. as_str( ) ) . unwrap( ) . len( ) , 0 ) ;
1112
1031
// The FC counterparty may have updates. Perform a clean-up and confirm consolidation.
1113
1032
persister_1. cleanup_stale_updates ( false ) . unwrap ( ) ;
1114
- assert_eq ! (
1115
- persister_1
1116
- . kv_store
1117
- . list( CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE , monitor_name. as_str( ) )
1118
- . unwrap( )
1119
- . len( ) ,
1120
- 0
1121
- ) ;
1033
+ assert_eq ! ( persister_1. kv_store. list( CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE , monitor_name. as_str( ) ) . unwrap( ) . len( ) , 0 ) ;
1122
1034
// Make sure everything is persisted as expected after consolidation.
1123
1035
check_persisted_data ! ( CLOSED_CHANNEL_UPDATE_ID ) ;
1124
1036
}
@@ -1134,31 +1046,15 @@ mod tests {
1134
1046
let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ None , None ] ) ;
1135
1047
let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
1136
1048
let chan = create_announced_chan_between_nodes ( & nodes, 0 , 1 ) ;
1137
- nodes[ 1 ]
1138
- . node
1139
- . force_close_broadcasting_latest_txn ( & chan. 2 , & nodes[ 0 ] . node . get_our_node_id ( ) )
1140
- . unwrap ( ) ;
1141
- check_closed_event (
1142
- & nodes[ 1 ] ,
1143
- 1 ,
1144
- ClosureReason :: HolderForceClosed ,
1145
- false ,
1146
- & [ nodes[ 0 ] . node . get_our_node_id ( ) ] ,
1147
- 100000 ,
1148
- ) ;
1049
+ nodes[ 1 ] . node . force_close_broadcasting_latest_txn ( & chan. 2 , & nodes[ 0 ] . node . get_our_node_id ( ) ) . unwrap ( ) ;
1050
+ check_closed_event ( & nodes[ 1 ] , 1 , ClosureReason :: HolderForceClosed , false , & [ nodes[ 0 ] . node . get_our_node_id ( ) ] , 100000 ) ;
1149
1051
{
1150
1052
let mut added_monitors = nodes[ 1 ] . chain_monitor . added_monitors . lock ( ) . unwrap ( ) ;
1151
1053
let update_map = nodes[ 1 ] . chain_monitor . latest_monitor_update_id . lock ( ) . unwrap ( ) ;
1152
1054
let update_id = update_map. get ( & added_monitors[ 0 ] . 0 . to_channel_id ( ) ) . unwrap ( ) ;
1153
1055
let cmu_map = nodes[ 1 ] . chain_monitor . monitor_updates . lock ( ) . unwrap ( ) ;
1154
1056
let cmu = & cmu_map. get ( & added_monitors[ 0 ] . 0 . to_channel_id ( ) ) . unwrap ( ) [ 0 ] ;
1155
- let test_txo = OutPoint {
1156
- txid : Txid :: from_hex (
1157
- "8984484a580b825b9972d7adb15050b3ab624ccd731946b3eeddb92f4e7ef6be" ,
1158
- )
1159
- . unwrap ( ) ,
1160
- index : 0 ,
1161
- } ;
1057
+ let test_txo = OutPoint { txid : Txid :: from_hex ( "8984484a580b825b9972d7adb15050b3ab624ccd731946b3eeddb92f4e7ef6be" ) . unwrap ( ) , index : 0 } ;
1162
1058
1163
1059
let ro_persister = MonitorUpdatingPersister {
1164
1060
kv_store : & TestStore :: new ( true ) ,
@@ -1178,12 +1074,7 @@ mod tests {
1178
1074
panic ! ( "Returned InProgress when shouldn't have" )
1179
1075
}
1180
1076
}
1181
- match ro_persister. update_persisted_channel (
1182
- test_txo,
1183
- Some ( cmu) ,
1184
- & added_monitors[ 0 ] . 1 ,
1185
- update_id. 2 ,
1186
- ) {
1077
+ match ro_persister. update_persisted_channel ( test_txo, Some ( cmu) , & added_monitors[ 0 ] . 1 , update_id. 2 ) {
1187
1078
ChannelMonitorUpdateStatus :: UnrecoverableError => {
1188
1079
// correct result
1189
1080
}
@@ -1244,9 +1135,7 @@ mod tests {
1244
1135
1245
1136
// Check that the persisted channel data is empty before any channels are
1246
1137
// open.
1247
- let persisted_chan_data = persister_0
1248
- . read_all_channel_monitors_with_updates ( & broadcaster_0, & chanmon_cfgs[ 0 ] . fee_estimator )
1249
- . unwrap ( ) ;
1138
+ let persisted_chan_data = persister_0. read_all_channel_monitors_with_updates ( & broadcaster_0, & chanmon_cfgs[ 0 ] . fee_estimator ) . unwrap ( ) ;
1250
1139
assert_eq ! ( persisted_chan_data. len( ) , 0 ) ;
1251
1140
1252
1141
// Create some initial channel
@@ -1257,19 +1146,12 @@ mod tests {
1257
1146
send_payment ( & nodes[ 1 ] , & vec ! [ & nodes[ 0 ] ] [ ..] , 4_000_000 ) ;
1258
1147
1259
1148
// Get the monitor and make a fake stale update at update_id=1 (lowest height of an update possible)
1260
- let persisted_chan_data = persister_0
1261
- . read_all_channel_monitors_with_updates ( & broadcaster_0, & chanmon_cfgs[ 0 ] . fee_estimator )
1262
- . unwrap ( ) ;
1149
+ let persisted_chan_data = persister_0. read_all_channel_monitors_with_updates ( & broadcaster_0, & chanmon_cfgs[ 0 ] . fee_estimator ) . unwrap ( ) ;
1263
1150
let ( _, monitor) = & persisted_chan_data[ 0 ] ;
1264
1151
let monitor_name = MonitorName :: from ( monitor. get_funding_txo ( ) . 0 ) ;
1265
1152
persister_0
1266
1153
. kv_store
1267
- . write (
1268
- CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE ,
1269
- monitor_name. as_str ( ) ,
1270
- UpdateName :: from ( 1 ) . as_str ( ) ,
1271
- & [ 0u8 ; 1 ] ,
1272
- )
1154
+ . write ( CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE , monitor_name. as_str ( ) , UpdateName :: from ( 1 ) . as_str ( ) , & [ 0u8 ; 1 ] )
1273
1155
. unwrap ( ) ;
1274
1156
1275
1157
// Do the stale update cleanup
@@ -1278,41 +1160,19 @@ mod tests {
1278
1160
// Confirm the stale update is unreadable/gone
1279
1161
assert ! ( persister_0
1280
1162
. kv_store
1281
- . read(
1282
- CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE ,
1283
- monitor_name. as_str( ) ,
1284
- UpdateName :: from( 1 ) . as_str( )
1285
- )
1163
+ . read( CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE , monitor_name. as_str( ) , UpdateName :: from( 1 ) . as_str( ) )
1286
1164
. is_err( ) ) ;
1287
1165
1288
1166
// Force close.
1289
- nodes[ 0 ]
1290
- . node
1291
- . force_close_broadcasting_latest_txn (
1292
- & nodes[ 0 ] . node . list_channels ( ) [ 0 ] . channel_id ,
1293
- & nodes[ 1 ] . node . get_our_node_id ( ) ,
1294
- )
1295
- . unwrap ( ) ;
1296
- check_closed_event (
1297
- & nodes[ 0 ] ,
1298
- 1 ,
1299
- ClosureReason :: HolderForceClosed ,
1300
- false ,
1301
- & [ nodes[ 1 ] . node . get_our_node_id ( ) ] ,
1302
- 100000 ,
1303
- ) ;
1167
+ nodes[ 0 ] . node . force_close_broadcasting_latest_txn ( & nodes[ 0 ] . node . list_channels ( ) [ 0 ] . channel_id , & nodes[ 1 ] . node . get_our_node_id ( ) ) . unwrap ( ) ;
1168
+ check_closed_event ( & nodes[ 0 ] , 1 , ClosureReason :: HolderForceClosed , false , & [ nodes[ 1 ] . node . get_our_node_id ( ) ] , 100000 ) ;
1304
1169
check_closed_broadcast ! ( nodes[ 0 ] , true ) ;
1305
1170
check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
1306
1171
1307
1172
// Write an update near u64::MAX
1308
1173
persister_0
1309
1174
. kv_store
1310
- . write (
1311
- CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE ,
1312
- monitor_name. as_str ( ) ,
1313
- UpdateName :: from ( u64:: MAX - 1 ) . as_str ( ) ,
1314
- & [ 0u8 ; 1 ] ,
1315
- )
1175
+ . write ( CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE , monitor_name. as_str ( ) , UpdateName :: from ( u64:: MAX - 1 ) . as_str ( ) , & [ 0u8 ; 1 ] )
1316
1176
. unwrap ( ) ;
1317
1177
1318
1178
// Do the stale update cleanup
@@ -1321,11 +1181,7 @@ mod tests {
1321
1181
// Confirm the stale update is unreadable/gone
1322
1182
assert ! ( persister_0
1323
1183
. kv_store
1324
- . read(
1325
- CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE ,
1326
- monitor_name. as_str( ) ,
1327
- UpdateName :: from( u64 :: MAX - 1 ) . as_str( )
1328
- )
1184
+ . read( CHANNEL_MONITOR_UPDATE_PERSISTENCE_NAMESPACE , monitor_name. as_str( ) , UpdateName :: from( u64 :: MAX - 1 ) . as_str( ) )
1329
1185
. is_err( ) ) ;
1330
1186
}
1331
1187
}
0 commit comments