mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 01:43:16 +01:00
itest: add tests for new backup responses
This commit is contained in:
parent
45e13cead1
commit
26216f749a
@ -396,12 +396,22 @@ func testChannelBackupRestoreBasic(ht *lntest.HarnessTest) {
|
|||||||
req := &lnrpc.RestoreChanBackupRequest{
|
req := &lnrpc.RestoreChanBackupRequest{
|
||||||
Backup: backup,
|
Backup: backup,
|
||||||
}
|
}
|
||||||
newNode.RPC.RestoreChanBackups(req)
|
res := newNode.RPC.RestoreChanBackups(
|
||||||
|
req,
|
||||||
|
)
|
||||||
|
require.EqualValues(
|
||||||
|
st, 1, res.NumRestored,
|
||||||
|
)
|
||||||
|
|
||||||
req = &lnrpc.RestoreChanBackupRequest{
|
req = &lnrpc.RestoreChanBackupRequest{
|
||||||
Backup: backup,
|
Backup: backup,
|
||||||
}
|
}
|
||||||
newNode.RPC.RestoreChanBackups(req)
|
res = newNode.RPC.RestoreChanBackups(
|
||||||
|
req,
|
||||||
|
)
|
||||||
|
require.EqualValues(
|
||||||
|
st, 0, res.NumRestored,
|
||||||
|
)
|
||||||
|
|
||||||
return newNode
|
return newNode
|
||||||
}
|
}
|
||||||
@ -916,9 +926,27 @@ func testChannelBackupUpdates(ht *lntest.HarnessTest) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
containsChan := func(b *lnrpc.VerifyChanBackupResponse,
|
||||||
|
chanPoint *lnrpc.ChannelPoint) bool {
|
||||||
|
|
||||||
|
hash, err := lnrpc.GetChanPointFundingTxid(chanPoint)
|
||||||
|
require.NoError(ht, err)
|
||||||
|
|
||||||
|
chanPointStr := fmt.Sprintf("%s:%d", hash.String(),
|
||||||
|
chanPoint.OutputIndex)
|
||||||
|
|
||||||
|
for idx := range b.ChanPoints {
|
||||||
|
if b.ChanPoints[idx] == chanPointStr {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// assertBackupFileState is a helper function that we'll use to compare
|
// assertBackupFileState is a helper function that we'll use to compare
|
||||||
// the on disk back up file to our currentBackup pointer above.
|
// the on disk back up file to our currentBackup pointer above.
|
||||||
assertBackupFileState := func() {
|
assertBackupFileState := func(expectAllChannels bool) {
|
||||||
err := wait.NoError(func() error {
|
err := wait.NoError(func() error {
|
||||||
packedBackup, err := os.ReadFile(backupFilePath)
|
packedBackup, err := os.ReadFile(backupFilePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -946,7 +974,20 @@ func testChannelBackupUpdates(ht *lntest.HarnessTest) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
carol.RPC.VerifyChanBackup(snapshot)
|
res := carol.RPC.VerifyChanBackup(snapshot)
|
||||||
|
|
||||||
|
if !expectAllChannels {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
for idx := range chanPoints {
|
||||||
|
if containsChan(res, chanPoints[idx]) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Errorf("backup %v doesn't "+
|
||||||
|
"contain chan_point: %v",
|
||||||
|
res.ChanPoints, chanPoints[idx])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -961,7 +1002,7 @@ func testChannelBackupUpdates(ht *lntest.HarnessTest) {
|
|||||||
|
|
||||||
// The on disk file should also exactly match the latest backup that we
|
// The on disk file should also exactly match the latest backup that we
|
||||||
// have.
|
// have.
|
||||||
assertBackupFileState()
|
assertBackupFileState(true)
|
||||||
|
|
||||||
// Next, we'll close the channels one by one. After each channel
|
// Next, we'll close the channels one by one. After each channel
|
||||||
// closure, we should get a notification, and the on-disk state should
|
// closure, we should get a notification, and the on-disk state should
|
||||||
@ -988,14 +1029,14 @@ func testChannelBackupUpdates(ht *lntest.HarnessTest) {
|
|||||||
// Now that the channel's been fully resolved, we
|
// Now that the channel's been fully resolved, we
|
||||||
// expect another notification.
|
// expect another notification.
|
||||||
assertBackupNtfns(1)
|
assertBackupNtfns(1)
|
||||||
assertBackupFileState()
|
assertBackupFileState(false)
|
||||||
} else {
|
} else {
|
||||||
ht.CloseChannel(alice, chanPoint)
|
ht.CloseChannel(alice, chanPoint)
|
||||||
// We should get a single notification after closing,
|
// We should get a single notification after closing,
|
||||||
// and the on-disk state should match this latest
|
// and the on-disk state should match this latest
|
||||||
// notifications.
|
// notifications.
|
||||||
assertBackupNtfns(1)
|
assertBackupNtfns(1)
|
||||||
assertBackupFileState()
|
assertBackupFileState(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1414,7 +1455,8 @@ func chanRestoreViaRPC(ht *lntest.HarnessTest, password []byte,
|
|||||||
nil,
|
nil,
|
||||||
)
|
)
|
||||||
req := &lnrpc.RestoreChanBackupRequest{Backup: backup}
|
req := &lnrpc.RestoreChanBackupRequest{Backup: backup}
|
||||||
newNode.RPC.RestoreChanBackups(req)
|
res := newNode.RPC.RestoreChanBackups(req)
|
||||||
|
require.Greater(ht, res.NumRestored, uint32(0))
|
||||||
|
|
||||||
return newNode
|
return newNode
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user