| // 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 ( |
| "context" |
| "testing" |
| |
| "golang.org/x/tools/gopls/internal/lsp/fake" |
| . "golang.org/x/tools/gopls/internal/lsp/regtest" |
| ) |
| |
| // BenchmarkInitialWorkspaceLoad benchmarks the initial workspace load time for |
| // a new editing session. |
| func BenchmarkInitialWorkspaceLoad(b *testing.B) { |
| dir := benchmarkDir() |
| b.ResetTimer() |
| |
| ctx := context.Background() |
| for i := 0; i < b.N; i++ { |
| _, editor, awaiter, err := connectEditor(dir, fake.EditorConfig{}) |
| if err != nil { |
| b.Fatal(err) |
| } |
| if err := awaiter.Await(ctx, InitialWorkspaceLoad); err != nil { |
| b.Fatal(err) |
| } |
| b.StopTimer() |
| if err := editor.Close(ctx); err != nil { |
| b.Fatal(err) |
| } |
| b.StartTimer() |
| } |
| } |