github.com/avahowell/sia@v0.5.1-beta.0.20160524050156-83dcc3d37c94/modules/host/host_errors_test.go (about)

     1  package host
     2  
     3  import (
     4  	"net"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/NebulousLabs/Sia/modules"
    10  	"github.com/NebulousLabs/Sia/persist"
    11  )
    12  
    13  // dependencyErrMkdirAll is a dependency set that returns an error when MkdirAll
    14  // is called.
    15  type dependencyErrMkdirAll struct {
    16  	productionDependencies
    17  }
    18  
    19  func (dependencyErrMkdirAll) mkdirAll(string, os.FileMode) error {
    20  	return mockErrMkdirAll
    21  }
    22  
    23  // TestHostFailedMkdirAll initializes the host using a call to MkdirAll that
    24  // will fail.
    25  func TestHostFailedMkdirAll(t *testing.T) {
    26  	if testing.Short() {
    27  		t.SkipNow()
    28  	}
    29  	t.Parallel()
    30  	ht, err := blankHostTester("TestHostFailedMkdirAll")
    31  	if err != nil {
    32  		t.Fatal(err)
    33  	}
    34  	err = ht.host.Close()
    35  	if err != nil {
    36  		t.Fatal(err)
    37  	}
    38  	_, err = newHost(dependencyErrMkdirAll{}, ht.cs, ht.tpool, ht.wallet, "localhost:0", filepath.Join(ht.persistDir, modules.HostDir))
    39  	if err != mockErrMkdirAll {
    40  		t.Fatal(err)
    41  	}
    42  }
    43  
    44  // dependencyErrNewLogger is a dependency set that returns an error when
    45  // NewLogger is called.
    46  type dependencyErrNewLogger struct {
    47  	productionDependencies
    48  }
    49  
    50  func (dependencyErrNewLogger) newLogger(string) (*persist.Logger, error) {
    51  	return nil, mockErrNewLogger
    52  }
    53  
    54  // TestHostFailedNewLogger initializes the host using a call to NewLogger that
    55  // will fail.
    56  func TestHostFailedNewLogger(t *testing.T) {
    57  	if testing.Short() {
    58  		t.SkipNow()
    59  	}
    60  	t.Parallel()
    61  	ht, err := blankHostTester("TestHostFailedNewLogger")
    62  	if err != nil {
    63  		t.Fatal(err)
    64  	}
    65  	err = ht.host.Close()
    66  	if err != nil {
    67  		t.Fatal(err)
    68  	}
    69  	_, err = newHost(dependencyErrNewLogger{}, ht.cs, ht.tpool, ht.wallet, "localhost:0", filepath.Join(ht.persistDir, modules.HostDir))
    70  	if err != mockErrNewLogger {
    71  		t.Fatal(err)
    72  	}
    73  }
    74  
    75  // dependencyErrOpenDatabase is a dependency that returns an error when
    76  // OpenDatabase is called.
    77  type dependencyErrOpenDatabase struct {
    78  	productionDependencies
    79  }
    80  
    81  func (dependencyErrOpenDatabase) openDatabase(persist.Metadata, string) (*persist.BoltDatabase, error) {
    82  	return nil, mockErrOpenDatabase
    83  }
    84  
    85  // TestHostFailedOpenDatabase initializes the host using a call to OpenDatabase
    86  // that has been mocked to fail.
    87  func TestHostFailedOpenDatabase(t *testing.T) {
    88  	if testing.Short() {
    89  		t.SkipNow()
    90  	}
    91  	t.Parallel()
    92  	ht, err := blankHostTester("TestHostFailedOpenDatabase")
    93  	if err != nil {
    94  		t.Fatal(err)
    95  	}
    96  	err = ht.host.Close()
    97  	if err != nil {
    98  		t.Fatal(err)
    99  	}
   100  	_, err = newHost(dependencyErrOpenDatabase{}, ht.cs, ht.tpool, ht.wallet, "localhost:0", filepath.Join(ht.persistDir, modules.HostDir))
   101  	if err != mockErrOpenDatabase {
   102  		t.Fatal(err)
   103  	}
   104  }
   105  
   106  // dependencyErrLoadFile is a dependency that returns an error when
   107  // LoadFile is called.
   108  type dependencyErrLoadFile struct {
   109  	productionDependencies
   110  }
   111  
   112  func (dependencyErrLoadFile) loadFile(persist.Metadata, interface{}, string) error {
   113  	return mockErrLoadFile
   114  }
   115  
   116  // TestHostFailedLoadFile initializes the host using a call to LoadFile that
   117  // has been mocked to fail.
   118  func TestHostFailedLoadFile(t *testing.T) {
   119  	if testing.Short() {
   120  		t.SkipNow()
   121  	}
   122  	t.Parallel()
   123  	ht, err := blankHostTester("TestHostFailedLoadFile")
   124  	if err != nil {
   125  		t.Fatal(err)
   126  	}
   127  	err = ht.host.Close()
   128  	if err != nil {
   129  		t.Fatal(err)
   130  	}
   131  	_, err = newHost(dependencyErrLoadFile{}, ht.cs, ht.tpool, ht.wallet, "localhost:0", filepath.Join(ht.persistDir, modules.HostDir))
   132  	if err != mockErrLoadFile {
   133  		t.Fatal(err)
   134  	}
   135  }
   136  
   137  // dependencyErrListen is a dependency that returns an error when Listen is
   138  // called.
   139  type dependencyErrListen struct {
   140  	productionDependencies
   141  }
   142  
   143  func (dependencyErrListen) listen(string, string) (net.Listener, error) {
   144  	return nil, mockErrListen
   145  }
   146  
   147  // TestHostFailedListen initializes the host using a call to Listen that
   148  // has been mocked to fail.
   149  func TestHostFailedListen(t *testing.T) {
   150  	if testing.Short() {
   151  		t.SkipNow()
   152  	}
   153  	t.Parallel()
   154  	ht, err := blankHostTester("TestHostFailedListen")
   155  	if err != nil {
   156  		t.Fatal(err)
   157  	}
   158  	err = ht.host.Close()
   159  	if err != nil {
   160  		t.Fatal(err)
   161  	}
   162  	_, err = newHost(dependencyErrListen{}, ht.cs, ht.tpool, ht.wallet, "localhost:0", filepath.Join(ht.persistDir, modules.HostDir))
   163  	if err != mockErrListen {
   164  		t.Fatal(err)
   165  	}
   166  }