gitlab.com/SkynetLabs/skyd@v1.6.9/cmd/skyc/rentercmd_test.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "testing" 6 7 "gitlab.com/SkynetLabs/skyd/node/api" 8 "gitlab.com/SkynetLabs/skyd/skymodules" 9 "go.sia.tech/siad/crypto" 10 "go.sia.tech/siad/types" 11 ) 12 13 // TestFilePercentageBreakdown tests the filePercentageBreakdown function 14 func TestFilePercentageBreakdown(t *testing.T) { 15 // Test for Panics 16 // 17 // Test with empty slice 18 var dirs []directoryInfo 19 fileHealthBreakdown(dirs, false) 20 // Test with empty struct 21 dirs = append(dirs, directoryInfo{}) 22 fileHealthBreakdown(dirs, false) 23 24 // Test basic directory info 25 dir := skymodules.DirectoryInfo{AggregateNumFiles: 7} 26 f1 := skymodules.FileInfo{MaxHealthPercent: 100} 27 f2 := skymodules.FileInfo{MaxHealthPercent: 80} 28 f3 := skymodules.FileInfo{MaxHealthPercent: 60, Stuck: true} 29 f4 := skymodules.FileInfo{MaxHealthPercent: 30} 30 f5 := skymodules.FileInfo{MaxHealthPercent: 10} 31 f6 := skymodules.FileInfo{MaxHealthPercent: 0, OnDisk: true} 32 f7 := skymodules.FileInfo{MaxHealth: 1.1} 33 f8 := skymodules.FileInfo{MaxHealth: 1.1, Lost: true} 34 files := []skymodules.FileInfo{f1, f2, f3, f4, f5, f6, f7, f8} 35 dirs[0] = directoryInfo{ 36 dir: dir, 37 files: files, 38 } 39 percentages, numStuck, err := fileHealthBreakdown(dirs, false) 40 if err != nil { 41 t.Fatal(err) 42 } 43 44 // Define helper check function 45 checkValue := func(expected, actual float64) error { 46 if expected != actual { 47 return fmt.Errorf("Expected %v, actual %v", expected, actual) 48 } 49 return nil 50 } 51 52 // Check values 53 if numStuck != 1 { 54 t.Errorf("Expected 1 stuck file but got %v", numStuck) 55 } 56 expected := float64(100) * float64(1) / float64(8) 57 if err := checkValue(expected, percentages[0]); err != nil { 58 t.Log("Full Health") 59 t.Error(err) 60 } 61 if err := checkValue(expected, percentages[1]); err != nil { 62 t.Log("Greater than 75") 63 t.Error(err) 64 } 65 if err := checkValue(expected, percentages[2]); err != nil { 66 t.Log("Greater than 50") 67 t.Error(err) 68 } 69 if err := checkValue(expected, percentages[3]); err != nil { 70 t.Log("Greater than 25") 71 t.Error(err) 72 } 73 if err := checkValue(expected, percentages[5]); err != nil { 74 t.Log("Lost") 75 t.Error(err) 76 } 77 expected = float64(100) * float64(2) / float64(8) 78 if err := checkValue(expected, percentages[4]); err != nil { 79 t.Log("Greater than 0") 80 t.Error(err) 81 } 82 } 83 84 // TestContractInfo is a regression test to check for negative currency panics 85 func TestContractInfo(t *testing.T) { 86 contract := api.RenterContract{ 87 ID: fileContractID(), 88 Fees: types.NewCurrency64(100), 89 TotalCost: types.ZeroCurrency, 90 } 91 printContractInfo(contract.ID.String(), []api.RenterContract{contract}) 92 } 93 94 // fileContractID is a helper function for generating a FileContractID for 95 // testing 96 func fileContractID() types.FileContractID { 97 var id types.FileContractID 98 h := crypto.NewHash() 99 h.Write(types.SpecifierFileContract[:]) 100 h.Sum(id[:0]) 101 return id 102 }