gitlab.com/SkynetLabs/skyd@v1.6.9/skymodules/renter/filesystem/dirnode_test.go (about)

     1  package filesystem
     2  
     3  import (
     4  	"path/filepath"
     5  	"testing"
     6  	"time"
     7  
     8  	"gitlab.com/SkynetLabs/skyd/skymodules"
     9  	"gitlab.com/SkynetLabs/skyd/skymodules/renter/filesystem/siadir"
    10  )
    11  
    12  // TestHealthPercentage checks the values returned from HealthPercentage
    13  func TestHealthPercentage(t *testing.T) {
    14  	var tests = []struct {
    15  		health           float64
    16  		healthPercentage float64
    17  	}{
    18  		{1.5, 0},
    19  		{1.25, 0},
    20  		{1.0, 25},
    21  		{0.75, 50},
    22  		{0.5, 75},
    23  		{0.25, 100},
    24  		{0, 100},
    25  	}
    26  	for _, test := range tests {
    27  		hp := skymodules.HealthPercentage(test.health)
    28  		if hp != test.healthPercentage {
    29  			t.Fatalf("Expect %v got %v", test.healthPercentage, hp)
    30  		}
    31  	}
    32  }
    33  
    34  // TestUpdateSiaDirSetMetadata probes the UpdateMetadata method of the SiaDirSet
    35  func TestUpdateSiaDirSetMetadata(t *testing.T) {
    36  	if testing.Short() {
    37  		t.SkipNow()
    38  	}
    39  	t.Parallel()
    40  
    41  	// Prepare a filesystem with a dir.
    42  	root := filepath.Join(testDir(t.Name()), "fs-root")
    43  	fs := newTestFileSystem(root)
    44  	sp := newSiaPath("path/to/dir")
    45  	err := fs.NewSiaDir(sp, skymodules.DefaultDirPerm)
    46  	if err != nil {
    47  		t.Fatal(err)
    48  	}
    49  	entry, err := fs.OpenSiaDir(sp)
    50  	if err != nil {
    51  		t.Fatal(err)
    52  	}
    53  
    54  	// Confirm metadata is set properly
    55  	md, err := entry.Metadata()
    56  	if err != nil {
    57  		t.Fatal(err)
    58  	}
    59  	if err = siadir.VerifyMetadataInit(md); err != nil {
    60  		t.Fatal(err)
    61  	}
    62  
    63  	// Update the metadata of the entry
    64  	checkTime := time.Now()
    65  	metadataUpdate := md
    66  	// Aggregate fields
    67  	metadataUpdate.AggregateHealth = 7
    68  	metadataUpdate.AggregateLastHealthCheckTime = checkTime
    69  	metadataUpdate.AggregateMinRedundancy = 2.2
    70  	metadataUpdate.AggregateModTime = checkTime
    71  	metadataUpdate.AggregateNumFiles = 11
    72  	metadataUpdate.AggregateNumStuckChunks = 15
    73  	metadataUpdate.AggregateNumSubDirs = 5
    74  	metadataUpdate.AggregateNumUnfinishedFiles = 5
    75  	metadataUpdate.AggregateSize = 2432
    76  	metadataUpdate.AggregateStuckHealth = 5
    77  	// SiaDir fields
    78  	metadataUpdate.Health = 4
    79  	metadataUpdate.LastHealthCheckTime = checkTime
    80  	metadataUpdate.MinRedundancy = 2
    81  	metadataUpdate.ModTime = checkTime
    82  	metadataUpdate.NumFiles = 5
    83  	metadataUpdate.NumStuckChunks = 6
    84  	metadataUpdate.NumSubDirs = 4
    85  	metadataUpdate.NumUnfinishedFiles = 5
    86  	metadataUpdate.Size = 223
    87  	metadataUpdate.StuckHealth = 2
    88  
    89  	err = fs.UpdateDirMetadata(sp, metadataUpdate)
    90  	if err != nil {
    91  		t.Fatal(err)
    92  	}
    93  
    94  	// Check if the metadata was updated properly in memory and on disk
    95  	md, err = entry.Metadata()
    96  	if err != nil {
    97  		t.Fatal(err)
    98  	}
    99  	err = siadir.EqualMetadatas(md, metadataUpdate)
   100  	if err != nil {
   101  		t.Fatal(err)
   102  	}
   103  }