master
go 80 lines 2.33 KB
Raw
1 package cli
2
3 import (
4 "fmt"
5 "strings"
6 "testing"
7
8 "github.com/ipfs/kubo/test/cli/harness"
9 "github.com/stretchr/testify/assert"
10 )
11
12 func TestPing(t *testing.T) {
13 t.Parallel()
14
15 t.Run("other", func(t *testing.T) {
16 t.Parallel()
17 nodes := harness.NewT(t).NewNodes(2).Init().StartDaemons().Connect()
18 defer nodes.StopDaemons()
19 node1 := nodes[0]
20 node2 := nodes[1]
21
22 node1.IPFS("ping", "-n", "2", "--", node2.PeerID().String())
23 node2.IPFS("ping", "-n", "2", "--", node1.PeerID().String())
24 })
25
26 t.Run("ping unreachable peer", func(t *testing.T) {
27 t.Parallel()
28 nodes := harness.NewT(t).NewNodes(2).Init().StartDaemons().Connect()
29 defer nodes.StopDaemons()
30 node1 := nodes[0]
31
32 badPeer := "QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJx"
33 res := node1.RunIPFS("ping", "-n", "2", "--", badPeer)
34 assert.Contains(t, res.Stdout.String(), fmt.Sprintf("Looking up peer %s", badPeer))
35 msg := res.Stderr.String()
36 assert.Truef(t, strings.HasPrefix(msg, "Error:"), "should fail got this instead: %q", msg)
37 })
38
39 t.Run("self", func(t *testing.T) {
40 t.Parallel()
41 nodes := harness.NewT(t).NewNodes(2).Init().StartDaemons()
42 defer nodes.StopDaemons()
43 node1 := nodes[0]
44 node2 := nodes[1]
45
46 res := node1.RunIPFS("ping", "-n", "2", "--", node1.PeerID().String())
47 assert.Equal(t, 1, res.Cmd.ProcessState.ExitCode())
48 assert.Contains(t, res.Stderr.String(), "can't ping self")
49
50 res = node2.RunIPFS("ping", "-n", "2", "--", node2.PeerID().String())
51 assert.Equal(t, 1, res.Cmd.ProcessState.ExitCode())
52 assert.Contains(t, res.Stderr.String(), "can't ping self")
53 })
54
55 t.Run("0", func(t *testing.T) {
56 t.Parallel()
57 nodes := harness.NewT(t).NewNodes(2).Init().StartDaemons().Connect()
58 defer nodes.StopDaemons()
59 node1 := nodes[0]
60 node2 := nodes[1]
61
62 res := node1.RunIPFS("ping", "-n", "0", "--", node2.PeerID().String())
63 assert.Equal(t, 1, res.Cmd.ProcessState.ExitCode())
64 assert.Contains(t, res.Stderr.String(), "ping count must be greater than 0")
65 })
66
67 t.Run("offline", func(t *testing.T) {
68 t.Parallel()
69 nodes := harness.NewT(t).NewNodes(2).Init().StartDaemons().Connect()
70 defer nodes.StopDaemons()
71 node1 := nodes[0]
72 node2 := nodes[1]
73
74 node2.StopDaemon()
75
76 res := node1.RunIPFS("ping", "-n", "2", "--", node2.PeerID().String())
77 assert.Equal(t, 1, res.Cmd.ProcessState.ExitCode())
78 assert.Contains(t, res.Stderr.String(), "ping failed")
79 })
80 }