internal/postgres: remove experiment code
Experiments are loaded via a config file.
Change-Id: Ief412709e78694146df160cd5f016524d95921eb
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/260098
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Julie Qiu <julie@golang.org>
diff --git a/internal/postgres/experiment.go b/internal/postgres/experiment.go
deleted file mode 100644
index 5729735..0000000
--- a/internal/postgres/experiment.go
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2019 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 postgres
-
-import (
- "context"
- "database/sql"
- "fmt"
-
- "golang.org/x/pkgsite/internal"
- "golang.org/x/pkgsite/internal/derrors"
-)
-
-// GetExperiments fetches all experiments in the database.
-func (db *DB) GetExperiments(ctx context.Context) (_ []*internal.Experiment, err error) {
- defer derrors.Wrap(&err, "DB.GetExperiments(ctx)")
-
- query := "SELECT name, rollout, description FROM experiments;"
- var experiments []*internal.Experiment
- err = db.db.RunQuery(ctx, query, func(rows *sql.Rows) error {
- var e internal.Experiment
- if err := rows.Scan(&e.Name, &e.Rollout, &e.Description); err != nil {
- return err
- }
- experiments = append(experiments, &e)
- return nil
- })
- return experiments, nil
-}
-
-// InsertExperiment inserts a row into the experiments table.
-func (db *DB) InsertExperiment(ctx context.Context, e *internal.Experiment) (err error) {
- defer derrors.Wrap(&err, "DB.insertExperiment(ctx, %v)", e)
- if e.Name == "" || e.Description == "" {
- return fmt.Errorf("neither name nor description can be empty: %w", derrors.InvalidArgument)
- }
-
- _, err = db.db.Exec(ctx,
- `INSERT INTO experiments
- (name, rollout, description) VALUES ($1, $2, $3);`,
- e.Name, e.Rollout, e.Description)
- return err
-}
-
-// UpdateExperiment updates the specified experiment with the provided rollout value.
-func (db *DB) UpdateExperiment(ctx context.Context, e *internal.Experiment) (err error) {
- defer derrors.Wrap(&err, "DB.UpdateExperiment(ctx, %v)", e)
- if e.Name == "" || e.Description == "" {
- return fmt.Errorf("neither name nor description can be empty: %w", derrors.InvalidArgument)
- }
-
- query := `UPDATE experiments
- SET rollout = $2, description = $3
- WHERE name = $1;`
- n, err := db.db.Exec(ctx, query, e.Name, e.Rollout, e.Description)
- if err != nil {
- return err
- }
- if n == 0 {
- return derrors.NotFound
- }
- return nil
-}
-
-// RemoveExperiment removes the specified experiment.
-func (db *DB) RemoveExperiment(ctx context.Context, name string) (err error) {
- defer derrors.Wrap(&err, "DB.RemoveExperiment(ctx, %q)", name)
- n, err := db.db.Exec(ctx, `DELETE FROM experiments WHERE name = $1`, name)
- if err != nil {
- return err
- }
- if n == 0 {
- return derrors.NotFound
- }
- return nil
-}
diff --git a/internal/postgres/experiment_test.go b/internal/postgres/experiment_test.go
deleted file mode 100644
index b17729f..0000000
--- a/internal/postgres/experiment_test.go
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2019 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 postgres
-
-import (
- "context"
- "errors"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "golang.org/x/pkgsite/internal"
- "golang.org/x/pkgsite/internal/derrors"
-)
-
-func TestGetActiveExperiments(t *testing.T) {
- defer ResetTestDB(testDB, t)
- ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
- defer cancel()
-
- experiment := &internal.Experiment{Name: "test-experiment", Description: "test-description"}
- if err := testDB.UpdateExperiment(ctx, experiment); !errors.Is(err, derrors.NotFound) {
- t.Fatalf("unexpected error when updating non-existent experiment: %v", err)
- }
- got, err := testDB.GetExperiments(ctx)
- if err != nil {
- t.Fatal(err)
- }
- if len(got) != 0 {
- t.Fatalf("got %d experiments; want = 0", len(got))
- }
- if err := testDB.InsertExperiment(ctx, experiment); err != nil {
- t.Fatalf("error inserting inactive experiment: %v", err)
- }
- got, err = testDB.GetExperiments(ctx)
- if err != nil {
- t.Fatal(err)
- }
- if len(got) != 1 {
- t.Fatalf("got %d experiments; want = 1", len(got))
- }
-
- experiment.Rollout = 50
- if err := testDB.UpdateExperiment(ctx, experiment); err != nil {
- t.Fatal(err)
- }
- got, err = testDB.GetExperiments(ctx)
- if err != nil {
- t.Fatal(err)
- }
- if len(got) != 1 {
- t.Fatalf("got = %d active experiments; want = 1", len(got))
- }
- if diff := cmp.Diff(experiment, got[0]); diff != "" {
- t.Fatalf("mismatch (-want +got):\n%s", diff)
- }
-
-}
-
-func TestCannotInsertRolloutGreaterThan100(t *testing.T) {
- defer ResetTestDB(testDB, t)
- ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
- defer cancel()
-
- experiment := &internal.Experiment{
- Name: "test-rollout-greater-than-one",
- Rollout: 101,
- Description: "test-description",
- }
- // Test cannot insert feature with rollout > 100.
- if err := testDB.InsertExperiment(ctx, experiment); err == nil {
- t.Fatal(err)
- }
-
- experiment.Rollout = 100
- if err := testDB.InsertExperiment(ctx, experiment); err != nil {
- t.Fatal(err)
- }
- // Test cannot update feature rollout to > 1.
- experiment.Rollout = 101
- if err := testDB.UpdateExperiment(ctx, experiment); err == nil {
- t.Fatal(err)
- }
-}