multi: add new flags and tests

pull/51/head
Oliver Gugger 2 years ago
parent 1e13ec00eb
commit 351aa9819a
No known key found for this signature in database
GPG Key ID: 8E4256593F177720

@ -11,8 +11,10 @@ import (
)
type dumpChannelsCommand struct {
ChannelDB string
Closed bool
ChannelDB string
Closed bool
Pending bool
WaitingClose bool
cmd *cobra.Command
}
@ -37,6 +39,14 @@ given lnd channel.db gile in a human readable format.`,
&cc.Closed, "closed", false, "dump closed channels instead of "+
"open",
)
cc.cmd.Flags().BoolVar(
&cc.Pending, "pending", false, "dump pending channels instead "+
"of open",
)
cc.cmd.Flags().BoolVar(
&cc.WaitingClose, "waiting_close", false, "dump waiting close "+
"channels instead of open",
)
return cc.cmd
}
@ -52,9 +62,23 @@ func (c *dumpChannelsCommand) Execute(_ *cobra.Command, _ []string) error {
}
defer func() { _ = db.Close() }()
if (c.Closed && c.Pending) || (c.Closed && c.WaitingClose) ||
(c.Pending && c.WaitingClose) ||
(c.Closed && c.Pending && c.WaitingClose) {
return fmt.Errorf("can only specify one flag at a time")
}
if c.Closed {
return dumpClosedChannelInfo(db.ChannelStateDB())
}
if c.Pending {
return dumpPendingChannelInfo(db.ChannelStateDB())
}
if c.WaitingClose {
return dumpWaitingCloseChannelInfo(db.ChannelStateDB())
}
return dumpOpenChannelInfo(db.ChannelStateDB())
}
@ -95,3 +119,41 @@ func dumpClosedChannelInfo(chanDb *channeldb.ChannelStateDB) error {
return nil
}
func dumpPendingChannelInfo(chanDb *channeldb.ChannelStateDB) error {
channels, err := chanDb.FetchPendingChannels()
if err != nil {
return err
}
dumpChannels, err := dump.OpenChannelDump(channels, chainParams)
if err != nil {
return fmt.Errorf("error converting to dump format: %w", err)
}
spew.Dump(dumpChannels)
// For the tests, also log as trace level which is disabled by default.
log.Tracef(spew.Sdump(dumpChannels))
return nil
}
func dumpWaitingCloseChannelInfo(chanDb *channeldb.ChannelStateDB) error {
channels, err := chanDb.FetchWaitingCloseChannels()
if err != nil {
return err
}
dumpChannels, err := dump.OpenChannelDump(channels, chainParams)
if err != nil {
return fmt.Errorf("error converting to dump format: %w", err)
}
spew.Dump(dumpChannels)
// For the tests, also log as trace level which is disabled by default.
log.Tracef(spew.Sdump(dumpChannels))
return nil
}

@ -0,0 +1,31 @@
package main
import (
"encoding/hex"
"testing"
"github.com/btcsuite/btcd/btcec/v2"
"github.com/btcsuite/btcd/chaincfg"
"github.com/stretchr/testify/require"
)
var (
key1Bytes, _ = hex.DecodeString(
"0201943d78d61c8ad50ba57164830f536c156d8d89d979448bef3e67f564" +
"ea0ab6",
)
key1, _ = btcec.ParsePubKey(key1Bytes)
key2Bytes, _ = hex.DecodeString(
"038b88de18064024e9da4dfc9c804283b3077a265dcd73ad3615b50badcb" +
"debd5b",
)
key2, _ = btcec.ParsePubKey(key2Bytes)
addr = "bc1qp5jnhnavt32fjwhnf5ttpvvym7e0syp79q5l9skz545q62d8u2uq05" +
"ul63"
)
func TestMatchScript(t *testing.T) {
ok, _, err := matchScript(addr, key1, key2, &chaincfg.MainNetParams)
require.NoError(t, err)
require.True(t, ok)
}
Loading…
Cancel
Save