Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "io/ioutil"
- "log"
- "math/rand"
- "os"
- "strings"
- "time"
- randomdata "github.com/Pallinder/go-randomdata"
- "github.com/stretchr/powerwalk"
- )
- func main() {
- MkdirAll()
- smallCh := genSmallContent()
- err := powerwalk.WalkLimit("CTI_LOG", func(path string, info os.FileInfo, err error) error {
- if err != nil {
- fmt.Printf("prevent panic by handling failure accessing a path %q: %v\n", "CTI_LOG", err)
- return err
- }
- if info.IsDir() {
- return nil
- }
- err = ioutil.WriteFile(path, <-smallCh, os.ModePerm)
- // log.Println(path, err)
- return err
- }, 10)
- if err != nil {
- fmt.Printf("error walking the path %q: %v\n", "CTI_LOG", err)
- }
- bigCh := genBigContent()
- err = powerwalk.WalkLimit("CTI_DUMP", func(path string, info os.FileInfo, err error) error {
- if err != nil {
- fmt.Printf("prevent panic by handling failure accessing a path %q: %v\n", "CTI_DUMP", err)
- return err
- }
- if info.IsDir() {
- return nil
- }
- err = ioutil.WriteFile(path, <-bigCh, os.ModePerm)
- // log.Println(path, err)
- return err
- }, 10)
- if err != nil {
- fmt.Printf("error walking the path %q: %v\n", "CTI_DUMP", err)
- }
- }
- func genSmallContent() chan []byte {
- ch := make(chan []byte, 10)
- go func() {
- for {
- ch <- []byte(strings.Repeat(randomdata.Country(randomdata.FullCountry), 501))
- }
- }()
- return ch
- }
- func genBigContent() chan []byte {
- ch := make(chan []byte, 10)
- go func() {
- for {
- ch <- []byte(strings.Repeat(randomdata.Country(randomdata.FullCountry), 2001))
- }
- }()
- return ch
- }
- func MkdirAll() {
- for day := 1; day <= 31; day++ {
- for month := 8; month <= 12; month++ {
- mkdirAll(fmt.Sprintf("CTI_LOG/LOG_2016_%02d", month))
- mkdirAll(fmt.Sprintf("CTI_LOG/DBG_2016_%02d", month))
- mkdirAll(fmt.Sprintf("CTI_DUMP/DUMP_2016_%02d", month))
- touch(fmt.Sprintf("CTI_LOG/LOG_2016_%02d/LT_%02d%02d_01.log", month, month, day), 2016, month, day)
- touch(fmt.Sprintf("CTI_LOG/DBG_2016_%02d/LT_%02d%02d_01.dbg", month, month, day), 2016, month, day)
- touch(fmt.Sprintf("CTI_DUMP/DUMP_2016_%02d/LT_%02d%02d.dmp", month, month, day), 2016, month, day)
- }
- for month := 1; month <= 12; month++ {
- mkdirAll(fmt.Sprintf("CTI_LOG/DBG_2017_%02d", month))
- mkdirAll(fmt.Sprintf("CTI_LOG/LOG_2017_%02d", month))
- mkdirAll(fmt.Sprintf("CTI_DUMP/DUMP_2017_%02d", month))
- touch(fmt.Sprintf("CTI_LOG/LOG_2017_%02d/LT_%02d%02d_01.log", month, month, day), 2017, month, day)
- touch(fmt.Sprintf("CTI_LOG/DBG_2017_%02d/LT_%02d%02d_01.dbg", month, month, day), 2017, month, day)
- touch(fmt.Sprintf("CTI_DUMP/DUMP_2017_%02d/LT_%02d%02d.dmp", month, month, day), 2017, month, day)
- }
- for month := 1; month <= 2; month++ {
- mkdirAll(fmt.Sprintf("CTI_LOG/DBG_2018_%02d", month))
- mkdirAll(fmt.Sprintf("CTI_LOG/LOG_2018_%02d", month))
- mkdirAll(fmt.Sprintf("CTI_DUMP/DUMP_2018_%02d", month))
- touch(fmt.Sprintf("CTI_LOG/LOG_2018_%02d/LT_%02d%02d_01.log", month, month, day), 2018, month, day)
- touch(fmt.Sprintf("CTI_LOG/DBG_2018_%02d/LT_%02d%02d_01.dbg", month, month, day), 2018, month, day)
- touch(fmt.Sprintf("CTI_DUMP/DUMP_2018_%02d/LT_%02d%02d.dmp", month, month, day), 2018, month, day)
- }
- }
- }
- func mkdirAll(path string) {
- if err := os.MkdirAll(path, os.ModePerm); err != nil {
- log.Println("Create %v Failed: %v", path, err)
- }
- }
- func touch(path string, year, month, day int) {
- f, err := os.Create(path)
- if err != nil {
- log.Println("Create %v Failed: %v", path, err)
- return
- }
- f.Close()
- setModifidTime(path, year, month, day)
- }
- func setModifidTime(path string, year, month, day int) {
- // t, err := times.Stat(path)
- // if err != nil {
- // log.Println("Cannot Read %v: %v", path, err)
- // return
- // }
- hour := rand.Intn(24-0) + 0
- min := rand.Intn(60-0) + 0
- sec := rand.Intn(60-0) + 0
- location, _ := time.LoadLocation("Local")
- mtime := time.Date(year, time.Month(month), day, hour, min, sec, 0, location)
- fmt.Println(mtime)
- if err := os.Chtimes(path, mtime, mtime); err != nil {
- log.Println("Cannot Update ModTime %v: %v", path, err)
- return
- }
- }
Add Comment
Please, Sign In to add comment