Add --local flag to perf-tool.
Change-Id: I4ef99527f2a75f9bc99a9ee9946c51b15e106b34
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/303796
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
diff --git a/perf/go/builders/builders.go b/perf/go/builders/builders.go
index f50ef27..a9ccfc7 100644
--- a/perf/go/builders/builders.go
+++ b/perf/go/builders/builders.go
@@ -220,9 +220,13 @@
// the InstanceConfig.
//
// If local is true then we aren't running in production.
-func NewRegressionStoreFromConfig(local bool, cidl *cid.CommitIDLookup, instanceConfig *config.InstanceConfig) (regression.Store, error) {
+func NewRegressionStoreFromConfig(ctx context.Context, local bool, cidl *cid.CommitIDLookup, instanceConfig *config.InstanceConfig) (regression.Store, error) {
switch instanceConfig.DataStoreConfig.DataStoreType {
case config.GCPDataStoreType:
+ if err := initCloudDatastoreOnce(ctx, local, instanceConfig); err != nil {
+ return nil, skerr.Wrap(err)
+ }
+
lookup := func(ctx context.Context, c *cid.CommitID) (*cid.CommitDetail, error) {
details, err := cidl.Lookup(ctx, []*cid.CommitID{c})
if err != nil {
@@ -249,9 +253,13 @@
// NewShortcutStoreFromConfig creates a new shortcut.Store from the
// InstanceConfig.
-func NewShortcutStoreFromConfig(instanceConfig *config.InstanceConfig) (shortcut.Store, error) {
+func NewShortcutStoreFromConfig(ctx context.Context, local bool, instanceConfig *config.InstanceConfig) (shortcut.Store, error) {
switch instanceConfig.DataStoreConfig.DataStoreType {
case config.GCPDataStoreType:
+ if err := initCloudDatastoreOnce(ctx, local, instanceConfig); err != nil {
+ return nil, skerr.Wrap(err)
+ }
+
return dsshortcutstore.New(), nil
case config.SQLite3DataStoreType:
db, err := newSQLite3DBFromConfig(instanceConfig)
diff --git a/perf/go/builders/builders_test.go b/perf/go/builders/builders_test.go
index cb1dad4..9c61158 100644
--- a/perf/go/builders/builders_test.go
+++ b/perf/go/builders/builders_test.go
@@ -202,10 +202,10 @@
func TestNewRegressionStoreFromConfig_Sqlite3_Success(t *testing.T) {
unittest.LargeTest(t)
- _, instanceConfig, cleanup := newSqlite3ConfigForTest(t)
+ ctx, instanceConfig, cleanup := newSqlite3ConfigForTest(t)
defer cleanup()
- store, err := NewRegressionStoreFromConfig(false, nil, instanceConfig)
+ store, err := NewRegressionStoreFromConfig(ctx, false, nil, instanceConfig)
require.NoError(t, err)
regressiontest.SetLowAndTriage(t, store)
@@ -213,10 +213,10 @@
func TestNewRegressionStoreFromConfig_CochroachDB_Success(t *testing.T) {
unittest.LargeTest(t)
- _, instanceConfig, cleanup := newSqlite3ConfigForTest(t)
+ ctx, instanceConfig, cleanup := newSqlite3ConfigForTest(t)
defer cleanup()
- store, err := NewRegressionStoreFromConfig(false, nil, instanceConfig)
+ store, err := NewRegressionStoreFromConfig(ctx, false, nil, instanceConfig)
require.NoError(t, err)
regressiontest.SetLowAndTriage(t, store)
@@ -224,23 +224,23 @@
func TestNewRegressionStoreFromConfig_InvalidDatastoreTypeIsError(t *testing.T) {
unittest.LargeTest(t)
- _, instanceConfig, cleanup := newSqlite3ConfigForTest(t)
+ ctx, instanceConfig, cleanup := newSqlite3ConfigForTest(t)
defer cleanup()
const invalidDataStoreType = config.DataStoreType("not-a-valid-datastore-type")
instanceConfig.DataStoreConfig.DataStoreType = invalidDataStoreType
- _, err := NewRegressionStoreFromConfig(false, nil, instanceConfig)
+ _, err := NewRegressionStoreFromConfig(ctx, false, nil, instanceConfig)
require.Error(t, err)
assert.Contains(t, err.Error(), invalidDataStoreType)
}
func TestNewShortcutStoreFromConfig_GCPDatastore_Success(t *testing.T) {
unittest.ManualTest(t)
- _, instanceConfig, cleanup := newGCPDatastoreConfigForTest(t, ds.SHORTCUT)
+ ctx, instanceConfig, cleanup := newGCPDatastoreConfigForTest(t, ds.SHORTCUT)
defer cleanup()
- store, err := NewShortcutStoreFromConfig(instanceConfig)
+ store, err := NewShortcutStoreFromConfig(ctx, false, instanceConfig)
require.NoError(t, err)
shortcuttest.InsertGet(t, store)
@@ -248,10 +248,10 @@
func TestNewShortcutStoreFromConfig_Sqlite3_Success(t *testing.T) {
unittest.LargeTest(t)
- _, instanceConfig, cleanup := newSqlite3ConfigForTest(t)
+ ctx, instanceConfig, cleanup := newSqlite3ConfigForTest(t)
defer cleanup()
- store, err := NewShortcutStoreFromConfig(instanceConfig)
+ store, err := NewShortcutStoreFromConfig(ctx, false, instanceConfig)
require.NoError(t, err)
shortcuttest.InsertGet(t, store)
@@ -259,10 +259,10 @@
func TestNewShortcutStoreFromConfig_CockroachDB_Success(t *testing.T) {
unittest.LargeTest(t)
- _, instanceConfig, cleanup := newCockroachDBConfigForTest(t)
+ ctx, instanceConfig, cleanup := newCockroachDBConfigForTest(t)
defer cleanup()
- store, err := NewShortcutStoreFromConfig(instanceConfig)
+ store, err := NewShortcutStoreFromConfig(ctx, false, instanceConfig)
require.NoError(t, err)
shortcuttest.InsertGet(t, store)
@@ -270,13 +270,13 @@
func TestNewShortcutStoreFromConfig_Sqlite3_InvalidDatastoreTypeIsError(t *testing.T) {
unittest.LargeTest(t)
- _, instanceConfig, cleanup := newSqlite3ConfigForTest(t)
+ ctx, instanceConfig, cleanup := newSqlite3ConfigForTest(t)
defer cleanup()
const invalidDataStoreType = config.DataStoreType("not-a-valid-datastore-type")
instanceConfig.DataStoreConfig.DataStoreType = invalidDataStoreType
- _, err := NewShortcutStoreFromConfig(instanceConfig)
+ _, err := NewShortcutStoreFromConfig(ctx, false, instanceConfig)
require.Error(t, err)
assert.Contains(t, err.Error(), invalidDataStoreType)
}
diff --git a/perf/go/frontend/frontend.go b/perf/go/frontend/frontend.go
index 4cad8e0..aa34f35 100644
--- a/perf/go/frontend/frontend.go
+++ b/perf/go/frontend/frontend.go
@@ -368,7 +368,7 @@
if err != nil {
sklog.Fatal(err)
}
- f.shortcutStore, err = builders.NewShortcutStoreFromConfig(config.Config)
+ f.shortcutStore, err = builders.NewShortcutStoreFromConfig(ctx, f.flags.Local, config.Config)
if err != nil {
sklog.Fatal(err)
}
@@ -385,7 +385,7 @@
f.frameRequests = dataframe.NewRunningFrameRequests(f.perfGit, f.dfBuilder, f.shortcutStore)
f.clusterRequests = regression.NewRunningRegressionDetectionRequests(f.perfGit, f.cidl, float32(f.flags.Interesting), f.dfBuilder, f.shortcutStore)
- f.regStore, err = builders.NewRegressionStoreFromConfig(f.flags.Local, f.cidl, cfg)
+ f.regStore, err = builders.NewRegressionStoreFromConfig(ctx, f.flags.Local, f.cidl, cfg)
if err != nil {
sklog.Fatalf("Failed to build regression.Store: %s", err)
}
diff --git a/perf/go/perf-tool/main.go b/perf/go/perf-tool/main.go
index fc8bc68..f585894 100644
--- a/perf/go/perf-tool/main.go
+++ b/perf/go/perf-tool/main.go
@@ -39,6 +39,7 @@
traceStore tracestore.TraceStore
configFilename string
instanceConfig *config.InstanceConfig
+ local bool
)
// flags
@@ -58,6 +59,7 @@
outputFilenameFlag string = "out"
inputFilenameFlag string = "in"
backupToDateFlag string = "backup_to_date"
+ databaseLocalFlag string = "local"
regressionBatchSize = 1000
)
@@ -93,6 +95,7 @@
},
}
cmd.PersistentFlags().StringVar(&configFilename, "config_filename", "", "The filename of the config file to use.")
+ cmd.PersistentFlags().BoolVar(&local, "local", true, "If true then use glcloud credentials.")
configCmd := &cobra.Command{
Use: "config [sub]",
@@ -285,7 +288,7 @@
defer util.Close(f)
z := zip.NewWriter(f)
- alertStore, err := builders.NewAlertStoreFromConfig(ctx, true, instanceConfig)
+ alertStore, err := builders.NewAlertStoreFromConfig(ctx, local, instanceConfig)
if err != nil {
return err
}
@@ -340,7 +343,7 @@
}
shortcutsEncoder := gob.NewEncoder(shortcutsZipWriter)
- shortcutStore, err := builders.NewShortcutStoreFromConfig(instanceConfig)
+ shortcutStore, err := builders.NewShortcutStoreFromConfig(ctx, local, instanceConfig)
if err != nil {
return err
}
@@ -416,7 +419,7 @@
return err
}
cidl := cid.New(ctx, perfGit, config.Config)
- regressionStore, err := builders.NewRegressionStoreFromConfig(true, cidl, instanceConfig)
+ regressionStore, err := builders.NewRegressionStoreFromConfig(ctx, true, cidl, instanceConfig)
if err != nil {
return err
}
@@ -546,7 +549,7 @@
defer util.Close(z)
// Restore shortcuts.
- shortcutStore, err := builders.NewShortcutStoreFromConfig(instanceConfig)
+ shortcutStore, err := builders.NewShortcutStoreFromConfig(ctx, local, instanceConfig)
if err != nil {
return err
}
@@ -603,7 +606,7 @@
return err
}
cidl := cid.New(ctx, perfGit, config.Config)
- regressionStore, err := builders.NewRegressionStoreFromConfig(true, cidl, instanceConfig)
+ regressionStore, err := builders.NewRegressionStoreFromConfig(ctx, true, cidl, instanceConfig)
if err != nil {
return err
}