blob: 19626785accb8eb6e3a898fa3a72cc769e19fe3b [file] [log] [blame]
// Copyright 2022 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package bench
import (
"runtime"
"testing"
)
// TestPrintMemStats measures the memory usage of loading a project.
// It uses the same -didchange_dir flag as above.
// Always run it in isolation since it measures global heap usage.
//
// Kubernetes example:
//
// $ go test -v -run=TestPrintMemStats -workdir=$HOME/w/kubernetes
// TotalAlloc: 5766 MB
// HeapAlloc: 1984 MB
//
// Both figures exhibit variance of less than 1%.
func TestPrintMemStats(t *testing.T) {
// This test only makes sense when run in isolation, so for now it is
// manually skipped.
//
// TODO(rfindley): figure out a better way to capture memstats as a benchmark
// metric.
t.Skip("unskip to run this test manually")
_ = benchmarkEnv(t)
runtime.GC()
runtime.GC()
var mem runtime.MemStats
runtime.ReadMemStats(&mem)
t.Logf("TotalAlloc:\t%d MB", mem.TotalAlloc/1e6)
t.Logf("HeapAlloc:\t%d MB", mem.HeapAlloc/1e6)
}