提交 e893fb90 作者: Jeromy Johnson 提交者: GitHub

Merge pull request #3484 from ipfs/fix/pubsub-peers-cmd

cmd/pubsub: fix peers command topic filtering
...@@ -274,9 +274,11 @@ To use, the daemon must be run with '--enable-pubsub-experiment'. ...@@ -274,9 +274,11 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
var PubsubPeersCmd = &cmds.Command{ var PubsubPeersCmd = &cmds.Command{
Helptext: cmds.HelpText{ Helptext: cmds.HelpText{
Tagline: "List all peers we are currently pubsubbing with.", Tagline: "List peers we are currently pubsubbing with.",
ShortDescription: ` ShortDescription: `
ipfs pubsub peers lists out the pubsub peers you are currently connected to. ipfs pubsub peers with no arguments lists out the pubsub peers you are
currently connected to. If given a topic, it will list connected
peers who are subscribed to the named topic.
This is an experimental feature. It is not intended in its current state This is an experimental feature. It is not intended in its current state
to be used in a production environment. to be used in a production environment.
...@@ -284,6 +286,9 @@ to be used in a production environment. ...@@ -284,6 +286,9 @@ to be used in a production environment.
To use, the daemon must be run with '--enable-pubsub-experiment'. To use, the daemon must be run with '--enable-pubsub-experiment'.
`, `,
}, },
Arguments: []cmds.Argument{
cmds.StringArg("topic", false, false, "topic to list connected peers of"),
},
Run: func(req cmds.Request, res cmds.Response) { Run: func(req cmds.Request, res cmds.Response) {
n, err := req.InvocContext().GetNode() n, err := req.InvocContext().GetNode()
if err != nil { if err != nil {
...@@ -302,8 +307,13 @@ To use, the daemon must be run with '--enable-pubsub-experiment'. ...@@ -302,8 +307,13 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
return return
} }
var topic string
if len(req.Arguments()) == 1 {
topic = req.Arguments()[0]
}
var out []string var out []string
for _, p := range n.Floodsub.ListPeers("") { for _, p := range n.Floodsub.ListPeers(topic) {
out = append(out, p.Pretty()) out = append(out, p.Pretty())
} }
res.SetOutput(&stringList{out}) res.SetOutput(&stringList{out})
......
...@@ -32,16 +32,27 @@ test_expect_success 'pubsub' ' ...@@ -32,16 +32,27 @@ test_expect_success 'pubsub' '
echo > wait echo > wait
fi fi
) & ) &
'
# wait until ipfs pubsub sub is ready to do work test_expect_success "wait until ipfs pubsub sub is ready to do work" '
sleep 1 && sleep 1
'
# publish something test_expect_success "can see peer subscribed to testTopic" '
ipfsi 1 pubsub pub testTopic "testOK" &> pubErr && ipfsi 1 pubsub peers testTopic > peers_out
'
# wait until `echo > wait` executed test_expect_success "output looks good" '
cat wait && echo $PEERID_0 > peers_exp &&
test_cmp peers_exp peers_out
'
test_expect_success "publish something" '
ipfsi 1 pubsub pub testTopic "testOK" &> pubErr
'
test_expect_success "wait until echo > wait executed" '
cat wait &&
test_cmp pubErr empty && test_cmp pubErr empty &&
test_cmp expected actual test_cmp expected actual
' '
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论