github.com/ndau/noms@v1.0.5/go/nbs/benchmarks/chunker/main.go (about) 1 // Copyright 2016 Attic Labs, Inc. All rights reserved. 2 // Licensed under the Apache License, version 2.0: 3 // http://www.apache.org/licenses/LICENSE-2.0 4 5 package main 6 7 import ( 8 "os" 9 10 "github.com/attic-labs/kingpin" 11 "github.com/dustin/go-humanize" 12 13 "github.com/ndau/noms/go/d" 14 "github.com/ndau/noms/go/nbs/benchmarks/gen" 15 ) 16 17 const ( 18 KB = uint64(1 << 10) 19 MB = uint64(1 << 20) 20 averageChunkSize = 4 * KB 21 ) 22 23 var ( 24 genSize = kingpin.Flag("gen", "MiB of data to generate and chunk").Default("1024").Uint64() 25 chunkInput = kingpin.Flag("chunk", "Treat arg as data file to chunk").Bool() 26 fileName = kingpin.Arg("file", "filename").String() 27 ) 28 29 func main() { 30 kingpin.Parse() 31 32 var fd *os.File 33 var err error 34 if *chunkInput { 35 fd, err = os.Open(*fileName) 36 d.Chk.NoError(err) 37 defer fd.Close() 38 } else { 39 fd, err = gen.OpenOrGenerateDataFile(*fileName, (*genSize)*humanize.MiByte) 40 d.Chk.NoError(err) 41 defer fd.Close() 42 } 43 44 cm := gen.OpenOrBuildChunkMap(*fileName+".chunks", fd) 45 defer cm.Close() 46 47 return 48 }