diff options
| author | Julie Qiu <julie@golang.org> | 2020-10-23 19:27:35 -0400 |
|---|---|---|
| committer | Julie Qiu <julie@golang.org> | 2020-10-27 16:55:55 +0000 |
| commit | b158f01f450de52ad6fb007db3e0a9c8bc6fe7d6 (patch) | |
| tree | 8d8443c7f4a3c5533ea0141f41aa40dae3c810df /devtools/cmd | |
| parent | 4455cb8afd9e45b3054f8127afdf207b265c7f2a (diff) | |
| download | go-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/cmd')
| -rw-r--r-- | devtools/cmd/create_experiment_config/main.go | 70 |
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 +} |
