Guest User

Untitled

a guest
Mar 19th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "io/ioutil"
  6. "log"
  7. "math/rand"
  8. "os"
  9. "strings"
  10. "time"
  11.  
  12. randomdata "github.com/Pallinder/go-randomdata"
  13. "github.com/stretchr/powerwalk"
  14. )
  15.  
  16. func main() {
  17. MkdirAll()
  18.  
  19. smallCh := genSmallContent()
  20. err := powerwalk.WalkLimit("CTI_LOG", func(path string, info os.FileInfo, err error) error {
  21. if err != nil {
  22. fmt.Printf("prevent panic by handling failure accessing a path %q: %v\n", "CTI_LOG", err)
  23. return err
  24. }
  25. if info.IsDir() {
  26. return nil
  27. }
  28. err = ioutil.WriteFile(path, <-smallCh, os.ModePerm)
  29. // log.Println(path, err)
  30. return err
  31. }, 10)
  32.  
  33. if err != nil {
  34. fmt.Printf("error walking the path %q: %v\n", "CTI_LOG", err)
  35. }
  36.  
  37. bigCh := genBigContent()
  38. err = powerwalk.WalkLimit("CTI_DUMP", func(path string, info os.FileInfo, err error) error {
  39. if err != nil {
  40. fmt.Printf("prevent panic by handling failure accessing a path %q: %v\n", "CTI_DUMP", err)
  41. return err
  42. }
  43. if info.IsDir() {
  44. return nil
  45. }
  46. err = ioutil.WriteFile(path, <-bigCh, os.ModePerm)
  47. // log.Println(path, err)
  48. return err
  49. }, 10)
  50.  
  51. if err != nil {
  52. fmt.Printf("error walking the path %q: %v\n", "CTI_DUMP", err)
  53. }
  54. }
  55.  
  56. func genSmallContent() chan []byte {
  57. ch := make(chan []byte, 10)
  58. go func() {
  59. for {
  60. ch <- []byte(strings.Repeat(randomdata.Country(randomdata.FullCountry), 501))
  61. }
  62. }()
  63. return ch
  64. }
  65.  
  66. func genBigContent() chan []byte {
  67. ch := make(chan []byte, 10)
  68. go func() {
  69. for {
  70. ch <- []byte(strings.Repeat(randomdata.Country(randomdata.FullCountry), 2001))
  71. }
  72. }()
  73. return ch
  74. }
  75.  
  76. func MkdirAll() {
  77. for day := 1; day <= 31; day++ {
  78. for month := 8; month <= 12; month++ {
  79. mkdirAll(fmt.Sprintf("CTI_LOG/LOG_2016_%02d", month))
  80. mkdirAll(fmt.Sprintf("CTI_LOG/DBG_2016_%02d", month))
  81. mkdirAll(fmt.Sprintf("CTI_DUMP/DUMP_2016_%02d", month))
  82. touch(fmt.Sprintf("CTI_LOG/LOG_2016_%02d/LT_%02d%02d_01.log", month, month, day), 2016, month, day)
  83. touch(fmt.Sprintf("CTI_LOG/DBG_2016_%02d/LT_%02d%02d_01.dbg", month, month, day), 2016, month, day)
  84. touch(fmt.Sprintf("CTI_DUMP/DUMP_2016_%02d/LT_%02d%02d.dmp", month, month, day), 2016, month, day)
  85. }
  86. for month := 1; month <= 12; month++ {
  87. mkdirAll(fmt.Sprintf("CTI_LOG/DBG_2017_%02d", month))
  88. mkdirAll(fmt.Sprintf("CTI_LOG/LOG_2017_%02d", month))
  89. mkdirAll(fmt.Sprintf("CTI_DUMP/DUMP_2017_%02d", month))
  90. touch(fmt.Sprintf("CTI_LOG/LOG_2017_%02d/LT_%02d%02d_01.log", month, month, day), 2017, month, day)
  91. touch(fmt.Sprintf("CTI_LOG/DBG_2017_%02d/LT_%02d%02d_01.dbg", month, month, day), 2017, month, day)
  92. touch(fmt.Sprintf("CTI_DUMP/DUMP_2017_%02d/LT_%02d%02d.dmp", month, month, day), 2017, month, day)
  93. }
  94. for month := 1; month <= 2; month++ {
  95. mkdirAll(fmt.Sprintf("CTI_LOG/DBG_2018_%02d", month))
  96. mkdirAll(fmt.Sprintf("CTI_LOG/LOG_2018_%02d", month))
  97. mkdirAll(fmt.Sprintf("CTI_DUMP/DUMP_2018_%02d", month))
  98. touch(fmt.Sprintf("CTI_LOG/LOG_2018_%02d/LT_%02d%02d_01.log", month, month, day), 2018, month, day)
  99. touch(fmt.Sprintf("CTI_LOG/DBG_2018_%02d/LT_%02d%02d_01.dbg", month, month, day), 2018, month, day)
  100. touch(fmt.Sprintf("CTI_DUMP/DUMP_2018_%02d/LT_%02d%02d.dmp", month, month, day), 2018, month, day)
  101. }
  102. }
  103. }
  104.  
  105. func mkdirAll(path string) {
  106. if err := os.MkdirAll(path, os.ModePerm); err != nil {
  107. log.Println("Create %v Failed: %v", path, err)
  108. }
  109. }
  110.  
  111. func touch(path string, year, month, day int) {
  112. f, err := os.Create(path)
  113. if err != nil {
  114. log.Println("Create %v Failed: %v", path, err)
  115. return
  116. }
  117. f.Close()
  118. setModifidTime(path, year, month, day)
  119. }
  120.  
  121. func setModifidTime(path string, year, month, day int) {
  122. // t, err := times.Stat(path)
  123. // if err != nil {
  124. // log.Println("Cannot Read %v: %v", path, err)
  125. // return
  126. // }
  127. hour := rand.Intn(24-0) + 0
  128. min := rand.Intn(60-0) + 0
  129. sec := rand.Intn(60-0) + 0
  130. location, _ := time.LoadLocation("Local")
  131. mtime := time.Date(year, time.Month(month), day, hour, min, sec, 0, location)
  132. fmt.Println(mtime)
  133. if err := os.Chtimes(path, mtime, mtime); err != nil {
  134. log.Println("Cannot Update ModTime %v: %v", path, err)
  135. return
  136. }
  137. }
Add Comment
Please, Sign In to add comment