|
1 | 1 | // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
|
2 | 2 | // See the file LICENSE for licensing terms.
|
3 | 3 |
|
4 |
| -package connect_test |
| 4 | +package api |
5 | 5 |
|
6 | 6 | import (
|
7 | 7 | "net/http"
|
8 |
| - "strings" |
9 | 8 | "time"
|
10 | 9 |
|
11 | 10 | "connectrpc.com/connect"
|
12 | 11 | "github.com/onsi/ginkgo/v2"
|
13 | 12 | "github.com/stretchr/testify/require"
|
14 | 13 |
|
15 |
| - "github.com/ava-labs/avalanchego/ids" |
| 14 | + "github.com/ava-labs/avalanchego/api/connectclient" |
16 | 15 | "github.com/ava-labs/avalanchego/tests/fixture/e2e"
|
17 | 16 | "github.com/ava-labs/avalanchego/tests/fixture/tmpnet"
|
18 | 17 |
|
19 | 18 | infopb "github.com/ava-labs/avalanchego/connectproto/pb/info"
|
20 | 19 | connectinfopb "github.com/ava-labs/avalanchego/connectproto/pb/info/infoconnect"
|
| 20 | + "github.com/ava-labs/avalanchego/ids" |
| 21 | + "github.com/ava-labs/avalanchego/utils/constants" |
21 | 22 | )
|
22 | 23 |
|
23 |
| -var _ = ginkgo.Describe("[Connect Info API]", func() { |
| 24 | +var _ = ginkgo.Describe("[Info Service]", func() { |
24 | 25 | var (
|
25 | 26 | tc = e2e.NewTestContext()
|
26 | 27 | env = e2e.GetEnv(tc)
|
27 | 28 | require = require.New(tc)
|
28 | 29 | client connectinfopb.InfoServiceClient
|
29 | 30 | ctx = tc.DefaultContext()
|
| 31 | + nodeID ids.NodeID |
30 | 32 | )
|
31 | 33 |
|
32 | 34 | ginkgo.BeforeAll(func() {
|
33 | 35 | rootDir := env.RootNetworkDir
|
34 |
| - network := tmpnet.NewDefaultNetwork("connect-info-e2e") |
| 36 | + network := tmpnet.NewDefaultNetwork("info-service-test") |
35 | 37 | require.NoError(tmpnet.BootstrapNewNetwork(ctx, tc.Log(), network, rootDir))
|
36 | 38 |
|
37 |
| - node, err := network.GetNode(ids.BuildTestNodeID([]byte("node-0"))) |
| 39 | + var err error |
| 40 | + nodeID, err = ids.NodeIDFromString(network.GetAvailableNodeIDs()[0]) |
38 | 41 | require.NoError(err)
|
| 42 | + node, err := network.GetNode(nodeID) |
| 43 | + require.NoError(err) |
| 44 | + |
39 | 45 | e2e.WaitForHealthy(tc, node)
|
| 46 | + |
40 | 47 | uri := node.GetAccessibleURI()
|
41 |
| - client = connectinfopb.NewInfoServiceClient(http.DefaultClient, uri) |
| 48 | + client = connectinfopb.NewInfoServiceClient( |
| 49 | + http.DefaultClient, |
| 50 | + uri, |
| 51 | + connect.WithInterceptors( |
| 52 | + connectclient.SetRouteHeaderInterceptor{Route: "info"}, |
| 53 | + ), |
| 54 | + ) |
42 | 55 | })
|
43 | 56 |
|
44 |
| - ginkgo.It("NodeVersion returns version info", func() { |
| 57 | + ginkgo.It("serves GetNodeVersion", func() { |
45 | 58 | req := connect.NewRequest(&infopb.GetNodeVersionRequest{})
|
46 |
| - req.Header().Set("Avalanche-API-Route", "info") |
47 | 59 | resp, err := client.GetNodeVersion(ctx, req)
|
48 | 60 | require.NoError(err)
|
49 | 61 | require.NotEmpty(resp.Msg.Version)
|
50 | 62 | })
|
51 | 63 |
|
52 |
| - ginkgo.It("NodeID returns a node ID", func() { |
| 64 | + ginkgo.It("serves GetNodeID", func() { |
53 | 65 | req := connect.NewRequest(&infopb.GetNodeIDRequest{})
|
54 |
| - req.Header().Set("Avalanche-API-Route", "info") |
55 | 66 | resp, err := client.GetNodeID(ctx, req)
|
56 | 67 | require.NoError(err)
|
57 |
| - require.True(strings.HasPrefix(resp.Msg.NodeId, "NodeID-")) |
| 68 | + |
| 69 | + gotNodeID, err := ids.NodeIDFromString(resp.Msg.NodeId) |
| 70 | + require.NoError(err) |
| 71 | + require.Equal(nodeID, gotNodeID) |
58 | 72 | })
|
59 | 73 |
|
60 |
| - ginkgo.It("NetworkID returns a network ID", func() { |
| 74 | + ginkgo.It("serves GetNetworkID", func() { |
61 | 75 | req := connect.NewRequest(&infopb.GetNetworkIDRequest{})
|
62 |
| - req.Header().Set("Avalanche-API-Route", "info") |
63 | 76 | resp, err := client.GetNetworkID(ctx, req)
|
64 | 77 | require.NoError(err)
|
65 |
| - require.Positive(resp.Msg.NetworkId) |
| 78 | + require.Equal(constants.LocalID, resp.Msg.NetworkId) |
66 | 79 | })
|
67 | 80 |
|
68 |
| - ginkgo.It("NetworkName returns a network name", func() { |
| 81 | + ginkgo.It("serves GetNetworkName", func() { |
69 | 82 | req := connect.NewRequest(&infopb.GetNetworkNameRequest{})
|
70 |
| - req.Header().Set("Avalanche-API-Route", "info") |
71 | 83 | resp, err := client.GetNetworkName(ctx, req)
|
72 | 84 | require.NoError(err)
|
73 |
| - require.NotEmpty(resp.Msg.NetworkName) |
| 85 | + require.Equal("local", resp.Msg.NetworkName) |
74 | 86 | })
|
75 | 87 |
|
76 |
| - ginkgo.It("NodeIP returns an IP", func() { |
| 88 | + ginkgo.It("serves GetNodeIP", func() { |
77 | 89 | req := connect.NewRequest(&infopb.GetNodeIPRequest{})
|
78 |
| - req.Header().Set("Avalanche-API-Route", "info") |
79 | 90 | resp, err := client.GetNodeIP(ctx, req)
|
80 | 91 | require.NoError(err)
|
81 |
| - require.NotEmpty(resp.Msg.Ip) |
| 92 | + require.Equal("127.0.0.1", resp.Msg.Ip) |
82 | 93 | })
|
83 | 94 |
|
84 |
| - ginkgo.It("BlockchainID returns a blockchain ID for X", func() { |
| 95 | + ginkgo.It("serves GetBlockchainID", func() { |
85 | 96 | req := connect.NewRequest(&infopb.GetChainIDRequest{Alias: "X"})
|
86 |
| - req.Header().Set("Avalanche-API-Route", "info") |
87 | 97 | resp, err := client.GetChainID(ctx, req)
|
88 | 98 | require.NoError(err)
|
| 99 | + // TODO |
89 | 100 | require.NotEmpty(resp.Msg.ChainId)
|
90 | 101 | })
|
91 | 102 |
|
92 |
| - ginkgo.It("Peers returns a list", func() { |
| 103 | + ginkgo.It("serves GetPeers", func() { |
93 | 104 | req := connect.NewRequest(&infopb.GetPeersRequest{})
|
94 |
| - req.Header().Set("Avalanche-API-Route", "info") |
95 | 105 | resp, err := client.GetPeers(ctx, req)
|
96 | 106 | require.NoError(err)
|
| 107 | + // TODO |
97 | 108 | require.NotEmpty(resp.Msg.Peers)
|
98 | 109 | })
|
99 | 110 |
|
100 |
| - ginkgo.It("IsBootstrapped returns true for X", func() { |
| 111 | + ginkgo.It("serves GetBootstrapped", func() { |
101 | 112 | tc.Eventually(func() bool {
|
102 | 113 | req := connect.NewRequest(&infopb.GetBootstrappedRequest{Chain: "X"})
|
103 |
| - req.Header().Set("Avalanche-API-Route", "info") |
104 | 114 | resp, err := client.GetBootstrapped(ctx, req)
|
105 | 115 | return err == nil && resp.Msg.Bootstrapped
|
106 | 116 | }, 60*time.Second, 2*time.Second, "node should eventually bootstrap")
|
107 | 117 | })
|
108 | 118 |
|
109 |
| - ginkgo.It("Upgrades returns a response", func() { |
| 119 | + ginkgo.It("serves GetUpgrades", func() { |
110 | 120 | req := connect.NewRequest(&infopb.GetUpgradesRequest{})
|
111 |
| - req.Header().Set("Avalanche-API-Route", "info") |
112 | 121 | resp, err := client.GetUpgrades(ctx, req)
|
113 | 122 | require.NoError(err)
|
114 | 123 | require.NotNil(resp.Msg)
|
115 | 124 | })
|
116 | 125 |
|
117 |
| - ginkgo.It("Uptime returns a response", func() { |
| 126 | + ginkgo.It("serves GetUptime", func() { |
118 | 127 | req := connect.NewRequest(&infopb.GetUptimeRequest{})
|
119 |
| - req.Header().Set("Avalanche-API-Route", "info") |
120 | 128 | resp, err := client.GetUptime(ctx, req)
|
121 | 129 | require.NoError(err)
|
122 | 130 | require.NotNil(resp.Msg)
|
123 | 131 | })
|
124 | 132 |
|
125 | 133 | // TODO acps test
|
126 | 134 |
|
127 |
| - ginkgo.It("VMs returns at least avm", func() { |
| 135 | + ginkgo.It("serves GetVMs", func() { |
128 | 136 | req := connect.NewRequest(&infopb.GetVMsRequest{})
|
129 |
| - req.Header().Set("Avalanche-API-Route", "info") |
130 | 137 | resp, err := client.GetVMs(ctx, req)
|
131 | 138 | require.NoError(err)
|
132 | 139 | found := false
|
|
0 commit comments