aboutsummaryrefslogtreecommitdiff
path: root/devtools
diff options
context:
space:
mode:
authorJulie Qiu <julie@golang.org>2020-10-23 19:27:35 -0400
committerJulie Qiu <julie@golang.org>2020-10-27 16:55:55 +0000
commitb158f01f450de52ad6fb007db3e0a9c8bc6fe7d6 (patch)
tree8d8443c7f4a3c5533ea0141f41aa40dae3c810df /devtools
parent4455cb8afd9e45b3054f8127afdf207b265c7f2a (diff)
downloadgo-x-pkgsite-b158f01f450de52ad6fb007db3e0a9c8bc6fe7d6.tar.xz
all: add tool for enabling all experiments
A script is added to create an experiment.yaml file which will enable all experiments. Documentation on how to enable experiments is consolidated in experiment.md. Instructions on how to use this script is added. Change-Id: I46dc75a5f84d3100b8ecb45453f803afab5c19af Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/264757 Trust: Julie Qiu <julie@golang.org> Run-TryBot: Julie Qiu <julie@golang.org> TryBot-Result: kokoro <noreply+kokoro@google.com> Reviewed-by: Jonathan Amsterdam <jba@google.com>
Diffstat (limited to 'devtools')
-rw-r--r--devtools/cmd/create_experiment_config/main.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/devtools/cmd/create_experiment_config/main.go b/devtools/cmd/create_experiment_config/main.go
new file mode 100644
index 00000000..5a7a2962
--- /dev/null
+++ b/devtools/cmd/create_experiment_config/main.go
@@ -0,0 +1,70 @@
+// Copyright 2020 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.
+
+// Command create_experiment_config creates an experiment.yaml file, which will
+// set a rollout of 100 for all experiments.
+package main
+
+import (
+ "fmt"
+ "log"
+ "os"
+ "sort"
+ "strings"
+
+ "github.com/ghodss/yaml"
+ "golang.org/x/pkgsite/internal"
+)
+
+type Experiment struct {
+ Name string `yaml:"name"`
+ Rollout int `yaml:"rollout"`
+}
+
+func main() {
+ data, err := experimentsYAML()
+ if err != nil {
+ log.Fatal(err)
+ }
+ if err := writeConfigFile(data); err != nil {
+ log.Fatal(err)
+ }
+}
+
+func experimentsYAML() ([]byte, error) {
+ var exps []*Experiment
+ for e := range internal.Experiments {
+ exps = append(exps, &Experiment{
+ Name: e,
+ Rollout: 100,
+ })
+ }
+ sort.Slice(exps, func(i, j int) bool { return exps[i].Name < exps[j].Name })
+ data := map[string][]*Experiment{"experiments": exps}
+ return yaml.Marshal(&data)
+}
+
+const filename = "experiment.yaml"
+
+func writeConfigFile(data []byte) error {
+ path, err := os.Getwd()
+ if err != nil {
+ return err
+ }
+ p := strings.TrimSuffix(path, "/devtools/cmd/run_beta") + "/experiment.yaml"
+ f, err := os.Create(p)
+ if err != nil {
+ return err
+ }
+ if _, err = f.Write(data); err != nil {
+ // Ignore f.Close() error, since f.Write returned an error.
+ _ = f.Close()
+ return err
+ }
+ if err := f.Close(); err != nil {
+ return err
+ }
+ fmt.Printf("Set `export GO_DISCOVERY_CONFIG_DYNAMIC=%q` to enable experiments.\n", p)
+ return nil
+}