internal/regtest/bench: add benchmark tests for gopls
Change-Id: Ic25fdfde6a7236eee488299e24d8fe440fffc4ac
Reviewed-on: https://go-review.googlesource.com/c/tools/+/450555
gopls-CI: kokoro <noreply+kokoro@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Run-TryBot: Dylan Le <dungtuanle@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/gopls/internal/regtest/bench/editor_features_test.go b/gopls/internal/regtest/bench/editor_features_test.go
new file mode 100644
index 0000000..92df344
--- /dev/null
+++ b/gopls/internal/regtest/bench/editor_features_test.go
@@ -0,0 +1,55 @@
+// 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 (
+ "fmt"
+ "testing"
+)
+
+func BenchmarkGoToDefinition(b *testing.B) {
+ env := benchmarkEnv(b)
+
+ env.OpenFile("internal/imports/mod.go")
+ pos := env.RegexpSearch("internal/imports/mod.go", "ModuleJSON")
+ env.GoToDefinition("internal/imports/mod.go", pos)
+ env.Await(env.DoneWithOpen())
+
+ b.ResetTimer()
+
+ for i := 0; i < b.N; i++ {
+ env.GoToDefinition("internal/imports/mod.go", pos)
+ }
+}
+
+func BenchmarkFindAllReferences(b *testing.B) {
+ env := benchmarkEnv(b)
+
+ env.OpenFile("internal/imports/mod.go")
+ pos := env.RegexpSearch("internal/imports/mod.go", "gopathwalk")
+ env.References("internal/imports/mod.go", pos)
+ env.Await(env.DoneWithOpen())
+
+ b.ResetTimer()
+
+ for i := 0; i < b.N; i++ {
+ env.References("internal/imports/mod.go", pos)
+ }
+}
+
+func BenchmarkRename(b *testing.B) {
+ env := benchmarkEnv(b)
+
+ env.OpenFile("internal/imports/mod.go")
+ env.Await(env.DoneWithOpen())
+
+ b.ResetTimer()
+
+ for i := 0; i < b.N; i++ {
+ pos := env.RegexpSearch("internal/imports/mod.go", "gopathwalk")
+ newName := fmt.Sprintf("%s%d", "gopathwalk", i)
+ env.Rename("internal/imports/mod.go", pos, newName)
+ }
+}