gitlab.com/SiaPrime/SiaPrime@v1.4.1/modules/renter/stuckstack_test.go (about) 1 package renter 2 3 import ( 4 "strconv" 5 "testing" 6 7 "gitlab.com/SiaPrime/SiaPrime/modules" 8 ) 9 10 // TestStuckStack probes the implementation of the stuck stack 11 func TestStuckStack(t *testing.T) { 12 stack := stuckStack{ 13 stack: make([]modules.SiaPath, 0, maxSuccessfulStuckRepairFiles), 14 siaPaths: make(map[modules.SiaPath]struct{}), 15 } 16 17 // Check stack initialized as expected 18 if stack.managedLen() != 0 { 19 t.Fatal("Expected length of 0 got", stack.managedLen()) 20 } 21 22 // Create some SiaPaths to add to the stack 23 sp1, _ := modules.NewSiaPath("siaPath1") 24 sp2, _ := modules.NewSiaPath("siaPath2") 25 26 // Test pushing 1 siapath onto stack 27 stack.managedPush(sp1) 28 if stack.managedLen() != 1 { 29 t.Fatal("Expected length of 1 got", stack.managedLen()) 30 } 31 siaPath := stack.managedPop() 32 if !siaPath.Equals(sp1) { 33 t.Log("siaPath:", siaPath) 34 t.Log("sp1:", sp1) 35 t.Fatal("SiaPaths not equal") 36 } 37 if stack.managedLen() != 0 { 38 t.Fatal("Expected length of 0 got", stack.managedLen()) 39 } 40 41 // Test adding multiple siaPaths to stack 42 stack.managedPush(sp1) 43 stack.managedPush(sp2) 44 if stack.managedLen() != 2 { 45 t.Fatal("Expected length of 2 got", stack.managedLen()) 46 } 47 // Last siapath added should be returned 48 siaPath = stack.managedPop() 49 if !siaPath.Equals(sp2) { 50 t.Log("siaPath:", siaPath) 51 t.Log("sp2:", sp2) 52 t.Fatal("SiaPaths not equal") 53 } 54 55 // Pushing first siapath again should result in moving it to the top 56 stack.managedPush(sp2) 57 stack.managedPush(sp1) 58 if stack.managedLen() != 2 { 59 t.Fatal("Expected length of 2 got", stack.managedLen()) 60 } 61 siaPath = stack.managedPop() 62 if !siaPath.Equals(sp1) { 63 t.Log("siaPath:", siaPath) 64 t.Log("sp1:", sp1) 65 t.Fatal("SiaPaths not equal") 66 } 67 68 // Length should never exceed maxSuccessfulStuckRepairFiles 69 for i := 0; i < 2*maxSuccessfulStuckRepairFiles; i++ { 70 sp, _ := modules.NewSiaPath(strconv.Itoa(i)) 71 stack.managedPush(sp) 72 if stack.managedLen() > maxSuccessfulStuckRepairFiles { 73 t.Fatalf("Length exceeded %v, %v", maxSuccessfulStuckRepairFiles, stack.managedLen()) 74 } 75 } 76 }