github.com/xyproto/orbiton/v2@v2.65.12-0.20240516144430-e10a419274ec/readfile_test.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"math/rand"
     6  	"os"
     7  	"testing"
     8  )
     9  
    10  // createDummyFiles generates dummy files with specified size and returns their paths.
    11  func createDummyFiles(numFiles int, fileSize int) ([]string, error) {
    12  	var paths []string
    13  	charset := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    14  
    15  	for i := 0; i < numFiles; i++ {
    16  		content := make([]byte, fileSize)
    17  		for j := range content {
    18  			content[j] = charset[rand.Intn(len(charset))]
    19  		}
    20  
    21  		tmpfile, err := os.CreateTemp("", "dummyfile")
    22  		if err != nil {
    23  			return nil, err
    24  		}
    25  		_, err = tmpfile.Write(content)
    26  		if err != nil {
    27  			return nil, err
    28  		}
    29  		tmpfile.Close()
    30  
    31  		paths = append(paths, tmpfile.Name())
    32  	}
    33  
    34  	return paths, nil
    35  }
    36  
    37  func BenchmarkReadFileAndProcessLines(b *testing.B) {
    38  	numFiles := 5
    39  	fileSizes := []int{32, 64, 128, 256, 512, 1024, 2 * 1024, 3 * 1024, 7 * 512, 4 * 1024, 5 * 1024, 6 * 1024, 7 * 1024, 8 * 1024, 10 * 1024, 12 * 1024, 16 * 1024, 32 * 1024, 64 * 1024}
    40  
    41  	for _, fileSize := range fileSizes {
    42  		filePaths, err := createDummyFiles(numFiles, fileSize)
    43  		if err != nil {
    44  			b.Fatal(err)
    45  		}
    46  
    47  		b.Run(fmt.Sprintf("FileSize%dKB", fileSize/1024), func(b *testing.B) {
    48  			e := NewSimpleEditor(80) // Assuming your Editor constructor is named NewSimpleEditor
    49  			for i := 0; i < b.N; i++ {
    50  				for _, filePath := range filePaths {
    51  					_ = e.ReadFileAndProcessLines(filePath)
    52  				}
    53  			}
    54  		})
    55  
    56  		// Clean up dummy files
    57  		for _, filePath := range filePaths {
    58  			os.Remove(filePath)
    59  		}
    60  	}
    61  }