diff --git a/core/commands/pubsub.go b/core/commands/pubsub.go index 7d338c292c2..4cbecd91c5e 100644 --- a/core/commands/pubsub.go +++ b/core/commands/pubsub.go @@ -274,9 +274,11 @@ To use, the daemon must be run with '--enable-pubsub-experiment'. var PubsubPeersCmd = &cmds.Command{ Helptext: cmds.HelpText{ - Tagline: "List all peers we are currently pubsubbing with.", + Tagline: "List peers we are currently pubsubbing with.", 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 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'. `, }, + Arguments: []cmds.Argument{ + cmds.StringArg("topic", false, false, "topic to list connected peers of"), + }, Run: func(req cmds.Request, res cmds.Response) { n, err := req.InvocContext().GetNode() if err != nil { @@ -302,8 +307,13 @@ To use, the daemon must be run with '--enable-pubsub-experiment'. return } + var topic string + if len(req.Arguments()) == 1 { + topic = req.Arguments()[0] + } + var out []string - for _, p := range n.Floodsub.ListPeers("") { + for _, p := range n.Floodsub.ListPeers(topic) { out = append(out, p.Pretty()) } res.SetOutput(&stringList{out}) diff --git a/test/sharness/t0180-pubsub.sh b/test/sharness/t0180-pubsub.sh index 1f5a619f984..503815e9fb3 100755 --- a/test/sharness/t0180-pubsub.sh +++ b/test/sharness/t0180-pubsub.sh @@ -32,16 +32,27 @@ test_expect_success 'pubsub' ' echo > wait fi ) & +' - # wait until ipfs pubsub sub is ready to do work - sleep 1 && +test_expect_success "wait until ipfs pubsub sub is ready to do work" ' + sleep 1 +' - # publish something - ipfsi 1 pubsub pub testTopic "testOK" &> pubErr && +test_expect_success "can see peer subscribed to testTopic" ' + ipfsi 1 pubsub peers testTopic > peers_out +' - # wait until `echo > wait` executed - cat wait && +test_expect_success "output looks good" ' + 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 expected actual '