From 9ed6bc4572c45086495ca67034348de8b86ee304 Mon Sep 17 00:00:00 2001 From: Klaus Post Date: Mon, 6 Jan 2025 17:20:40 +0100 Subject: [PATCH] Replace generator Merge random source generator from https://github.com/minio/pkg/pull/147 Sideeffects: * Remove CSV source (never used) * Remove select benchmark (not really useful and select is deprecated by AWS anyway) * Upgrade pkg to v3 --- api/api.go | 2 +- cli/analyze.go | 2 +- cli/benchclient.go | 2 +- cli/benchmark.go | 2 +- cli/cli.go | 7 +- cli/client.go | 6 +- cli/clientmode.go | 2 +- cli/cmp.go | 2 +- cli/delete.go | 2 +- cli/fanout.go | 2 +- cli/flags.go | 2 +- cli/generator.go | 22 ---- cli/get.go | 2 +- cli/list.go | 2 +- cli/merge.go | 2 +- cli/mixed.go | 2 +- cli/multipart.go | 2 +- cli/print.go | 2 +- cli/progress-bar.go | 2 +- cli/put.go | 2 +- cli/retention.go | 2 +- cli/rlimit.go | 2 +- cli/select.go | 100 ------------------ cli/snowball.go | 2 +- cli/stat.go | 2 +- cli/versioned.go | 2 +- cli/zip.go | 2 +- go.mod | 60 ++++++----- go.sum | 182 ++++++++++++-------------------- pkg/bench/benchmark.go | 2 +- pkg/bench/collector.go | 2 +- pkg/bench/delete.go | 2 +- pkg/bench/get.go | 2 +- pkg/bench/list.go | 2 +- pkg/bench/mixed.go | 2 +- pkg/bench/multipart.go | 2 +- pkg/bench/ops.go | 2 +- pkg/bench/retention.go | 2 +- pkg/bench/s3zip.go | 2 +- pkg/bench/select.go | 2 +- pkg/bench/stat.go | 2 +- pkg/bench/versioned.go | 2 +- pkg/generator/circular.go | 121 --------------------- pkg/generator/csv.go | 166 ----------------------------- pkg/generator/generator_test.go | 64 +---------- pkg/generator/options.go | 2 - pkg/generator/random.go | 21 ++-- pkg/generator/scambler.go | 126 ---------------------- 48 files changed, 151 insertions(+), 798 deletions(-) delete mode 100644 cli/select.go delete mode 100644 pkg/generator/circular.go delete mode 100644 pkg/generator/csv.go delete mode 100644 pkg/generator/scambler.go diff --git a/api/api.go b/api/api.go index f0edbe3c..1f0868f1 100644 --- a/api/api.go +++ b/api/api.go @@ -27,7 +27,7 @@ import ( "time" "github.com/klauspost/compress/zstd" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/aggregate" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/analyze.go b/cli/analyze.go index 1954251a..0cf755b1 100644 --- a/cli/analyze.go +++ b/cli/analyze.go @@ -32,7 +32,7 @@ import ( "github.com/klauspost/compress/zstd" "github.com/minio/cli" "github.com/minio/mc/pkg/probe" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/api" "github.com/minio/warp/pkg/aggregate" "github.com/minio/warp/pkg/bench" diff --git a/cli/benchclient.go b/cli/benchclient.go index 80ef0a7d..86933c95 100644 --- a/cli/benchclient.go +++ b/cli/benchclient.go @@ -27,7 +27,7 @@ import ( "time" "github.com/minio/cli" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" "github.com/minio/websocket" ) diff --git a/cli/benchmark.go b/cli/benchmark.go index 46ef82f5..a9dbd0ab 100644 --- a/cli/benchmark.go +++ b/cli/benchmark.go @@ -34,7 +34,7 @@ import ( "github.com/minio/cli" "github.com/minio/madmin-go/v3" "github.com/minio/mc/pkg/probe" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/api" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/cli.go b/cli/cli.go index 8decd149..4b2c0c33 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -31,9 +31,9 @@ import ( "github.com/cheggaaa/pb" "github.com/minio/cli" "github.com/minio/mc/pkg/probe" - "github.com/minio/pkg/v2/console" - "github.com/minio/pkg/v2/trie" - "github.com/minio/pkg/v2/words" + "github.com/minio/pkg/v3/console" + "github.com/minio/pkg/v3/trie" + "github.com/minio/pkg/v3/words" "github.com/minio/warp/pkg" completeinstall "github.com/posener/complete/cmd/install" ) @@ -91,7 +91,6 @@ func init() { deleteCmd, listCmd, statCmd, - selectCmd, versionedCmd, retentionCmd, multipartCmd, diff --git a/cli/client.go b/cli/client.go index 4b097861..53afde13 100644 --- a/cli/client.go +++ b/cli/client.go @@ -38,9 +38,9 @@ import ( md5simd "github.com/minio/md5-simd" "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7/pkg/credentials" - "github.com/minio/pkg/v2/certs" - "github.com/minio/pkg/v2/console" - "github.com/minio/pkg/v2/ellipses" + "github.com/minio/pkg/v3/certs" + "github.com/minio/pkg/v3/console" + "github.com/minio/pkg/v3/ellipses" "github.com/minio/warp/pkg" "golang.org/x/net/http2" ) diff --git a/cli/clientmode.go b/cli/clientmode.go index e10fac04..14efc3ea 100644 --- a/cli/clientmode.go +++ b/cli/clientmode.go @@ -24,7 +24,7 @@ import ( "github.com/minio/cli" "github.com/minio/mc/pkg/probe" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" ) var clientFlags = []cli.Flag{} diff --git a/cli/cmp.go b/cli/cmp.go index 29ed5ba4..c042d0b1 100644 --- a/cli/cmp.go +++ b/cli/cmp.go @@ -26,7 +26,7 @@ import ( "github.com/klauspost/compress/zstd" "github.com/minio/cli" "github.com/minio/mc/pkg/probe" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/delete.go b/cli/delete.go index a0839228..bdebf4fd 100644 --- a/cli/delete.go +++ b/cli/delete.go @@ -19,7 +19,7 @@ package cli import ( "github.com/minio/cli" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/fanout.go b/cli/fanout.go index 889ddb59..36552dcf 100644 --- a/cli/fanout.go +++ b/cli/fanout.go @@ -19,7 +19,7 @@ package cli import ( "github.com/minio/cli" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/flags.go b/cli/flags.go index b30b6a06..af9eefb0 100644 --- a/cli/flags.go +++ b/cli/flags.go @@ -24,7 +24,7 @@ import ( "github.com/minio/cli" "github.com/minio/mc/pkg/probe" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" "github.com/minio/warp/pkg/generator" diff --git a/cli/generator.go b/cli/generator.go index 7dfb3d22..31d2c5f9 100644 --- a/cli/generator.go +++ b/cli/generator.go @@ -43,26 +43,6 @@ var genFlags = []cli.Flag{ }, } -func newGenSourceCSV(ctx *cli.Context) func() generator.Source { - prefixSize := 8 - if ctx.Bool("noprefix") { - prefixSize = 0 - } - - g := generator.WithCSV().Size(25, 1000) - - size, err := toSize(ctx.String("obj.size")) - fatalIf(probe.NewError(err), "Invalid obj.size specified") - src, err := generator.NewFn(g.Apply(), - generator.WithCustomPrefix(ctx.String("prefix")), - generator.WithPrefixSize(prefixSize), - generator.WithSize(int64(size)), - generator.WithRandomSize(ctx.Bool("obj.randsize")), - ) - fatalIf(probe.NewError(err), "Unable to create data generator") - return src -} - // newGenSource returns a new generator func newGenSource(ctx *cli.Context, sizeField string) func() generator.Source { prefixSize := 8 @@ -74,8 +54,6 @@ func newGenSource(ctx *cli.Context, sizeField string) func() generator.Source { switch ctx.String("obj.generator") { case "random": g = generator.WithRandomData() - case "csv": - g = generator.WithCSV().Size(25, 1000) default: err := errors.New("unknown generator type:" + ctx.String("obj.generator")) fatal(probe.NewError(err), "Invalid -generator parameter") diff --git a/cli/get.go b/cli/get.go index 4256ba64..09eccbe9 100644 --- a/cli/get.go +++ b/cli/get.go @@ -20,7 +20,7 @@ package cli import ( "github.com/minio/cli" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/list.go b/cli/list.go index 5341f4ee..9a632418 100644 --- a/cli/list.go +++ b/cli/list.go @@ -19,7 +19,7 @@ package cli import ( "github.com/minio/cli" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/merge.go b/cli/merge.go index 4a544f68..4edff681 100644 --- a/cli/merge.go +++ b/cli/merge.go @@ -26,7 +26,7 @@ import ( "github.com/klauspost/compress/zstd" "github.com/minio/cli" "github.com/minio/mc/pkg/probe" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/mixed.go b/cli/mixed.go index 237ac8ac..9c476288 100644 --- a/cli/mixed.go +++ b/cli/mixed.go @@ -23,7 +23,7 @@ import ( "github.com/minio/cli" "github.com/minio/mc/pkg/probe" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/multipart.go b/cli/multipart.go index d8f8c55b..17773ecc 100644 --- a/cli/multipart.go +++ b/cli/multipart.go @@ -22,7 +22,7 @@ import ( "github.com/minio/cli" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/print.go b/cli/print.go index 85ad0eff..f9e2d146 100644 --- a/cli/print.go +++ b/cli/print.go @@ -26,7 +26,7 @@ import ( "github.com/cheggaaa/pb" "github.com/minio/mc/pkg/probe" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" ) // causeMessage container for golang error messages diff --git a/cli/progress-bar.go b/cli/progress-bar.go index b5ddae6c..5795758e 100644 --- a/cli/progress-bar.go +++ b/cli/progress-bar.go @@ -24,7 +24,7 @@ import ( "github.com/cheggaaa/pb" "github.com/fatih/color" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" ) // progress extender. diff --git a/cli/put.go b/cli/put.go index c424014c..1ae68d63 100644 --- a/cli/put.go +++ b/cli/put.go @@ -24,7 +24,7 @@ import ( "github.com/minio/cli" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/retention.go b/cli/retention.go index 9cea5c77..816e680e 100644 --- a/cli/retention.go +++ b/cli/retention.go @@ -19,7 +19,7 @@ package cli import ( "github.com/minio/cli" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/rlimit.go b/cli/rlimit.go index c5ac549c..5a60d641 100644 --- a/cli/rlimit.go +++ b/cli/rlimit.go @@ -20,7 +20,7 @@ package cli import ( "runtime/debug" - "github.com/minio/pkg/v2/sys" + "github.com/minio/pkg/v3/sys" ) func setMaxResources() (err error) { diff --git a/cli/select.go b/cli/select.go deleted file mode 100644 index 9879213f..00000000 --- a/cli/select.go +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Warp (C) 2023 MinIO, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package cli - -import ( - "github.com/minio/cli" - "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" - "github.com/minio/warp/pkg/bench" -) - -var selectFlags = []cli.Flag{ - cli.IntFlag{ - Name: "objects", - Value: 2500, - Usage: "Number of objects to upload.", - }, - cli.StringFlag{ - Name: "obj.size", - Value: "10MiB", - Usage: "Size of each generated object. Can be a number or 10KiB/MiB/GiB. All sizes are base 2 binary.", - }, - cli.StringFlag{ - Name: "query", - Value: "select * from s3object", - Usage: "select query expression", - }, -} - -var selectCmd = cli.Command{ - Name: "select", - Usage: "benchmark select objects", - Action: mainSelect, - Before: setGlobalsFromContext, - Flags: combineFlags(globalFlags, ioFlags, selectFlags, genFlags, benchFlags, analyzeFlags), - CustomHelpTemplate: `NAME: - {{.HelpName}} - {{.Usage}} - -USAGE: - {{.HelpName}} [FLAGS] - -> see https://github.com/minio/warp - -FLAGS: - {{range .VisibleFlags}}{{.}} - {{end}}`, -} - -// mainSelect is the entry point for select command. -func mainSelect(ctx *cli.Context) error { - checkSelectSyntax(ctx) - sse := newSSE(ctx) - b := bench.Select{ - Common: getCommon(ctx, newGenSourceCSV(ctx)), - CreateObjects: ctx.Int("objects"), - SelectOpts: minio.SelectObjectOptions{ - Expression: ctx.String("query"), - ExpressionType: minio.QueryExpressionTypeSQL, - // Set any encryption headers - ServerSideEncryption: sse, - // TODO: support all variations including, json/parquet - InputSerialization: minio.SelectObjectInputSerialization{ - CSV: &minio.CSVInputOptions{ - RecordDelimiter: "\n", - FieldDelimiter: ",", - FileHeaderInfo: minio.CSVFileHeaderInfoUse, - }, - }, - OutputSerialization: minio.SelectObjectOutputSerialization{ - CSV: &minio.CSVOutputOptions{ - RecordDelimiter: "\n", - FieldDelimiter: ",", - }, - }, - }, - } - return runBench(ctx, &b) -} - -func checkSelectSyntax(ctx *cli.Context) { - if ctx.Int("objects") < 1 { - console.Fatal("At least one object must be tested") - } - checkAnalyze(ctx) - checkBenchmark(ctx) -} diff --git a/cli/snowball.go b/cli/snowball.go index 733653dd..3ff61e0e 100644 --- a/cli/snowball.go +++ b/cli/snowball.go @@ -20,7 +20,7 @@ package cli import ( "github.com/minio/cli" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/stat.go b/cli/stat.go index a0278d9c..5b36f55d 100644 --- a/cli/stat.go +++ b/cli/stat.go @@ -20,7 +20,7 @@ package cli import ( "github.com/minio/cli" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/versioned.go b/cli/versioned.go index 4cba3e44..b7a14cf4 100644 --- a/cli/versioned.go +++ b/cli/versioned.go @@ -23,7 +23,7 @@ import ( "github.com/minio/cli" "github.com/minio/mc/pkg/probe" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/cli/zip.go b/cli/zip.go index 01b04506..55ae8149 100644 --- a/cli/zip.go +++ b/cli/zip.go @@ -22,7 +22,7 @@ import ( "time" "github.com/minio/cli" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/bench" ) diff --git a/go.mod b/go.mod index 612b532b..945a8041 100644 --- a/go.mod +++ b/go.mod @@ -6,21 +6,20 @@ require ( github.com/bygui86/multi-profile/v2 v2.1.0 github.com/cheggaaa/pb v1.0.29 github.com/dustin/go-humanize v1.0.1 - github.com/fatih/color v1.17.0 + github.com/fatih/color v1.18.0 github.com/influxdata/influxdb-client-go/v2 v2.13.0 github.com/jfsmig/prng v0.0.2 - github.com/klauspost/compress v1.17.9 + github.com/klauspost/compress v1.17.11 github.com/minio/cli v1.24.2 - github.com/minio/madmin-go/v3 v3.0.51 + github.com/minio/madmin-go/v3 v3.0.78 github.com/minio/mc v0.0.0-20240513163111-b46cf3c417f6 github.com/minio/md5-simd v1.1.2 - github.com/minio/minio-go/v7 v7.0.75-0.20240805152911-fd0e50784915 - github.com/minio/pkg/v2 v2.0.19 + github.com/minio/minio-go/v7 v7.0.82 + github.com/minio/pkg/v3 v3.0.26-0.20250106155027-2becdc33e233 github.com/minio/websocket v1.6.0 github.com/posener/complete v1.2.3 - github.com/secure-io/sio-go v0.3.1 - golang.org/x/net v0.26.0 - golang.org/x/time v0.5.0 + golang.org/x/net v0.32.0 + golang.org/x/time v0.6.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -29,46 +28,49 @@ require ( github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/go-ini/ini v1.67.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect - github.com/goccy/go-json v0.10.3 // indirect + github.com/goccy/go-json v0.10.4 // indirect github.com/golang-jwt/jwt/v4 v4.5.1 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf // indirect - github.com/klauspost/cpuid/v2 v2.2.8 // indirect - github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect + github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/lestrrat-go/blackmagic v1.0.2 // indirect github.com/lestrrat-go/httpcc v1.0.1 // indirect + github.com/lestrrat-go/httprc v1.0.6 // indirect github.com/lestrrat-go/iter v1.0.2 // indirect - github.com/lestrrat-go/jwx v1.2.29 // indirect + github.com/lestrrat-go/jwx/v2 v2.1.3 // indirect github.com/lestrrat-go/option v1.0.1 // indirect - github.com/lufia/plan9stats v0.0.0-20240408141607-282e7b5d6b74 // indirect + github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oapi-codegen/runtime v1.0.0 // indirect - github.com/philhofer/fwd v1.1.2 // indirect - github.com/pkg/errors v0.9.1 // indirect + github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.53.0 // indirect - github.com/prometheus/procfs v0.14.0 // indirect - github.com/prometheus/prom2json v1.3.3 // indirect + github.com/prometheus/common v0.61.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/prom2json v1.4.1 // indirect + github.com/prometheus/prometheus v0.300.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rjeczalik/notify v0.9.3 // indirect - github.com/rs/xid v1.5.0 // indirect - github.com/safchain/ethtool v0.3.0 // indirect - github.com/shirou/gopsutil/v3 v3.24.4 // indirect + github.com/rs/xid v1.6.0 // indirect + github.com/safchain/ethtool v0.5.9 // indirect + github.com/secure-io/sio-go v0.3.1 // indirect + github.com/segmentio/asm v1.2.0 // indirect + github.com/shirou/gopsutil/v3 v3.24.5 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect - github.com/tinylib/msgp v1.1.9 // indirect + github.com/tinylib/msgp v1.2.5 // indirect github.com/tklauser/go-sysconf v0.3.14 // indirect - github.com/tklauser/numcpus v0.8.0 // indirect + github.com/tklauser/numcpus v0.9.0 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect - google.golang.org/protobuf v1.34.1 // indirect + golang.org/x/crypto v0.31.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/protobuf v1.35.2 // indirect ) diff --git a/go.sum b/go.sum index 41c3bb33..7923793f 100644 --- a/go.sum +++ b/go.sum @@ -8,32 +8,27 @@ github.com/bygui86/multi-profile/v2 v2.1.0/go.mod h1:f4qCZiQo1nnJdwbPoADUtdDXg3h github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= -github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= -github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM= +github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -51,31 +46,29 @@ github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf/go.mod h1 github.com/jfsmig/prng v0.0.2 h1:aZun+YgmBnUyhqvI+EDjwmOYc1kCPsihdEr9V/1YlGA= github.com/jfsmig/prng v0.0.2/go.mod h1:bz1fX1aizp8/Lu1thLzfirh5uExjC1lVwB8SSt6ExpE= github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= -github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= +github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/lestrrat-go/backoff/v2 v2.0.8 h1:oNb5E5isby2kiro9AgdHLv5N5tint1AnDVVf2E2un5A= -github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= github.com/lestrrat-go/blackmagic v1.0.2 h1:Cg2gVSc9h7sz9NOByczrbUvLopQmXrfFx//N+AkAr5k= github.com/lestrrat-go/blackmagic v1.0.2/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU= github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= +github.com/lestrrat-go/httprc v1.0.6 h1:qgmgIRhpvBqexMJjA/PmwSvhNk679oqD1RbovdCGW8k= +github.com/lestrrat-go/httprc v1.0.6/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo= github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI= github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= -github.com/lestrrat-go/jwx v1.2.29 h1:QT0utmUJ4/12rmsVQrJ3u55bycPkKqGYuGT4tyRhxSQ= -github.com/lestrrat-go/jwx v1.2.29/go.mod h1:hU8k2l6WF0ncx20uQdOmik/Gjg6E3/wIRtXSNFeZuB8= -github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= +github.com/lestrrat-go/jwx/v2 v2.1.3 h1:Ud4lb2QuxRClYAmRleF50KrbKIoM1TddXgBrneT5/Jo= +github.com/lestrrat-go/jwx/v2 v2.1.3/go.mod h1:q6uFgbgZfEmQrfJfrCo90QcQOcXFMfbI/fO0NqRtvZo= github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/lufia/plan9stats v0.0.0-20240408141607-282e7b5d6b74 h1:1KuuSOy4ZNgW0KA2oYIngXVFhQcXxhLqCVK7cBcldkk= -github.com/lufia/plan9stats v0.0.0-20240408141607-282e7b5d6b74/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= +github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 h1:7UMa6KCCMjZEMDtTVdcGu0B1GmmC7QJKiCCjyTAWQy0= +github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= @@ -85,48 +78,49 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/minio/cli v1.24.2 h1:J+fCUh9mhPLjN3Lj/YhklXvxj8mnyE/D6FpFduXJ2jg= github.com/minio/cli v1.24.2/go.mod h1:bYxnK0uS629N3Bq+AOZZ+6lwF77Sodk4+UL9vNuXhOY= -github.com/minio/madmin-go/v3 v3.0.51 h1:brGOvDP8KvoHb/bdzCHUPFCbTtrN8o507uPHZpyuinM= -github.com/minio/madmin-go/v3 v3.0.51/go.mod h1:IFAwr0XMrdsLovxAdCcuq/eoL4nRuMVQQv0iubJANQw= +github.com/minio/madmin-go/v3 v3.0.78 h1:JHUZU8akWSu8UF+mIBpsOSLtOG9b4ZTZVz3TShLbYn4= +github.com/minio/madmin-go/v3 v3.0.78/go.mod h1:IZOL4lEMiJ4QN2iWQjkOIIthcVuNYU7ENF7RkyxlzKY= github.com/minio/mc v0.0.0-20240513163111-b46cf3c417f6 h1:/ILVfsE2Xz9F1oi5oCPgLeGDQzvd/TI9ztD92gdnqR8= github.com/minio/mc v0.0.0-20240513163111-b46cf3c417f6/go.mod h1:AHsPnIxIslIZ4jlX27Hq/ut5FQ7kpxLavdt3Q0XGpT8= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= -github.com/minio/minio-go/v7 v7.0.75-0.20240805152911-fd0e50784915 h1:qRjzKsHt8d+gwgHFKYkbHefvp+DzL8LZi1BN0DvOLXs= -github.com/minio/minio-go/v7 v7.0.75-0.20240805152911-fd0e50784915/go.mod h1:qydcVzV8Hqtj1VtEocfxbmVFa2siu6HGa+LDEPogjD8= +github.com/minio/minio-go/v7 v7.0.82 h1:tWfICLhmp2aFPXL8Tli0XDTHj2VB/fNf0PC1f/i1gRo= +github.com/minio/minio-go/v7 v7.0.82/go.mod h1:84gmIilaX4zcvAWWzJ5Z1WI5axN+hAbM5w25xf8xvC0= github.com/minio/mux v1.9.0 h1:dWafQFyEfGhJvK6AwLOt83bIG5bxKxKJnKMCi0XAaoA= github.com/minio/mux v1.9.0/go.mod h1:1pAare17ZRL5GpmNL+9YmqHoWnLmMZF9C/ioUCfy0BQ= -github.com/minio/pkg/v2 v2.0.19 h1:r187/k/oVH9H0DDwvLY5WipkJaZ4CLd4KI3KgIUExR0= -github.com/minio/pkg/v2 v2.0.19/go.mod h1:luK9LAhQlAPzSuF6F326XSCKjMc1G3Tbh+a9JYwqh8M= +github.com/minio/pkg/v3 v3.0.26-0.20250106155027-2becdc33e233 h1:SR5q/92Xqkj2Zg3O3sPnJvms+/ZMN5W1mSiA3htdnhc= +github.com/minio/pkg/v3 v3.0.26-0.20250106155027-2becdc33e233/go.mod h1:mIaN552nu0D2jiSk5BQC8LB25f44ytbOBJCuLtksX7Q= github.com/minio/websocket v1.6.0 h1:CPvnQvNvlVaQmvw5gtJNyYQhg4+xRmrPNhBbv8BdpAE= github.com/minio/websocket v1.6.0/go.mod h1:COH1CePZfHT9Ec1O7vZjTlX5uEPpyYnrifPNbu665DM= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo= github.com/oapi-codegen/runtime v1.0.0/go.mod h1:LmCUMQuPB4M/nLXilQXhHw+BLZdDb18B34OO356yJ/A= -github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= -github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c h1:dAMKvw0MlJT1GshSTtih8C2gDs04w8dReiOGXrGLNoY= +github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= -github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= -github.com/prometheus/procfs v0.14.0 h1:Lw4VdGGoKEZilJsayHf0B+9YgLGREba2C6xr+Fdfq6s= -github.com/prometheus/procfs v0.14.0/go.mod h1:XL+Iwz8k8ZabyZfMFHPiilCniixqQarAy5Mu67pHlNQ= -github.com/prometheus/prom2json v1.3.3 h1:IYfSMiZ7sSOfliBoo89PcufjWO4eAR0gznGcETyaUgo= -github.com/prometheus/prom2json v1.3.3/go.mod h1:Pv4yIPktEkK7btWsrUTWDDDrnpUrAELaOCj+oFwlgmc= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/prom2json v1.4.1 h1:7McxdrHgPEOtMwWjkKtd0v5AhpR2Q6QAnlHKVxq0+tQ= +github.com/prometheus/prom2json v1.4.1/go.mod h1:CzOQykSKFxXuC7ELUZHOHQvwKesQ3eN0p2PWLhFitQM= +github.com/prometheus/prometheus v0.300.1 h1:9KKcTTq80gkzmXW0Et/QCFSrBPgmwiS3Hlcxc6o8KlM= +github.com/prometheus/prometheus v0.300.1/go.mod h1:gtTPY/XVyCdqqnjA3NzDMb0/nc5H9hOu1RMame+gHyM= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= @@ -134,66 +128,46 @@ github.com/rjeczalik/notify v0.9.3 h1:6rJAzHTGKXGj76sbRgDiDcYj/HniypXmSJo1SWakZe github.com/rjeczalik/notify v0.9.3/go.mod h1:gF3zSOrafR9DQEWSE8TjfI9NkooDxbyT4UgRGKZA0lc= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/safchain/ethtool v0.3.0 h1:gimQJpsI6sc1yIqP/y8GYgiXn/NjgvpM0RNoWLVVmP0= -github.com/safchain/ethtool v0.3.0/go.mod h1:SA9BwrgyAqNo7M+uaL6IYbxpm5wk3L7Mm6ocLW+CJUs= +github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/safchain/ethtool v0.5.9 h1://6RvaOKFf3nQ0rl5+8zBbE4/72455VC9Jq61pfq67E= +github.com/safchain/ethtool v0.5.9/go.mod h1:w8oSsZeowyRaM7xJJBAbubzzrOkwO8TBgPSEqPP/5mg= github.com/secure-io/sio-go v0.3.1 h1:dNvY9awjabXTYGsTF1PiCySl9Ltofk9GA3VdWlo7rRc= github.com/secure-io/sio-go v0.3.1/go.mod h1:+xbkjDzPjwh4Axd07pRKSNriS9SCiYksWnZqdnfpQxs= -github.com/shirou/gopsutil/v3 v3.24.4 h1:dEHgzZXt4LMNm+oYELpzl9YCqV65Yr/6SfrvgRBtXeU= -github.com/shirou/gopsutil/v3 v3.24.4/go.mod h1:lTd2mdiOspcqLgAnr9/nGi71NkeMpWKdmhuxm9GusH8= +github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= +github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= +github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= +github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/tinylib/msgp v1.1.9 h1:SHf3yoO2sGA0veCJeCBYLHuttAVFHGm2RHgNodW7wQU= -github.com/tinylib/msgp v1.1.9/go.mod h1:BCXGB54lDD8qUEPmiG0cQQUANC4IUQyB2ItS2UDlO/k= -github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tinylib/msgp v1.2.5 h1:WeQg1whrXRFiZusidTQqzETkRpGjFjcIhW6uqWH09po= +github.com/tinylib/msgp v1.2.5/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0= github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= -github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY= -github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/tklauser/numcpus v0.9.0 h1:lmyCHtANi8aRUgkckBgoDk1nHCux3n2cgkJLXdQGPDo= +github.com/tklauser/numcpus v0.9.0/go.mod h1:SN6Nq1O3VychhC1npsWostA+oW+VOQTxZrS604NSRyI= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -201,46 +175,20 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/bench/benchmark.go b/pkg/bench/benchmark.go index cdb02e96..29cc593e 100644 --- a/pkg/bench/benchmark.go +++ b/pkg/bench/benchmark.go @@ -27,7 +27,7 @@ import ( "time" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/generator" "golang.org/x/time/rate" diff --git a/pkg/bench/collector.go b/pkg/bench/collector.go index 508df949..5b48a914 100644 --- a/pkg/bench/collector.go +++ b/pkg/bench/collector.go @@ -23,7 +23,7 @@ import ( "sync" "time" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" ) type Collector struct { diff --git a/pkg/bench/delete.go b/pkg/bench/delete.go index 7d7bee14..3e0313e8 100644 --- a/pkg/bench/delete.go +++ b/pkg/bench/delete.go @@ -26,7 +26,7 @@ import ( "time" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/generator" ) diff --git a/pkg/bench/get.go b/pkg/bench/get.go index 589e26fb..7ad13b4c 100644 --- a/pkg/bench/get.go +++ b/pkg/bench/get.go @@ -27,7 +27,7 @@ import ( "time" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/generator" ) diff --git a/pkg/bench/list.go b/pkg/bench/list.go index 8c229447..7e9f4006 100644 --- a/pkg/bench/list.go +++ b/pkg/bench/list.go @@ -27,7 +27,7 @@ import ( "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/generator" ) diff --git a/pkg/bench/mixed.go b/pkg/bench/mixed.go index 440347d6..7c8c472a 100644 --- a/pkg/bench/mixed.go +++ b/pkg/bench/mixed.go @@ -28,7 +28,7 @@ import ( "time" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/generator" ) diff --git a/pkg/bench/multipart.go b/pkg/bench/multipart.go index 6dade97f..f1d24211 100644 --- a/pkg/bench/multipart.go +++ b/pkg/bench/multipart.go @@ -29,7 +29,7 @@ import ( "time" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/generator" ) diff --git a/pkg/bench/ops.go b/pkg/bench/ops.go index e0361229..7e8141e9 100644 --- a/pkg/bench/ops.go +++ b/pkg/bench/ops.go @@ -29,7 +29,7 @@ import ( "time" "github.com/dustin/go-humanize" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" ) type Operations []Operation diff --git a/pkg/bench/retention.go b/pkg/bench/retention.go index 3786be5b..e6abf683 100644 --- a/pkg/bench/retention.go +++ b/pkg/bench/retention.go @@ -26,7 +26,7 @@ import ( "time" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/generator" ) diff --git a/pkg/bench/s3zip.go b/pkg/bench/s3zip.go index 72730807..4d7997c5 100644 --- a/pkg/bench/s3zip.go +++ b/pkg/bench/s3zip.go @@ -29,7 +29,7 @@ import ( "time" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/generator" ) diff --git a/pkg/bench/select.go b/pkg/bench/select.go index 155434a3..f1adc9ea 100644 --- a/pkg/bench/select.go +++ b/pkg/bench/select.go @@ -27,7 +27,7 @@ import ( "time" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/generator" ) diff --git a/pkg/bench/stat.go b/pkg/bench/stat.go index 519ac35e..edab0fd3 100644 --- a/pkg/bench/stat.go +++ b/pkg/bench/stat.go @@ -26,7 +26,7 @@ import ( "time" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/generator" ) diff --git a/pkg/bench/versioned.go b/pkg/bench/versioned.go index 11d24114..ee928d5f 100644 --- a/pkg/bench/versioned.go +++ b/pkg/bench/versioned.go @@ -28,7 +28,7 @@ import ( "time" "github.com/minio/minio-go/v7" - "github.com/minio/pkg/v2/console" + "github.com/minio/pkg/v3/console" "github.com/minio/warp/pkg/generator" ) diff --git a/pkg/generator/circular.go b/pkg/generator/circular.go deleted file mode 100644 index df91fd03..00000000 --- a/pkg/generator/circular.go +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Warp (C) 2019-2020 MinIO, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package generator - -import ( - "errors" - "io" -) - -type circularBuffer struct { - data []byte - // left aliases the data at the current read position. - left []byte - - // The total number of bytes to return - // When this - want int64 - read int64 -} - -// Reset will reset the circular buffer. -// The number of bytes to return can be specified. -// If the number of bytes wanted is <= 0 the value will not be updated. -func (c *circularBuffer) Reset(want int64) io.ReadSeeker { - if want > 0 { - c.want = want - } - c.read = 0 - c.left = c.data - return c -} - -// Implement seeker compatible circular buffer, -// implemented for minio-go to allow retries. -func (c *circularBuffer) Seek(offset int64, whence int) (n int64, err error) { - // Switch through whence. - switch whence { - default: - return 0, errors.New("circularBuffer.Seek: invalid whence") - case io.SeekStart: - if offset > c.want { - return 0, io.EOF - } - c.read = offset - case io.SeekCurrent: - if offset+c.read > c.want { - return 0, io.EOF - } - c.read += offset - case io.SeekEnd: - if offset > 0 { - return 0, io.EOF - } - if c.want+offset < 0 { - return 0, io.ErrShortBuffer - } - c.read = c.want + offset - } - if c.read < 0 { - return 0, errors.New("circularBuffer.Seek: negative position") - } - return c.read, nil -} - -// newCircularBuffer returns a new circular buffer. -// Data will be served -func newCircularBuffer(data []byte, size int64) *circularBuffer { - return &circularBuffer{ - data: data, - left: data, - want: size, - read: 0, - } -} - -func (c *circularBuffer) Read(p []byte) (n int, err error) { - if len(c.data) == 0 { - return 0, errors.New("circularBuffer: no data") - } - for len(p) > 0 { - if len(c.left) == 0 { - c.left = c.data - } - remain := c.want - c.read - if remain <= 0 { - if remain != 0 { - panic(remain) - } - return n, io.EOF - } - - // Make sure we don't overread. - toDo := c.left - if int64(len(toDo)) > remain { - toDo = toDo[:remain] - } - - copied := copy(p, toDo) - // Assign remaining back to c.left - c.left = toDo[copied:] - p = p[copied:] - c.read += int64(copied) - n += copied - } - return n, nil -} diff --git a/pkg/generator/csv.go b/pkg/generator/csv.go deleted file mode 100644 index ca4e3975..00000000 --- a/pkg/generator/csv.go +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Warp (C) 2019-2020 MinIO, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package generator - -import ( - "errors" - "fmt" - "math/rand" -) - -// WithCSV returns default CSV Opts -func WithCSV() CsvOpts { - return csvOptsDefaults() -} - -// Apply applies all the opts for CSVOpts -func (o CsvOpts) Apply() Option { - return func(opts *Options) error { - if err := o.validate(); err != nil { - return err - } - opts.csv = o - opts.src = newCsv - return nil - } -} - -func (o CsvOpts) validate() error { - if o.rows < 0 { - return errors.New("csv: rows <= 0") - } - if o.cols < 0 { - return errors.New("csv: cols <= 0") - } - if o.minLen > o.maxLen { - return fmt.Errorf("WithCSV.FieldLen: min:%d > max:%d", o.minLen, o.maxLen) - } - - return nil -} - -// Size sets the size of generated CSV. -func (o CsvOpts) Size(cols, rows int) CsvOpts { - o.rows = rows - o.cols = cols - return o -} - -// Comma sets the comma character. Only ASCII values should be used. -func (o CsvOpts) Comma(c byte) CsvOpts { - o.comma = c - return o -} - -// FieldLen sets the length of each field. -func (o CsvOpts) FieldLen(minSize, maxSize int) CsvOpts { - o.minLen = minSize - o.maxLen = maxSize - return o -} - -// RngSeed will which to a fixed RNG seed to make usage predictable. -func (o CsvOpts) RngSeed(s int64) CsvOpts { - o.seed = &s - return o -} - -// CsvOpts provides options for CSV generation. -type CsvOpts struct { - err error - seed *int64 - cols, rows int - minLen, maxLen int - comma byte -} - -func csvOptsDefaults() CsvOpts { - return CsvOpts{ - err: nil, - cols: 15, - rows: 1000, - comma: ',', - seed: nil, - minLen: 5, - maxLen: 15, - } -} - -type csvSource struct { - buf *circularBuffer - - // We may need a faster RNG for this... - rng *rand.Rand - obj Object - - o Options - builder []byte -} - -func newCsv(o Options) (Source, error) { - c := csvSource{ - o: o, - } - c.builder = make([]byte, 0, o.csv.maxLen+1) - c.buf = newCircularBuffer(make([]byte, o.csv.maxLen*(o.csv.cols+1)*(o.csv.rows+1)), o.totalSize) - rndSrc := rand.NewSource(int64(rand.Uint64())) - if o.csv.seed != nil { - rndSrc = rand.NewSource(*o.csv.seed) - } - c.rng = rand.New(rndSrc) - c.obj.ContentType = "text/csv" - c.obj.Size = 0 - c.obj.setPrefix(o) - - return &c, nil -} - -func (c *csvSource) Object() *Object { - opts := c.o.csv - dst := c.buf.data[:0] - c.obj.Size = c.o.getSize(c.rng) - for i := 0; i < opts.rows; i++ { - for j := 0; j < opts.cols; j++ { - fieldLen := 1 + opts.minLen - if opts.minLen != opts.maxLen { - fieldLen += c.rng.Intn(opts.maxLen - opts.minLen) - } - build := c.builder[:fieldLen] - randASCIIBytes(build[:fieldLen-1], c.rng) - build[fieldLen-1] = opts.comma - if j == opts.cols-1 { - build[fieldLen-1] = '\n' - } - dst = append(dst, build...) - } - } - c.buf.data = dst - c.obj.Reader = c.buf.Reset(0) - var nBuf [16]byte - randASCIIBytes(nBuf[:], c.rng) - c.obj.setName(string(nBuf[:]) + ".csv") - return &c.obj -} - -func (c *csvSource) String() string { - return fmt.Sprintf("CSV data. %d columns, %d rows.", c.o.csv.cols, c.o.csv.rows) -} - -func (c *csvSource) Prefix() string { - return c.obj.Prefix -} diff --git a/pkg/generator/generator_test.go b/pkg/generator/generator_test.go index 153e35e2..7bddefdb 100644 --- a/pkg/generator/generator_test.go +++ b/pkg/generator/generator_test.go @@ -41,14 +41,6 @@ func TestNew(t *testing.T) { wantErr: false, wantSize: 1 << 20, }, - { - name: "CSV", - args: args{ - opts: []Option{WithCSV().Apply()}, - }, - wantErr: false, - wantSize: 1 << 20, - }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -110,9 +102,9 @@ func TestNew(t *testing.T) { t.Errorf("New() size = %v, wantSize = %v", len(b), tt.wantSize) return } - n, err = obj.Reader.Seek(10, 1) - if err != io.EOF { - t.Errorf("Expected io.EOF, got %v", err) + n, err = obj.Reader.Seek(10, io.SeekCurrent) + if err != io.ErrUnexpectedEOF { + t.Errorf("Expected io.ErrUnexpectedEOF, got %v", err) return } if n != 0 { @@ -123,56 +115,6 @@ func TestNew(t *testing.T) { } } -func BenchmarkWithCSV(b *testing.B) { - type args struct { - opts []Option - } - tests := []struct { - name string - args args - }{ - { - name: "64KiB-5x100", - args: args{opts: []Option{WithSize(1 << 16), WithCSV().Size(5, 100).Apply()}}, - }, - { - name: "1MiB-10x500", - args: args{opts: []Option{WithSize(1 << 20), WithCSV().Size(10, 500).Apply()}}, - }, - { - name: "10MiB-50x1000", - args: args{opts: []Option{WithSize(10 << 20), WithCSV().Size(50, 1000).Apply()}}, - }, - } - for _, tt := range tests { - b.Run(tt.name, func(b *testing.B) { - got, err := New(tt.args.opts...) - if err != nil { - b.Errorf("New() error = %v", err) - return - } - obj := got.Object() - payload, err := io.ReadAll(obj.Reader) - if err != nil { - b.Errorf("ioutil error = %v", err) - return - } - b.SetBytes(int64(len(payload))) - // ioutil.WriteFile(tt.name+".csv", payload, os.ModePerm) - b.ReportAllocs() - b.ResetTimer() - for i := 0; i < b.N; i++ { - obj := got.Object() - _, err := io.Copy(io.Discard, obj.Reader) - if err != nil { - b.Errorf("New() error = %v", err) - return - } - } - }) - } -} - func BenchmarkWithRandomData(b *testing.B) { type args struct { opts []Option diff --git a/pkg/generator/options.go b/pkg/generator/options.go index 2673c9cf..377d0258 100644 --- a/pkg/generator/options.go +++ b/pkg/generator/options.go @@ -30,7 +30,6 @@ type Options struct { src func(o Options) (Source, error) customPrefix string random RandomOpts - csv CsvOpts minSize int64 totalSize int64 randomPrefix int @@ -61,7 +60,6 @@ func defaultOptions() Options { o := Options{ src: newRandom, totalSize: 1 << 20, - csv: csvOptsDefaults(), random: randomOptsDefaults(), randomPrefix: 0, } diff --git a/pkg/generator/random.go b/pkg/generator/random.go index 5a20dc40..8398c250 100644 --- a/pkg/generator/random.go +++ b/pkg/generator/random.go @@ -20,9 +20,10 @@ package generator import ( "errors" "fmt" - "io" "math/rand" "sync/atomic" + + "github.com/minio/pkg/v3/rng" ) func WithRandomData() RandomOpts { @@ -76,7 +77,7 @@ func randomOptsDefaults() RandomOpts { } type randomSrc struct { - buf *scrambler + source *rng.Reader rng *rand.Rand obj Object o Options @@ -88,7 +89,6 @@ func newRandom(o Options) (Source, error) { if o.random.seed != nil { rndSrc = rand.NewSource(*o.random.seed) } - rng := rand.New(rndSrc) size := o.random.size if int64(size) > o.totalSize { @@ -98,16 +98,14 @@ func newRandom(o Options) (Source, error) { return nil, fmt.Errorf("size must be >= 0, got %d", size) } - // Seed with random data. - data := make([]byte, size) - _, err := io.ReadFull(rng, data) + input, err := rng.NewReader(rng.WithRNG(rand.New(rndSrc)), rng.WithSize(o.totalSize)) if err != nil { return nil, err } r := randomSrc{ - o: o, - rng: rng, - buf: newScrambler(data, o.totalSize, rng), + o: o, + rng: rand.New(rndSrc), + source: input, obj: Object{ Reader: nil, Name: "", @@ -127,7 +125,8 @@ func (r *randomSrc) Object() *Object { r.obj.setName(fmt.Sprintf("%d.%s.rnd", atomic.LoadUint64(&r.counter), string(nBuf[:]))) // Reset scrambler - r.obj.Reader = r.buf.Reset(r.obj.Size) + r.source.ResetSize(r.obj.Size) + r.obj.Reader = r.source return &r.obj } @@ -135,7 +134,7 @@ func (r *randomSrc) String() string { if r.o.randSize { return fmt.Sprintf("Random data; random size up to %d bytes", r.o.totalSize) } - return fmt.Sprintf("Random data; %d bytes total", r.buf.want) + return fmt.Sprintf("Random data; %d bytes total", r.o.totalSize) } func (r *randomSrc) Prefix() string { diff --git a/pkg/generator/scambler.go b/pkg/generator/scambler.go deleted file mode 100644 index 2d8881fc..00000000 --- a/pkg/generator/scambler.go +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Warp (C) 2021 MinIO, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package generator - -import ( - "crypto/aes" - "crypto/cipher" - "errors" - "io" - "math" - "math/rand" - - "github.com/secure-io/sio-go" -) - -type scrambler struct { - // Data source - stream *sio.EncReader - // The total number of bytes to return - want int64 - // Number of bytes read - read int64 -} - -// Reset will reset the scrambler. -// The number of bytes to return can be specified. -// If the number of bytes wanted is <= 0 the value will not be updated. -func (c *scrambler) Reset(want int64) io.ReadSeeker { - if want > 0 { - c.want = want - } - c.read = 0 - return c -} - -// Implement seeker compatible circular buffer, -// implemented for minio-go to allow retries. -func (c *scrambler) Seek(offset int64, whence int) (n int64, err error) { - // Switch through whence. - switch whence { - default: - return 0, errors.New("circularBuffer.Seek: invalid whence") - case io.SeekStart: - if offset > c.want { - return 0, io.EOF - } - c.read = offset - case io.SeekCurrent: - if offset+c.read > c.want { - return 0, io.EOF - } - c.read += offset - case io.SeekEnd: - if offset > 0 { - return 0, io.EOF - } - if c.want+offset < 0 { - return 0, io.ErrShortBuffer - } - c.read = c.want + offset - } - if c.read < 0 { - return 0, errors.New("circularBuffer.Seek: negative position") - } - return c.read, nil -} - -// newCircularBuffer a reader that will produce (virtually) infinitely amounts of random data. -func newScrambler(data []byte, size int64, rng *rand.Rand) *scrambler { - var randSrc [16]byte - - _, err := io.ReadFull(rng, randSrc[:]) - if err != nil { - panic(err) - } - rand.New(rng).Read(randSrc[:]) - block, _ := aes.NewCipher(randSrc[:]) - gcm, _ := cipher.NewGCM(block) - stream := sio.NewStream(gcm, sio.BufSize) - - return &scrambler{ - want: size, - read: 0, - stream: stream.EncryptReader(newCircularBuffer(data, math.MaxInt64), randSrc[:stream.NonceSize()], nil), - } -} - -func (c *scrambler) Read(p []byte) (n int, err error) { - remain := c.want - c.read - if remain <= 0 { - if remain != 0 { - panic(remain) - } - return n, io.EOF - } - // Make sure we don't overread. - toDo := len(p) - if int64(toDo) > remain { - p = p[:remain] - } - copied, err := io.ReadFull(c.stream, p) - if err != nil { - return copied, err - } - // Assign remaining back to c.left - c.read += int64(copied) - if c.read == c.want { - return copied, io.EOF - } - return copied, nil -}