Skip to content

Commit

Permalink
test: add streaming delegated routing test (#9874)
Browse files Browse the repository at this point in the history
  • Loading branch information
hacdias authored May 16, 2023
1 parent 13c3796 commit 65b8d53
Showing 1 changed file with 41 additions and 9 deletions.
50 changes: 41 additions & 9 deletions test/cli/delegated_routing_http_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,20 @@ func TestHTTPDelegatedRouting(t *testing.T) {
t.Parallel()
node := harness.NewT(t).NewNode().Init().StartDaemon()

fakeServer := func(resp string) *httptest.Server {
fakeServer := func(contentType string, resp ...string) *httptest.Server {
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
_, err := w.Write([]byte(resp))
if err != nil {
panic(err)
w.Header().Set("Content-Type", contentType)
for _, r := range resp {
_, err := w.Write([]byte(r))
if err != nil {
panic(err)
}
}
}))
}

findProvsCID := "baeabep4vu3ceru7nerjjbk37sxb7wmftteve4hcosmyolsbsiubw2vr6pqzj6mw7kv6tbn6nqkkldnklbjgm5tzbi4hkpkled4xlcr7xz4bq"
prov := "12D3KooWARYacCc6eoCqvsS9RW9MA2vo51CV75deoiqssx3YgyYJ"
provs := []string{"12D3KooWAobjw92XDcnQ1rRmRJDA3zAQpdPYUpZKrJxH6yccSpje", "12D3KooWARYacCc6eoCqvsS9RW9MA2vo51CV75deoiqssx3YgyYJ"}

t.Run("default routing config has no routers defined", func(t *testing.T) {
assert.Nil(t, node.ReadConfig().Routing.Routers)
Expand Down Expand Up @@ -85,11 +87,11 @@ func TestHTTPDelegatedRouting(t *testing.T) {
})

t.Run("adding HTTP delegated routing endpoint to Routing.Routers config works", func(t *testing.T) {
server := fakeServer(ToJSONStr(JSONObj{
server := fakeServer("application/json", ToJSONStr(JSONObj{
"Providers": []JSONObj{{
"Protocol": "transport-bitswap",
"Schema": "bitswap",
"ID": prov,
"ID": provs[0],
"Addrs": []string{"/ip4/0.0.0.0/tcp/4001", "/ip4/0.0.0.0/tcp/4002"},
}},
}))
Expand All @@ -114,9 +116,39 @@ func TestHTTPDelegatedRouting(t *testing.T) {
assert.Equal(t, res.Stdout.Trimmed(), server.URL)

node.StartDaemon()
res = node.IPFS("routing", "findprovs", findProvsCID)
assert.Equal(t, provs[0], res.Stdout.Trimmed())
})

node.StopDaemon()

t.Run("adding HTTP delegated routing endpoint to Routing.Routers config works (streaming)", func(t *testing.T) {
server := fakeServer("application/x-ndjson", ToJSONStr(JSONObj{
"Protocol": "transport-bitswap",
"Schema": "bitswap",
"ID": provs[1],
"Addrs": []string{"/ip4/0.0.0.0/tcp/4001", "/ip4/0.0.0.0/tcp/4002"},
}), ToJSONStr(JSONObj{
"Protocol": "transport-bitswap",
"Schema": "bitswap",
"ID": provs[0],
"Addrs": []string{"/ip4/0.0.0.0/tcp/4001", "/ip4/0.0.0.0/tcp/4002"},
}))
t.Cleanup(server.Close)

node.IPFS("config", "Routing.Routers.TestDelegatedRouter", "--json", ToJSONStr(JSONObj{
"Type": "http",
"Parameters": JSONObj{
"Endpoint": server.URL,
},
}))

res := node.IPFS("config", "Routing.Routers.TestDelegatedRouter.Parameters.Endpoint")
assert.Equal(t, res.Stdout.Trimmed(), server.URL)

node.StartDaemon()
res = node.IPFS("routing", "findprovs", findProvsCID)
assert.Equal(t, prov, res.Stdout.Trimmed())
assert.Equal(t, provs[1]+"\n"+provs[0], res.Stdout.Trimmed())
})

t.Run("HTTP client should emit OpenCensus metrics", func(t *testing.T) {
Expand Down

0 comments on commit 65b8d53

Please sign in to comment.