github.com/johnathanhowell/sia@v0.5.1-beta.0.20160524050156-83dcc3d37c94/modules/host/storagemanager/sector_test.go (about)

     1  package storagemanager
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/NebulousLabs/Sia/types"
     7  )
     8  
     9  // TestMaxVirtualSectors checks that the max virtual sector limit is enforced
    10  // when adding sectors.
    11  func TestMaxVirtualSectors(t *testing.T) {
    12  	if testing.Short() {
    13  		t.SkipNow()
    14  	}
    15  	t.Parallel()
    16  	smt, err := newStorageManagerTester("TestMaxVirtualSectors")
    17  	if err != nil {
    18  		t.Fatal(err)
    19  	}
    20  	defer smt.Close()
    21  
    22  	// Add a storage folder to receive a sector.
    23  	err = smt.sm.AddStorageFolder(smt.persistDir, minimumStorageFolderSize)
    24  	if err != nil {
    25  		t.Fatal(err)
    26  	}
    27  
    28  	// Add the first instance of the sector.
    29  	sectorRoot, sectorData, err := createSector()
    30  	if err != nil {
    31  		t.Fatal(err)
    32  	}
    33  	err = smt.sm.AddSector(sectorRoot, 1, sectorData)
    34  	if err != nil {
    35  		t.Fatal(err)
    36  	}
    37  
    38  	// Add virtual instances of the sector until there are no more available
    39  	// virual slots.
    40  	for i := 1; i < maximumVirtualSectors; i++ {
    41  		err = smt.sm.AddSector(sectorRoot, types.BlockHeight(i%3+2), sectorData)
    42  		if err != nil {
    43  			t.Fatal(err)
    44  		}
    45  	}
    46  
    47  	// Add another virtual sector, an error should be returned.
    48  	err = smt.sm.AddSector(sectorRoot, 1, sectorData)
    49  	if err != errMaxVirtualSectors {
    50  		t.Fatal(err)
    51  	}
    52  }
    53  
    54  // TestBadSectorAdd triggers a panic by trying to add an illegal sector.
    55  func TestBadSectorAdd(t *testing.T) {
    56  	if testing.Short() {
    57  		t.SkipNow()
    58  	}
    59  	t.Parallel()
    60  	smt, err := newStorageManagerTester("TestBadSectorAdd")
    61  	if err != nil {
    62  		t.Fatal(err)
    63  	}
    64  	defer smt.Close()
    65  
    66  	defer func() {
    67  		r := recover()
    68  		if r == nil {
    69  			t.Fatal("did not trigger panic when adding a bad sector")
    70  		}
    71  	}()
    72  	sectorRoot, sectorData, err := createSector()
    73  	if err != nil {
    74  		t.Fatal(err)
    75  	}
    76  	// Error doesn't need to be checked, a panic will be thrown.
    77  	_ = smt.sm.AddSector(sectorRoot, 1, sectorData[:1])
    78  	t.Fatal("panic not thrown")
    79  }