aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/swarm/config_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/swarm/config_test.go')
-rw-r--r--cmd/swarm/config_test.go575
1 files changed, 0 insertions, 575 deletions
diff --git a/cmd/swarm/config_test.go b/cmd/swarm/config_test.go
deleted file mode 100644
index 484f6dec3..000000000
--- a/cmd/swarm/config_test.go
+++ /dev/null
@@ -1,575 +0,0 @@
-// Copyright 2017 The go-ethereum Authors
-// This file is part of go-ethereum.
-//
-// go-ethereum is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// go-ethereum is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
-
-package main
-
-import (
- "fmt"
- "io"
- "io/ioutil"
- "net"
- "os"
- "os/exec"
- "testing"
- "time"
-
- "github.com/docker/docker/pkg/reexec"
- "github.com/ethereum/go-ethereum/cmd/utils"
- "github.com/ethereum/go-ethereum/rpc"
- "github.com/ethereum/go-ethereum/swarm"
- "github.com/ethereum/go-ethereum/swarm/api"
-)
-
-func TestConfigDump(t *testing.T) {
- swarm := runSwarm(t, "dumpconfig")
- defaultConf := api.NewConfig()
- out, err := tomlSettings.Marshal(&defaultConf)
- if err != nil {
- t.Fatal(err)
- }
- swarm.Expect(string(out))
- swarm.ExpectExit()
-}
-
-func TestConfigFailsSwapEnabledNoSwapApi(t *testing.T) {
- flags := []string{
- fmt.Sprintf("--%s", SwarmNetworkIdFlag.Name), "42",
- fmt.Sprintf("--%s", SwarmPortFlag.Name), "54545",
- fmt.Sprintf("--%s", SwarmSwapEnabledFlag.Name),
- }
-
- swarm := runSwarm(t, flags...)
- swarm.Expect("Fatal: " + SwarmErrSwapSetNoAPI + "\n")
- swarm.ExpectExit()
-}
-
-func TestConfigFailsNoBzzAccount(t *testing.T) {
- flags := []string{
- fmt.Sprintf("--%s", SwarmNetworkIdFlag.Name), "42",
- fmt.Sprintf("--%s", SwarmPortFlag.Name), "54545",
- }
-
- swarm := runSwarm(t, flags...)
- swarm.Expect("Fatal: " + SwarmErrNoBZZAccount + "\n")
- swarm.ExpectExit()
-}
-
-func TestConfigCmdLineOverrides(t *testing.T) {
- dir, err := ioutil.TempDir("", "bzztest")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
-
- conf, account := getTestAccount(t, dir)
- node := &testNode{Dir: dir}
-
- // assign ports
- httpPort, err := assignTCPPort()
- if err != nil {
- t.Fatal(err)
- }
-
- flags := []string{
- fmt.Sprintf("--%s", SwarmNetworkIdFlag.Name), "42",
- fmt.Sprintf("--%s", SwarmPortFlag.Name), httpPort,
- fmt.Sprintf("--%s", SwarmSyncDisabledFlag.Name),
- fmt.Sprintf("--%s", CorsStringFlag.Name), "*",
- fmt.Sprintf("--%s", SwarmAccountFlag.Name), account.Address.String(),
- fmt.Sprintf("--%s", SwarmDeliverySkipCheckFlag.Name),
- fmt.Sprintf("--%s", EnsAPIFlag.Name), "",
- fmt.Sprintf("--%s", utils.DataDirFlag.Name), dir,
- fmt.Sprintf("--%s", utils.IPCPathFlag.Name), conf.IPCPath,
- }
- node.Cmd = runSwarm(t, flags...)
- node.Cmd.InputLine(testPassphrase)
- defer func() {
- if t.Failed() {
- node.Shutdown()
- }
- }()
- // wait for the node to start
- for start := time.Now(); time.Since(start) < 10*time.Second; time.Sleep(50 * time.Millisecond) {
- node.Client, err = rpc.Dial(conf.IPCEndpoint())
- if err == nil {
- break
- }
- }
- if node.Client == nil {
- t.Fatal(err)
- }
-
- // load info
- var info swarm.Info
- if err := node.Client.Call(&info, "bzz_info"); err != nil {
- t.Fatal(err)
- }
-
- if info.Port != httpPort {
- t.Fatalf("Expected port to be %s, got %s", httpPort, info.Port)
- }
-
- if info.NetworkID != 42 {
- t.Fatalf("Expected network ID to be %d, got %d", 42, info.NetworkID)
- }
-
- if info.SyncEnabled {
- t.Fatal("Expected Sync to be disabled, but is true")
- }
-
- if !info.DeliverySkipCheck {
- t.Fatal("Expected DeliverySkipCheck to be enabled, but it is not")
- }
-
- if info.Cors != "*" {
- t.Fatalf("Expected Cors flag to be set to %s, got %s", "*", info.Cors)
- }
-
- node.Shutdown()
-}
-
-func TestConfigFileOverrides(t *testing.T) {
-
- // assign ports
- httpPort, err := assignTCPPort()
- if err != nil {
- t.Fatal(err)
- }
-
- //create a config file
- //first, create a default conf
- defaultConf := api.NewConfig()
- //change some values in order to test if they have been loaded
- defaultConf.SyncEnabled = false
- defaultConf.DeliverySkipCheck = true
- defaultConf.NetworkID = 54
- defaultConf.Port = httpPort
- defaultConf.DbCapacity = 9000000
- defaultConf.HiveParams.KeepAliveInterval = 6000000000
- defaultConf.Swap.Params.Strategy.AutoCashInterval = 600 * time.Second
- //defaultConf.SyncParams.KeyBufferSize = 512
- //create a TOML string
- out, err := tomlSettings.Marshal(&defaultConf)
- if err != nil {
- t.Fatalf("Error creating TOML file in TestFileOverride: %v", err)
- }
- //create file
- f, err := ioutil.TempFile("", "testconfig.toml")
- if err != nil {
- t.Fatalf("Error writing TOML file in TestFileOverride: %v", err)
- }
- //write file
- _, err = f.WriteString(string(out))
- if err != nil {
- t.Fatalf("Error writing TOML file in TestFileOverride: %v", err)
- }
- f.Sync()
-
- dir, err := ioutil.TempDir("", "bzztest")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
- conf, account := getTestAccount(t, dir)
- node := &testNode{Dir: dir}
-
- flags := []string{
- fmt.Sprintf("--%s", SwarmTomlConfigPathFlag.Name), f.Name(),
- fmt.Sprintf("--%s", SwarmAccountFlag.Name), account.Address.String(),
- fmt.Sprintf("--%s", EnsAPIFlag.Name), "",
- fmt.Sprintf("--%s", utils.DataDirFlag.Name), dir,
- fmt.Sprintf("--%s", utils.IPCPathFlag.Name), conf.IPCPath,
- }
- node.Cmd = runSwarm(t, flags...)
- node.Cmd.InputLine(testPassphrase)
- defer func() {
- if t.Failed() {
- node.Shutdown()
- }
- }()
- // wait for the node to start
- for start := time.Now(); time.Since(start) < 10*time.Second; time.Sleep(50 * time.Millisecond) {
- node.Client, err = rpc.Dial(conf.IPCEndpoint())
- if err == nil {
- break
- }
- }
- if node.Client == nil {
- t.Fatal(err)
- }
-
- // load info
- var info swarm.Info
- if err := node.Client.Call(&info, "bzz_info"); err != nil {
- t.Fatal(err)
- }
-
- if info.Port != httpPort {
- t.Fatalf("Expected port to be %s, got %s", httpPort, info.Port)
- }
-
- if info.NetworkID != 54 {
- t.Fatalf("Expected network ID to be %d, got %d", 54, info.NetworkID)
- }
-
- if info.SyncEnabled {
- t.Fatal("Expected Sync to be disabled, but is true")
- }
-
- if !info.DeliverySkipCheck {
- t.Fatal("Expected DeliverySkipCheck to be enabled, but it is not")
- }
-
- if info.DbCapacity != 9000000 {
- t.Fatalf("Expected network ID to be %d, got %d", 54, info.NetworkID)
- }
-
- if info.HiveParams.KeepAliveInterval != 6000000000 {
- t.Fatalf("Expected HiveParams KeepAliveInterval to be %d, got %d", uint64(6000000000), uint64(info.HiveParams.KeepAliveInterval))
- }
-
- if info.Swap.Params.Strategy.AutoCashInterval != 600*time.Second {
- t.Fatalf("Expected SwapParams AutoCashInterval to be %ds, got %d", 600, info.Swap.Params.Strategy.AutoCashInterval)
- }
-
- // if info.SyncParams.KeyBufferSize != 512 {
- // t.Fatalf("Expected info.SyncParams.KeyBufferSize to be %d, got %d", 512, info.SyncParams.KeyBufferSize)
- // }
-
- node.Shutdown()
-}
-
-func TestConfigEnvVars(t *testing.T) {
- // assign ports
- httpPort, err := assignTCPPort()
- if err != nil {
- t.Fatal(err)
- }
-
- envVars := os.Environ()
- envVars = append(envVars, fmt.Sprintf("%s=%s", SwarmPortFlag.EnvVar, httpPort))
- envVars = append(envVars, fmt.Sprintf("%s=%s", SwarmNetworkIdFlag.EnvVar, "999"))
- envVars = append(envVars, fmt.Sprintf("%s=%s", CorsStringFlag.EnvVar, "*"))
- envVars = append(envVars, fmt.Sprintf("%s=%s", SwarmSyncDisabledFlag.EnvVar, "true"))
- envVars = append(envVars, fmt.Sprintf("%s=%s", SwarmDeliverySkipCheckFlag.EnvVar, "true"))
-
- dir, err := ioutil.TempDir("", "bzztest")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
- conf, account := getTestAccount(t, dir)
- node := &testNode{Dir: dir}
- flags := []string{
- fmt.Sprintf("--%s", SwarmAccountFlag.Name), account.Address.String(),
- "--ens-api", "",
- "--datadir", dir,
- "--ipcpath", conf.IPCPath,
- }
-
- //node.Cmd = runSwarm(t,flags...)
- //node.Cmd.cmd.Env = envVars
- //the above assignment does not work, so we need a custom Cmd here in order to pass envVars:
- cmd := &exec.Cmd{
- Path: reexec.Self(),
- Args: append([]string{"swarm-test"}, flags...),
- Stderr: os.Stderr,
- Stdout: os.Stdout,
- }
- cmd.Env = envVars
- //stdout, err := cmd.StdoutPipe()
- //if err != nil {
- // t.Fatal(err)
- //}
- //stdout = bufio.NewReader(stdout)
- var stdin io.WriteCloser
- if stdin, err = cmd.StdinPipe(); err != nil {
- t.Fatal(err)
- }
- if err := cmd.Start(); err != nil {
- t.Fatal(err)
- }
-
- //cmd.InputLine(testPassphrase)
- io.WriteString(stdin, testPassphrase+"\n")
- defer func() {
- if t.Failed() {
- node.Shutdown()
- cmd.Process.Kill()
- }
- }()
- // wait for the node to start
- for start := time.Now(); time.Since(start) < 10*time.Second; time.Sleep(50 * time.Millisecond) {
- node.Client, err = rpc.Dial(conf.IPCEndpoint())
- if err == nil {
- break
- }
- }
-
- if node.Client == nil {
- t.Fatal(err)
- }
-
- // load info
- var info swarm.Info
- if err := node.Client.Call(&info, "bzz_info"); err != nil {
- t.Fatal(err)
- }
-
- if info.Port != httpPort {
- t.Fatalf("Expected port to be %s, got %s", httpPort, info.Port)
- }
-
- if info.NetworkID != 999 {
- t.Fatalf("Expected network ID to be %d, got %d", 999, info.NetworkID)
- }
-
- if info.Cors != "*" {
- t.Fatalf("Expected Cors flag to be set to %s, got %s", "*", info.Cors)
- }
-
- if info.SyncEnabled {
- t.Fatal("Expected Sync to be disabled, but is true")
- }
-
- if !info.DeliverySkipCheck {
- t.Fatal("Expected DeliverySkipCheck to be enabled, but it is not")
- }
-
- node.Shutdown()
- cmd.Process.Kill()
-}
-
-func TestConfigCmdLineOverridesFile(t *testing.T) {
-
- // assign ports
- httpPort, err := assignTCPPort()
- if err != nil {
- t.Fatal(err)
- }
-
- //create a config file
- //first, create a default conf
- defaultConf := api.NewConfig()
- //change some values in order to test if they have been loaded
- defaultConf.SyncEnabled = true
- defaultConf.NetworkID = 54
- defaultConf.Port = "8588"
- defaultConf.DbCapacity = 9000000
- defaultConf.HiveParams.KeepAliveInterval = 6000000000
- defaultConf.Swap.Params.Strategy.AutoCashInterval = 600 * time.Second
- //defaultConf.SyncParams.KeyBufferSize = 512
- //create a TOML file
- out, err := tomlSettings.Marshal(&defaultConf)
- if err != nil {
- t.Fatalf("Error creating TOML file in TestFileOverride: %v", err)
- }
- //write file
- fname := "testconfig.toml"
- f, err := ioutil.TempFile("", fname)
- if err != nil {
- t.Fatalf("Error writing TOML file in TestFileOverride: %v", err)
- }
- defer os.Remove(fname)
- //write file
- _, err = f.WriteString(string(out))
- if err != nil {
- t.Fatalf("Error writing TOML file in TestFileOverride: %v", err)
- }
- f.Sync()
-
- dir, err := ioutil.TempDir("", "bzztest")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
- conf, account := getTestAccount(t, dir)
- node := &testNode{Dir: dir}
-
- expectNetworkId := uint64(77)
-
- flags := []string{
- fmt.Sprintf("--%s", SwarmNetworkIdFlag.Name), "77",
- fmt.Sprintf("--%s", SwarmPortFlag.Name), httpPort,
- fmt.Sprintf("--%s", SwarmSyncDisabledFlag.Name),
- fmt.Sprintf("--%s", SwarmTomlConfigPathFlag.Name), f.Name(),
- fmt.Sprintf("--%s", SwarmAccountFlag.Name), account.Address.String(),
- fmt.Sprintf("--%s", EnsAPIFlag.Name), "",
- fmt.Sprintf("--%s", utils.DataDirFlag.Name), dir,
- fmt.Sprintf("--%s", utils.IPCPathFlag.Name), conf.IPCPath,
- }
- node.Cmd = runSwarm(t, flags...)
- node.Cmd.InputLine(testPassphrase)
- defer func() {
- if t.Failed() {
- node.Shutdown()
- }
- }()
- // wait for the node to start
- for start := time.Now(); time.Since(start) < 10*time.Second; time.Sleep(50 * time.Millisecond) {
- node.Client, err = rpc.Dial(conf.IPCEndpoint())
- if err == nil {
- break
- }
- }
- if node.Client == nil {
- t.Fatal(err)
- }
-
- // load info
- var info swarm.Info
- if err := node.Client.Call(&info, "bzz_info"); err != nil {
- t.Fatal(err)
- }
-
- if info.Port != httpPort {
- t.Fatalf("Expected port to be %s, got %s", httpPort, info.Port)
- }
-
- if info.NetworkID != expectNetworkId {
- t.Fatalf("Expected network ID to be %d, got %d", expectNetworkId, info.NetworkID)
- }
-
- if info.SyncEnabled {
- t.Fatal("Expected Sync to be disabled, but is true")
- }
-
- if info.DbCapacity != 9000000 {
- t.Fatalf("Expected Capacity to be %d, got %d", 9000000, info.DbCapacity)
- }
-
- if info.HiveParams.KeepAliveInterval != 6000000000 {
- t.Fatalf("Expected HiveParams KeepAliveInterval to be %d, got %d", uint64(6000000000), uint64(info.HiveParams.KeepAliveInterval))
- }
-
- if info.Swap.Params.Strategy.AutoCashInterval != 600*time.Second {
- t.Fatalf("Expected SwapParams AutoCashInterval to be %ds, got %d", 600, info.Swap.Params.Strategy.AutoCashInterval)
- }
-
- // if info.SyncParams.KeyBufferSize != 512 {
- // t.Fatalf("Expected info.SyncParams.KeyBufferSize to be %d, got %d", 512, info.SyncParams.KeyBufferSize)
- // }
-
- node.Shutdown()
-}
-
-func TestConfigValidate(t *testing.T) {
- for _, c := range []struct {
- cfg *api.Config
- err string
- }{
- {
- cfg: &api.Config{EnsAPIs: []string{
- "/data/testnet/geth.ipc",
- }},
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "http://127.0.0.1:1234",
- }},
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "ws://127.0.0.1:1234",
- }},
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "test:/data/testnet/geth.ipc",
- }},
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "test:ws://127.0.0.1:1234",
- }},
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "314159265dD8dbb310642f98f50C066173C1259b@/data/testnet/geth.ipc",
- }},
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "314159265dD8dbb310642f98f50C066173C1259b@http://127.0.0.1:1234",
- }},
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "314159265dD8dbb310642f98f50C066173C1259b@ws://127.0.0.1:1234",
- }},
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "test:314159265dD8dbb310642f98f50C066173C1259b@/data/testnet/geth.ipc",
- }},
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "eth:314159265dD8dbb310642f98f50C066173C1259b@http://127.0.0.1:1234",
- }},
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "eth:314159265dD8dbb310642f98f50C066173C1259b@ws://127.0.0.1:12344",
- }},
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "eth:",
- }},
- err: "invalid format [tld:][contract-addr@]url for ENS API endpoint configuration \"eth:\": missing url",
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "314159265dD8dbb310642f98f50C066173C1259b@",
- }},
- err: "invalid format [tld:][contract-addr@]url for ENS API endpoint configuration \"314159265dD8dbb310642f98f50C066173C1259b@\": missing url",
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- ":314159265dD8dbb310642f98f50C066173C1259",
- }},
- err: "invalid format [tld:][contract-addr@]url for ENS API endpoint configuration \":314159265dD8dbb310642f98f50C066173C1259\": missing tld",
- },
- {
- cfg: &api.Config{EnsAPIs: []string{
- "@/data/testnet/geth.ipc",
- }},
- err: "invalid format [tld:][contract-addr@]url for ENS API endpoint configuration \"@/data/testnet/geth.ipc\": missing contract address",
- },
- } {
- err := validateConfig(c.cfg)
- if c.err != "" && err.Error() != c.err {
- t.Errorf("expected error %q, got %q", c.err, err)
- }
- if c.err == "" && err != nil {
- t.Errorf("unexpected error %q", err)
- }
- }
-}
-
-func assignTCPPort() (string, error) {
- l, err := net.Listen("tcp", "127.0.0.1:0")
- if err != nil {
- return "", err
- }
- l.Close()
- _, port, err := net.SplitHostPort(l.Addr().String())
- if err != nil {
- return "", err
- }
- return port, nil
-}