github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/block/gs/compose_test.go (about) 1 package gs 2 3 import ( 4 "fmt" 5 "strconv" 6 "testing" 7 ) 8 9 func TestComposeAll(t *testing.T) { 10 const targetFile = "data.file" 11 numberOfPartsTests := []int{1, 10, 10000} 12 for _, numberOfParts := range numberOfPartsTests { 13 t.Run("compose_"+strconv.Itoa(numberOfParts), func(t *testing.T) { 14 // prepare data 15 parts := make([]string, numberOfParts) 16 for i := 0; i < numberOfParts; i++ { 17 parts[i] = fmt.Sprintf("part%d", i) 18 } 19 20 // map to track 21 usedParts := make(map[string]struct{}) 22 usedTargets := make(map[string]struct{}) 23 24 // compose 25 err := ComposeAll(targetFile, parts, func(target string, parts []string) error { 26 for _, part := range parts { 27 if _, found := usedParts[part]; found { 28 t.Errorf("Part '%s' already composed", part) 29 } 30 usedParts[part] = struct{}{} 31 } 32 if _, found := usedTargets[target]; found { 33 t.Errorf("Target '%s' already composed with %s", target, parts) 34 } 35 usedTargets[target] = struct{}{} 36 return nil 37 }) 38 if err != nil { 39 t.Fatal(err) 40 } 41 for _, part := range parts { 42 if _, ok := usedParts[part]; !ok { 43 t.Error("Missing part:", part) 44 } 45 } 46 if _, ok := usedTargets[targetFile]; !ok { 47 t.Error("Missing target:", targetFile) 48 } 49 }) 50 } 51 }