LCOV - code coverage report
Current view: top level - pebble/internal/mkbench - main.go (source / functions) Hit Total Coverage
Test: 2024-05-24 08:16Z 8b278ee8 - tests + meta.lcov Lines: 13 18 72.2 %
Date: 2024-05-24 08:19:06 Functions: 0 0 -

          Line data    Source code
       1             : // Copyright 2021 The LevelDB-Go and Pebble Authors. All rights reserved. Use
       2             : // of this source code is governed by a BSD-style license that can be found in
       3             : // the LICENSE file.
       4             : 
       5             : // mkbench is a utility for processing the raw nightly benchmark data in JSON
       6             : // data that can be visualized by docs/js/app.js. The raw data is expected to
       7             : // be stored in dated directories underneath the "data/" directory:
       8             : //
       9             : //      data/YYYYMMDD/.../<file>
      10             : //
      11             : // The files are expected to be bzip2 compressed. Within each file mkbench
      12             : // looks for Go-bench-style lines of the form:
      13             : //
      14             : //      Benchmark<name> %d %f ops/sec %d read %d write %f r-amp %f w-amp
      15             : //
      16             : // The output is written to "data.js". In order to avoid reading all of the raw
      17             : // data to regenerate "data.js" on every run, mkbench first reads "data.js",
      18             : // noting which days have already been processed and exluding files in those
      19             : // directories from being read. This has the additional effect of merging the
      20             : // existing "data.js" with new raw data, which avoids needing to have all of
      21             : // the raw data present to construct a new "data.js" (only the new raw data is
      22             : // necessary).
      23             : //
      24             : // The nightly Pebble benchmarks are orchestrated from the CockroachDB
      25             : // repo:
      26             : //
      27             : //      https://github.com/cockroachdb/cockroach/blob/master/build/teamcity-nightly-pebble.sh
      28             : package main
      29             : 
      30             : import (
      31             :         "os"
      32             : 
      33             :         "github.com/spf13/cobra"
      34             : )
      35             : 
      36             : var rootCmd = &cobra.Command{
      37             :         Use:   "mkbench",
      38             :         Short: "pebble benchmark data tools",
      39             : }
      40             : 
      41           1 : func init() {
      42           1 :         y := getYCSBCommand()
      43           1 :         rootCmd.AddCommand(getYCSBCommand())
      44           1 :         rootCmd.AddCommand(getWriteCommand())
      45           1 :         rootCmd.SilenceUsage = true
      46           1 : 
      47           1 :         // For backwards compatability, the YCSB command is run, with the same
      48           1 :         // flags, if a subcommand is not specified.
      49           1 :         // TODO(travers): Remove this after updating the call site in the
      50           1 :         // nightly-pebble script in cockroach.
      51           1 :         *rootCmd.Flags() = *y.Flags()
      52           1 :         rootCmd.RunE = y.RunE
      53           1 : }
      54             : 
      55           0 : func main() {
      56           0 :         if err := rootCmd.Execute(); err != nil {
      57           0 :                 // Cobra has already printed the error message.
      58           0 :                 os.Exit(1)
      59           0 :         }
      60             : }

Generated by: LCOV version 1.14