| 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 | } |