Skip to content

Commit 351aa98

Browse files
committed
multi: add new flags and tests
1 parent 1e13ec0 commit 351aa98

File tree

2 files changed

+95
-2
lines changed

2 files changed

+95
-2
lines changed

cmd/chantools/dumpchannels.go

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ import (
1111
)
1212

1313
type dumpChannelsCommand struct {
14-
ChannelDB string
15-
Closed bool
14+
ChannelDB string
15+
Closed bool
16+
Pending bool
17+
WaitingClose bool
1618

1719
cmd *cobra.Command
1820
}
@@ -37,6 +39,14 @@ given lnd channel.db gile in a human readable format.`,
3739
&cc.Closed, "closed", false, "dump closed channels instead of "+
3840
"open",
3941
)
42+
cc.cmd.Flags().BoolVar(
43+
&cc.Pending, "pending", false, "dump pending channels instead "+
44+
"of open",
45+
)
46+
cc.cmd.Flags().BoolVar(
47+
&cc.WaitingClose, "waiting_close", false, "dump waiting close "+
48+
"channels instead of open",
49+
)
4050

4151
return cc.cmd
4252
}
@@ -52,9 +62,23 @@ func (c *dumpChannelsCommand) Execute(_ *cobra.Command, _ []string) error {
5262
}
5363
defer func() { _ = db.Close() }()
5464

65+
if (c.Closed && c.Pending) || (c.Closed && c.WaitingClose) ||
66+
(c.Pending && c.WaitingClose) ||
67+
(c.Closed && c.Pending && c.WaitingClose) {
68+
69+
return fmt.Errorf("can only specify one flag at a time")
70+
}
71+
5572
if c.Closed {
5673
return dumpClosedChannelInfo(db.ChannelStateDB())
5774
}
75+
if c.Pending {
76+
return dumpPendingChannelInfo(db.ChannelStateDB())
77+
}
78+
if c.WaitingClose {
79+
return dumpWaitingCloseChannelInfo(db.ChannelStateDB())
80+
}
81+
5882
return dumpOpenChannelInfo(db.ChannelStateDB())
5983
}
6084

@@ -95,3 +119,41 @@ func dumpClosedChannelInfo(chanDb *channeldb.ChannelStateDB) error {
95119

96120
return nil
97121
}
122+
123+
func dumpPendingChannelInfo(chanDb *channeldb.ChannelStateDB) error {
124+
channels, err := chanDb.FetchPendingChannels()
125+
if err != nil {
126+
return err
127+
}
128+
129+
dumpChannels, err := dump.OpenChannelDump(channels, chainParams)
130+
if err != nil {
131+
return fmt.Errorf("error converting to dump format: %w", err)
132+
}
133+
134+
spew.Dump(dumpChannels)
135+
136+
// For the tests, also log as trace level which is disabled by default.
137+
log.Tracef(spew.Sdump(dumpChannels))
138+
139+
return nil
140+
}
141+
142+
func dumpWaitingCloseChannelInfo(chanDb *channeldb.ChannelStateDB) error {
143+
channels, err := chanDb.FetchWaitingCloseChannels()
144+
if err != nil {
145+
return err
146+
}
147+
148+
dumpChannels, err := dump.OpenChannelDump(channels, chainParams)
149+
if err != nil {
150+
return fmt.Errorf("error converting to dump format: %w", err)
151+
}
152+
153+
spew.Dump(dumpChannels)
154+
155+
// For the tests, also log as trace level which is disabled by default.
156+
log.Tracef(spew.Sdump(dumpChannels))
157+
158+
return nil
159+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package main
2+
3+
import (
4+
"encoding/hex"
5+
"testing"
6+
7+
"github.com/btcsuite/btcd/btcec/v2"
8+
"github.com/btcsuite/btcd/chaincfg"
9+
"github.com/stretchr/testify/require"
10+
)
11+
12+
var (
13+
key1Bytes, _ = hex.DecodeString(
14+
"0201943d78d61c8ad50ba57164830f536c156d8d89d979448bef3e67f564" +
15+
"ea0ab6",
16+
)
17+
key1, _ = btcec.ParsePubKey(key1Bytes)
18+
key2Bytes, _ = hex.DecodeString(
19+
"038b88de18064024e9da4dfc9c804283b3077a265dcd73ad3615b50badcb" +
20+
"debd5b",
21+
)
22+
key2, _ = btcec.ParsePubKey(key2Bytes)
23+
addr = "bc1qp5jnhnavt32fjwhnf5ttpvvym7e0syp79q5l9skz545q62d8u2uq05" +
24+
"ul63"
25+
)
26+
27+
func TestMatchScript(t *testing.T) {
28+
ok, _, err := matchScript(addr, key1, key2, &chaincfg.MainNetParams)
29+
require.NoError(t, err)
30+
require.True(t, ok)
31+
}

0 commit comments

Comments
 (0)