internal/godoc: remove faster-decoding experiment
Change-Id: I89619d03d6a3eb432ed3b215047ebe436634296d
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/278294
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Julie Qiu <julie@golang.org>
diff --git a/internal/experiment.go b/internal/experiment.go
index 22c4bdd..74cf726 100644
--- a/internal/experiment.go
+++ b/internal/experiment.go
@@ -7,7 +7,6 @@
const (
ExperimentAutocomplete = "autocomplete"
- ExperimentFasterDecoding = "faster-decoding"
ExperimentGoldmark = "goldmark"
ExperimentReadmeOutline = "readme-outline"
ExperimentUnitSidebarDetails = "unit-sidebar-details"
@@ -17,7 +16,6 @@
// a description of each experiment.
var Experiments = map[string]string{
ExperimentAutocomplete: "Enable autocomplete with search.",
- ExperimentFasterDecoding: "Decode ASTs faster.",
ExperimentGoldmark: "Enable the usage of rendering markdown using goldmark instead of blackfriday.",
ExperimentReadmeOutline: "Enable the readme outline in the side nav.",
ExperimentUnitSidebarDetails: "Enable the details section in the right sidebar.",
diff --git a/internal/godoc/encode.go b/internal/godoc/encode.go
index 4da829d..ae717cc 100644
--- a/internal/godoc/encode.go
+++ b/internal/godoc/encode.go
@@ -8,16 +8,13 @@
"bytes"
"context"
"encoding/gob"
- "errors"
"fmt"
"go/ast"
"go/token"
"io"
"sort"
- "golang.org/x/pkgsite/internal"
"golang.org/x/pkgsite/internal/derrors"
- "golang.org/x/pkgsite/internal/experiment"
"golang.org/x/pkgsite/internal/godoc/codec"
)
@@ -102,37 +99,7 @@
// rendering before it returns.
func (p *Package) Encode(ctx context.Context) (_ []byte, err error) {
defer derrors.Wrap(&err, "godoc.Package.Encode()")
-
- if experiment.IsActive(ctx, internal.ExperimentFasterDecoding) {
- return p.fastEncode()
- } else {
- return p.gobEncode()
- }
-}
-
-func (p *Package) gobEncode() (_ []byte, err error) {
- if p.renderCalled {
- return nil, errors.New("can't Encode after Render")
- }
-
- for _, f := range p.Files {
- removeCycles(f)
- }
-
- var buf bytes.Buffer
- io.WriteString(&buf, gobEncodingType)
- enc := gob.NewEncoder(&buf)
- // Encode the fset using the Write method it provides.
- if err := p.Fset.Write(enc.Encode); err != nil {
- return nil, fmt.Errorf("p.Fset.Write: %v", err)
- }
- if err := enc.Encode(p.encPackage); err != nil {
- return nil, fmt.Errorf("enc.Encode: %v", err)
- }
- for _, f := range p.Files {
- fixupObjects(f)
- }
- return buf.Bytes(), nil
+ return p.fastEncode()
}
// DecodPackage decodes a byte slice encoded with Package.Encode into a Package.
diff --git a/internal/godoc/encode_test.go b/internal/godoc/encode_test.go
index 43c424b..3a318ec 100644
--- a/internal/godoc/encode_test.go
+++ b/internal/godoc/encode_test.go
@@ -7,6 +7,8 @@
import (
"bytes"
"context"
+ "encoding/gob"
+ "errors"
"fmt"
"go/ast"
"go/parser"
@@ -20,19 +22,17 @@
"testing"
"github.com/google/go-cmp/cmp"
- "golang.org/x/pkgsite/internal"
- "golang.org/x/pkgsite/internal/experiment"
)
var packageToTest string = filepath.Join(runtime.GOROOT(), "src", "net", "http")
func TestEncodeDecodePackage(t *testing.T) {
- // Verify that we can encode and decode the Go files in this directory.
- p, err := packageForDir(".", true)
+ p, err := packageForDir(packageToTest, true)
if err != nil {
t.Fatal(err)
}
-
+ var want, got bytes.Buffer
+ printPackage(&want, p)
data, err := p.Encode(context.Background())
if err != nil {
t.Fatal(err)
@@ -41,12 +41,11 @@
if err != nil {
t.Fatal(err)
}
- data2, err := p2.Encode(context.Background())
- if err != nil {
- t.Fatal(err)
- }
- if !bytes.Equal(data, data2) {
- t.Fatal("datas unequal")
+ printPackage(&got, p2)
+ // Diff the textual output of printPackage, because cmp.Diff takes too long
+ // on the Packages themselves.
+ if diff := cmp.Diff(want.String(), got.String()); diff != "" {
+ t.Errorf("package differs after decoding (-want, +got):\n%s", diff)
}
}
@@ -133,29 +132,6 @@
}
}
-func TestFastEncode(t *testing.T) {
- p, err := packageForDir(packageToTest, true)
- if err != nil {
- t.Fatal(err)
- }
- var want, got bytes.Buffer
- printPackage(&want, p)
- data, err := p.Encode(experiment.NewContext(context.Background(), internal.ExperimentFasterDecoding))
- if err != nil {
- t.Fatal(err)
- }
- p2, err := DecodePackage(data)
- if err != nil {
- t.Fatal(err)
- }
- printPackage(&got, p2)
- // Diff the textual output of printPackage, because cmp.Diff takes too long
- // on the Packages themselves.
- if diff := cmp.Diff(want.String(), got.String()); diff != "" {
- t.Errorf("package differs after decoding (-want, +got):\n%s", diff)
- }
-}
-
// printPackage outputs a human-readable form of p to w, deterministically. (The
// ast.Fprint function does not print ASTs deterministically: it is subject to
// random-order map iteration.) The output is designed to be diffed.
@@ -345,3 +321,28 @@
})
return err
}
+
+func (p *Package) gobEncode() (_ []byte, err error) {
+ if p.renderCalled {
+ return nil, errors.New("can't Encode after Render")
+ }
+
+ for _, f := range p.Files {
+ removeCycles(f)
+ }
+
+ var buf bytes.Buffer
+ io.WriteString(&buf, gobEncodingType)
+ enc := gob.NewEncoder(&buf)
+ // Encode the fset using the Write method it provides.
+ if err := p.Fset.Write(enc.Encode); err != nil {
+ return nil, fmt.Errorf("p.Fset.Write: %v", err)
+ }
+ if err := enc.Encode(p.encPackage); err != nil {
+ return nil, fmt.Errorf("enc.Encode: %v", err)
+ }
+ for _, f := range p.Files {
+ fixupObjects(f)
+ }
+ return buf.Bytes(), nil
+}
diff --git a/internal/godoc/render_test.go b/internal/godoc/render_test.go
index c9b518b..a2d3958 100644
--- a/internal/godoc/render_test.go
+++ b/internal/godoc/render_test.go
@@ -12,8 +12,6 @@
"github.com/google/go-cmp/cmp"
"github.com/google/safehtml/template"
- "golang.org/x/pkgsite/internal"
- "golang.org/x/pkgsite/internal/experiment"
"golang.org/x/pkgsite/internal/godoc/dochtml"
"golang.org/x/pkgsite/internal/source"
"golang.org/x/pkgsite/internal/testing/sample"
@@ -24,15 +22,6 @@
func TestRender(t *testing.T) {
dochtml.LoadTemplates(templateSource)
ctx := context.Background()
- t.Run("gob", func(t *testing.T) {
- testRender(t, ctx)
- })
- t.Run("fast", func(t *testing.T) {
- testRender(t, experiment.NewContext(ctx, internal.ExperimentFasterDecoding))
- })
-}
-
-func testRender(t *testing.T, ctx context.Context) {
si := source.NewGitHubInfo(sample.ModulePath, "", "abcde")
mi := &ModuleInfo{
ModulePath: sample.ModulePath,