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  }