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 }