github.com/corverroos/quorum@v21.1.0+incompatible/private/engine/config_test.go (about)

     1  package engine
     2  
     3  import (
     4  	"io/ioutil"
     5  	"net"
     6  	"os"
     7  	"path/filepath"
     8  	"runtime"
     9  	"syscall"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  var configFileWithTimeouts = `
    16      socket = "tm.ipc"
    17      workdir = "qdata/c1"
    18      dialTimeout = 8
    19      requestTimeout = 9
    20      responseHeaderTimeout = 10
    21  `
    22  var configFileNoTimeouts = `
    23      socket = "tm.ipc"
    24      workdir = "qdata/c1"
    25  `
    26  
    27  func TestDefaultTimeoutsUsedWhenNoConfigFileSpecified(t *testing.T) {
    28  	if runtime.GOOS == "windows" {
    29  		t.Skip("this test case is not supported for windows")
    30  	}
    31  
    32  	socketFile := filepath.Join(os.TempDir(), "socket-file.ipc")
    33  	syscall.Unlink(socketFile)
    34  	l, err := net.Listen("unix", socketFile)
    35  	if err != nil {
    36  		t.Fatalf("Could not create socket file '%v' for unit test, error: %v", socketFile, err)
    37  	}
    38  	defer l.Close()
    39  
    40  	cfg, err := LoadConfig(socketFile)
    41  	if assert.NoError(t, err, "Failed to retrieve socket configuration") {
    42  		assert.Equal(t, socketFile, filepath.Join(cfg.WorkDir, cfg.Socket), "Socket path unexpectedly changed when loading default config")
    43  		assert.Equal(t, DefaultConfig.DialTimeout, cfg.DialTimeout, "Did not get expected default DialTimeout")
    44  		assert.Equal(t, DefaultConfig.RequestTimeout, cfg.RequestTimeout, "Did not get expected default RequestTimeout")
    45  		assert.Equal(t, DefaultConfig.ResponseHeaderTimeout, cfg.ResponseHeaderTimeout, "Did not get expected default ResponseHeaderTimeout")
    46  	}
    47  }
    48  
    49  func TestLoadConfigWithTimeouts(t *testing.T) {
    50  	configFile := filepath.Join(os.TempDir(), "config-example1.toml")
    51  	if err := ioutil.WriteFile(configFile, []byte(configFileWithTimeouts), 0600); err != nil {
    52  		t.Fatalf("Failed to create config file for unit test, error: %v", err)
    53  	}
    54  	defer os.Remove(configFile)
    55  
    56  	cfg, err := LoadConfig(configFile)
    57  	if assert.NoError(t, err, "Failed to load config file") {
    58  		assert.Equal(t, "qdata/c1/tm.ipc", filepath.Join(cfg.WorkDir, cfg.Socket), "Did not get expected socket path from config file")
    59  		assert.Equal(t, uint(8), cfg.DialTimeout, "Did not get expected DialTimeout from config file")
    60  		assert.Equal(t, uint(9), cfg.RequestTimeout, "Did not get expected RequestTimeout from config file")
    61  		assert.Equal(t, uint(10), cfg.ResponseHeaderTimeout, "Did not get expected ResponseHeaderTimeout from config file")
    62  	}
    63  }
    64  
    65  func TestLoadConfigWithDefaultTimeouts(t *testing.T) {
    66  	configFile := filepath.Join(os.TempDir(), "config-example2.toml")
    67  	if err := ioutil.WriteFile(configFile, []byte(configFileNoTimeouts), 0600); err != nil {
    68  		t.Fatalf("Failed to create config file for unit test, error: %v", err)
    69  	}
    70  	defer os.Remove(configFile)
    71  
    72  	cfg, err := LoadConfig(configFile)
    73  	if assert.NoError(t, err, "Failed to load config file") {
    74  		assert.Equal(t, DefaultConfig.DialTimeout, cfg.DialTimeout, "Did not get expected default DialTimeout from config file")
    75  		assert.Equal(t, DefaultConfig.RequestTimeout, cfg.RequestTimeout, "Did not get expected default RequestTimeout from config file")
    76  		assert.Equal(t, DefaultConfig.ResponseHeaderTimeout, cfg.ResponseHeaderTimeout, "Did not get expected default ResponseHeaderTimeout from config file")
    77  	}
    78  }