Skip to content

Commit

Permalink
tests: add tests for building IPFS config
Browse files Browse the repository at this point in the history
  • Loading branch information
frrist committed Dec 13, 2023
1 parent a4152f1 commit 49a8a21
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 4 deletions.
7 changes: 4 additions & 3 deletions cmd/cli/serve/serve_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,15 @@ import (
"testing"
"time"

"github.com/bacalhau-project/bacalhau/pkg/publicapi/client"
clientv2 "github.com/bacalhau-project/bacalhau/pkg/publicapi/client/v2"
apitest "github.com/bacalhau-project/bacalhau/pkg/publicapi/test"
"github.com/multiformats/go-multiaddr"
"github.com/phayes/freeport"
"github.com/stretchr/testify/suite"
"golang.org/x/sync/errgroup"

"github.com/bacalhau-project/bacalhau/pkg/publicapi/client"
clientv2 "github.com/bacalhau-project/bacalhau/pkg/publicapi/client/v2"
apitest "github.com/bacalhau-project/bacalhau/pkg/publicapi/test"

"github.com/bacalhau-project/bacalhau/pkg/docker"
"github.com/bacalhau-project/bacalhau/pkg/lib/marshaller"

Expand Down
7 changes: 6 additions & 1 deletion pkg/ipfs/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ import (
)

func buildIPFSConfig(cfg types.IpfsConfig) (*config.Config, error) {
// NB(forrest): these empty checks are here because some tests pass
// partial configs to these methods, and we cannot depend on the config being
// fully populated with default values.
profileName := cfg.Profile
if profileName == "" {
profileName = "flatfs"
Expand Down Expand Up @@ -43,8 +46,10 @@ func buildIPFSConfig(cfg types.IpfsConfig) (*config.Config, error) {
if cfg.PrivateInternal {
profile = config.Profiles["test"]
transformers = append(transformers,
// disable autonat, hole puncing and relays
// disable autonat, UPnP, hole-punching and relays
withLocalOnly(),
// only listen for swarm connections on local endpoint.
withSwarmListenAddresses("/ip4/127.0.0.1/tcp/0"),
)
}
if len(cfg.SwarmAddresses) > 0 {
Expand Down
106 changes: 106 additions & 0 deletions pkg/ipfs/config_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
//go:build unit || !integration

package ipfs

import (
"testing"

"github.com/ipfs/kubo/config"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/bacalhau-project/bacalhau/pkg/config/types"
)

func TestSetSwarmListenAddresses(t *testing.T) {
expected := []string{
"/ip4/10.0.0.1/tcp/1234",
"/ip4/10.0.0.2/tcp/1234",
}

ipfscfg, err := buildIPFSConfig(types.IpfsConfig{
PrivateInternal: false,
SwarmListenAddresses: expected,
})
require.NoError(t, err)

assert.ElementsMatch(t, ipfscfg.Addresses.Swarm, expected)
assert.ElementsMatch(t, ipfscfg.Addresses.Gateway, []string{"/ip4/0.0.0.0/tcp/0", "/ip6/::1/tcp/0"})
assert.ElementsMatch(t, ipfscfg.Addresses.API, []string{"/ip4/0.0.0.0/tcp/0", "/ip6/::1/tcp/0"})
}

func TestSetGatewayListenAddresses(t *testing.T) {
expected := []string{
"/ip4/10.0.0.1/tcp/1234",
"/ip4/10.0.0.2/tcp/1234",
}

ipfscfg, err := buildIPFSConfig(types.IpfsConfig{
PrivateInternal: false,
GatewayListenAddresses: expected,
})
require.NoError(t, err)

assert.ElementsMatch(t, ipfscfg.Addresses.Gateway, expected)
assert.ElementsMatch(t, ipfscfg.Addresses.Swarm, []string{"/ip4/0.0.0.0/tcp/0", "/ip6/::1/tcp/0"})
assert.ElementsMatch(t, ipfscfg.Addresses.API, []string{"/ip4/0.0.0.0/tcp/0", "/ip6/::1/tcp/0"})
}

func TestSetAPIListenAddresses(t *testing.T) {
expected := []string{
"/ip4/10.0.0.1/tcp/1234",
"/ip4/10.0.0.2/tcp/1234",
}

ipfscfg, err := buildIPFSConfig(types.IpfsConfig{
PrivateInternal: false,
APIListenAddresses: expected,
})
require.NoError(t, err)

assert.ElementsMatch(t, ipfscfg.Addresses.API, expected)
assert.ElementsMatch(t, ipfscfg.Addresses.Swarm, []string{"/ip4/0.0.0.0/tcp/0", "/ip6/::1/tcp/0"})
assert.ElementsMatch(t, ipfscfg.Addresses.Gateway, []string{"/ip4/0.0.0.0/tcp/0", "/ip6/::1/tcp/0"})
}

func TestPrivateConfig(t *testing.T) {
ipfscfg, err := buildIPFSConfig(types.IpfsConfig{
PrivateInternal: true,
})
require.NoError(t, err)

assert.ElementsMatch(t, ipfscfg.Addresses.Swarm, []string{"/ip4/127.0.0.1/tcp/0"})
assert.ElementsMatch(t, ipfscfg.Addresses.API, []string{"/ip4/0.0.0.0/tcp/0", "/ip6/::1/tcp/0"})
assert.ElementsMatch(t, ipfscfg.Addresses.Gateway, []string{"/ip4/0.0.0.0/tcp/0", "/ip6/::1/tcp/0"})
assert.Equal(t, config.AutoNATServiceDisabled, ipfscfg.AutoNAT.ServiceMode)
assert.Equal(t, config.False, ipfscfg.Swarm.EnableHolePunching)
assert.Equal(t, config.False, ipfscfg.Swarm.RelayClient.Enabled)
assert.Equal(t, config.False, ipfscfg.Swarm.RelayService.Enabled)
assert.Equal(t, config.False, ipfscfg.Swarm.Transports.Network.Relay)
}

func TestWithPublicSwarm(t *testing.T) {
expected := []string{"/ip4/127.0.0.1/tcp/34441/p2p/QmRgRvyNXV79vBMKv8tJVwwScAjeTn2F7QU3W4xSZTmEjq"}
ipfscfg, err := buildIPFSConfig(types.IpfsConfig{
SwarmAddresses: expected,
})
require.NoError(t, err)

swarmPeers, err := ParsePeersString(expected)
require.NoError(t, err)
assert.Equal(t, ipfscfg.Peering, config.Peering{Peers: swarmPeers})
}

func TestWithPrivateSwarm(t *testing.T) {
expected := []string{"/ip4/127.0.0.1/tcp/34441/p2p/QmRgRvyNXV79vBMKv8tJVwwScAjeTn2F7QU3W4xSZTmEjq"}
ipfscfg, err := buildIPFSConfig(types.IpfsConfig{
SwarmAddresses: expected,
SwarmKeyPath: "/some/path/to/key",
})
require.NoError(t, err)

swarmPeers, err := ParsePeersString(expected)
require.NoError(t, err)
assert.Equal(t, ipfscfg.Peering, config.Peering{Peers: swarmPeers})
assert.Equal(t, ipfscfg.Bootstrap, expected)
}

0 comments on commit 49a8a21

Please sign in to comment.