You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
816 B

  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "math/rand"
  6. "os"
  7. )
  8. var (
  9. minSize = flag.Int("minSize", 1024, "min file size")
  10. maxSize = flag.Int("maxSize", 10*1024*1024, "max file size")
  11. fileCount = flag.Int("fileCount", 1, "number of files to write")
  12. blockSize = flag.Int("blockSizeKB", 4, "write block size")
  13. toDir = flag.String("dir", ".", "destination directory")
  14. )
  15. func check(e error) {
  16. if e != nil {
  17. panic(e)
  18. }
  19. }
  20. func main() {
  21. flag.Parse()
  22. block := make([]byte, *blockSize)
  23. for i := 0; i < *fileCount; i++ {
  24. f, err := os.Create(fmt.Sprintf("%s/file%05d", *toDir, i))
  25. check(err)
  26. fileSize := *minSize + rand.Intn(*maxSize-*minSize)
  27. for x := 0; x < fileSize; {
  28. rand.Read(block)
  29. _, err = f.Write(block)
  30. check(err)
  31. x += *blockSize
  32. }
  33. err = f.Close()
  34. check(err)
  35. }
  36. }