| 1 | package corehttp |
| 2 | |
| 3 | import ( |
| 4 | "context" |
| 5 | "testing" |
| 6 | "time" |
| 7 | |
| 8 | "github.com/ipfs/kubo/core" |
| 9 | |
| 10 | inet "github.com/libp2p/go-libp2p/core/network" |
| 11 | bhost "github.com/libp2p/go-libp2p/p2p/host/basic" |
| 12 | swarmt "github.com/libp2p/go-libp2p/p2p/net/swarm/testing" |
| 13 | ) |
| 14 | |
| 15 | // This test is based on go-libp2p/p2p/net/swarm.TestConnectednessCorrect |
| 16 | // It builds 4 nodes and connects them, one being the sole center. |
| 17 | // Then it checks that the center reports the correct number of peers. |
| 18 | func TestPeersTotal(t *testing.T) { |
| 19 | ctx := context.Background() |
| 20 | |
| 21 | hosts := make([]*bhost.BasicHost, 4) |
| 22 | for i := range 4 { |
| 23 | var err error |
| 24 | hosts[i], err = bhost.NewHost(swarmt.GenSwarm(t), nil) |
| 25 | if err != nil { |
| 26 | t.Fatal(err) |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | dial := func(a, b inet.Network) { |
| 31 | swarmt.DivulgeAddresses(b, a) |
| 32 | if _, err := a.DialPeer(ctx, b.LocalPeer()); err != nil { |
| 33 | t.Fatalf("Failed to dial: %s", err) |
| 34 | } |
| 35 | } |
| 36 | |
| 37 | dial(hosts[0].Network(), hosts[1].Network()) |
| 38 | dial(hosts[0].Network(), hosts[2].Network()) |
| 39 | dial(hosts[0].Network(), hosts[3].Network()) |
| 40 | |
| 41 | // there's something wrong with dial, i think. it's not finishing |
| 42 | // completely. there must be some async stuff. |
| 43 | <-time.After(100 * time.Millisecond) |
| 44 | |
| 45 | node := &core.IpfsNode{PeerHost: hosts[0]} |
| 46 | collector := IpfsNodeCollector{Node: node} |
| 47 | peersTransport := collector.PeersTotalValues() |
| 48 | if len(peersTransport) > 2 { |
| 49 | t.Fatalf("expected at most 2 peers transport (tcp and upd/quic), got %d, transport map %v", |
| 50 | len(peersTransport), peersTransport) |
| 51 | } |
| 52 | totalPeers := peersTransport["/ip4/tcp"] + peersTransport["/ip4/udp/quic-v1"] |
| 53 | if totalPeers != 3 { |
| 54 | t.Fatalf("expected 3 peers in either tcp or upd/quic transport, got %f", totalPeers) |
| 55 | } |
| 56 | } |