gitlab.com/SkynetLabs/skyd@v1.6.9/skymodules/siadconfig_test.go (about) 1 package skymodules 2 3 import ( 4 "fmt" 5 "os" 6 "path/filepath" 7 "testing" 8 9 "gitlab.com/SkynetLabs/skyd/build" 10 "go.sia.tech/siad/persist" 11 ) 12 13 // TestSiadConfigPersistCompat confirms that the compat code for the writebps 14 // json tag update performs as expected 15 func TestSiadConfigPersistCompat(t *testing.T) { 16 if testing.Short() { 17 t.SkipNow() 18 } 19 t.Parallel() 20 21 // Create siadconfig 22 testDir := build.TempDir("siadconfig", t.Name()) 23 if err := os.MkdirAll(testDir, persist.DefaultDiskPermissionsTest); err != nil { 24 t.Fatal(err) 25 } 26 path := filepath.Join(testDir, ConfigName) 27 sc, err := NewConfig(path) 28 if err != nil { 29 t.Fatal(err) 30 } 31 32 // Test setting deprecated field only 33 err = saveLoadCheck(sc, 0, 100) 34 if err != nil { 35 t.Fatal(err) 36 } 37 38 // Test setting both fields 39 err = saveLoadCheck(sc, 150, 250) 40 if err != nil { 41 t.Fatal(err) 42 } 43 44 // Confirm that set limits sets the new field and not the old field 45 err = sc.SetRatelimit(0, 200) 46 if err != nil { 47 t.Fatal(err) 48 } 49 if err = checkWriteBPS(sc, 200); err != nil { 50 t.Fatal(err) 51 } 52 53 // Calling Load should have no impact now 54 err = sc.load(path) 55 if err != nil { 56 t.Fatal(err) 57 } 58 if err = checkWriteBPS(sc, 200); err != nil { 59 t.Fatal(err) 60 } 61 } 62 63 // saveLoadCheck is a helper to check saving and loading the siad config file 64 // and verifying the correct values for the WriteBPS fields 65 func saveLoadCheck(sc *SiadConfig, writeBPS, writeBPSDeprepacted int64) error { 66 // Set both fields 67 sc.WriteBPSDeprecated = writeBPSDeprepacted 68 sc.WriteBPS = writeBPS 69 70 // Save 71 err := sc.save() 72 if err != nil { 73 return err 74 } 75 76 // Load 77 err = sc.load(sc.path) 78 if err != nil { 79 return err 80 } 81 82 // Confirm that the new field is set and the old field is zeroed out 83 expectedValue := writeBPS 84 if expectedValue == 0 { 85 expectedValue = writeBPSDeprepacted 86 } 87 return checkWriteBPS(sc, expectedValue) 88 } 89 90 // checkWriteBPS is a helper to check the WriteBPS and WriteBPSDeprecated fields 91 func checkWriteBPS(sc *SiadConfig, writeBPS int64) error { 92 if sc.WriteBPS != writeBPS { 93 return fmt.Errorf("Expected WriteBPS to be set to %v on load but got: %v", writeBPS, sc.WriteBPS) 94 } 95 if sc.WriteBPSDeprecated != 0 { 96 return fmt.Errorf("Expected WriteBPSDeprecated to be reset to 0 but got: %v", sc.WriteBPSDeprecated) 97 } 98 return nil 99 }