Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(761)

Unified Diff: ct/go/worker_scripts/run_chromium_perf/main.go

Issue 1411423003: [CT] Add ability to run unlanded benchmarks on Chromium Perf (Closed) Base URL: https://skia.googlesource.com/buildbot@master
Patch Set: Add documentation link Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ct/go/worker_scripts/run_chromium_perf/main.go
diff --git a/ct/go/worker_scripts/run_chromium_perf/main.go b/ct/go/worker_scripts/run_chromium_perf/main.go
index 7282c4f602e31e597d860cacbe7adbac82035bc0..4dec26ed4a7b9b67652508c0829d8b69aad0fb69 100644
--- a/ct/go/worker_scripts/run_chromium_perf/main.go
+++ b/ct/go/worker_scripts/run_chromium_perf/main.go
@@ -6,6 +6,7 @@ import (
"encoding/csv"
"flag"
"fmt"
+ "io"
"io/ioutil"
"os"
"path/filepath"
@@ -34,6 +35,7 @@ var (
pagesetType = flag.String("pageset_type", util.PAGESET_TYPE_MOBILE_10k, "The type of pagesets to create from the Alexa CSV list. Eg: 10k, Mobile10k, All.")
chromiumBuildNoPatch = flag.String("chromium_build_nopatch", "", "The chromium build to use for the nopatch run.")
chromiumBuildWithPatch = flag.String("chromium_build_withpatch", "", "The chromium build to use for the withpatch run.")
+ runID = flag.String("run_id", "", "The unique run id (typically requester + timestamp).")
runIDNoPatch = flag.String("run_id_nopatch", "", "The unique run id (typically requester + timestamp) for the nopatch run.")
runIDWithPatch = flag.String("run_id_withpatch", "", "The unique run id (typically requester + timestamp) for the withpatch run.")
benchmarkName = flag.String("benchmark_name", "", "The telemetry benchmark to run on this worker.")
@@ -113,6 +115,38 @@ func main() {
return
}
+ // Download the benchmark patch for this run from Google storage.
+ benchmarkPatchName := *runID + ".benchmark.patch"
+ benchmarkPatchLocalPath := filepath.Join(os.TempDir(), benchmarkPatchName)
+ remoteDir := filepath.Join(util.ChromiumPerfRunsDir, *runID)
+ benchmarkPatchRemotePath := filepath.Join(remoteDir, benchmarkPatchName)
+ respBody, err := gs.GetRemoteFileContents(benchmarkPatchRemotePath)
+ if err != nil {
+ glog.Errorf("Could not fetch %s: %s", benchmarkPatchRemotePath, err)
+ return
+ }
+ defer skutil.Close(respBody)
+ out, err := os.Create(benchmarkPatchLocalPath)
dogben 2015/10/20 15:17:26 Seems like you could use os.WriteFile. https://gol
rmistry 2015/10/20 17:47:48 Done.
+ if err != nil {
+ glog.Errorf("Unable to create file %s: %s", benchmarkPatchLocalPath, err)
+ return
+ }
+ defer skutil.Close(out)
+ defer skutil.Remove(benchmarkPatchLocalPath)
+ if _, err = io.Copy(out, respBody); err != nil {
+ glog.Error(err)
+ return
+ }
+ // Apply benchmark patch to the local chromium checkout.
+ benchmarkPatchFile, _ := os.Open(benchmarkPatchLocalPath)
dogben 2015/10/20 15:17:26 Use os.Stat. https://golang.org/pkg/os/#Stat (Or d
rmistry 2015/10/20 17:47:48 Done.
dogben 2015/10/20 18:14:08 Nit: You actually have the size from buf above, so
rmistry 2015/10/21 12:32:47 Done.
+ benchmarkPatchFileInfo, _ := benchmarkPatchFile.Stat()
+ if benchmarkPatchFileInfo.Size() > 10 {
+ if err := util.ApplyPatch(benchmarkPatchLocalPath, util.ChromiumSrcDir); err != nil {
+ glog.Errorf("Could not apply Telemetry's patch in %s: %s", util.ChromiumSrcDir, err)
+ return
+ }
+ }
+
// Download the specified chromium builds.
for _, chromiumBuild := range []string{*chromiumBuildNoPatch, *chromiumBuildWithPatch} {
if err := gs.DownloadChromiumBuild(chromiumBuild); err != nil {
@@ -253,9 +287,14 @@ func runBenchmark(fileInfoName, pathToPagesets, pathToPyFiles, localOutputDir, c
}
glog.Infof("===== Processing %s for %s =====", pagesetPath, runID)
+ pagesetName, present := util.BenchmarksToPagesetName[*benchmarkName]
+ if !present {
+ // If it is custom benchmark use the entered benchmark name.
+ pagesetName = *benchmarkName
+ }
args := []string{
filepath.Join(util.TelemetryBinariesDir, util.BINARY_RUN_BENCHMARK),
- util.BenchmarksToPagesetName[*benchmarkName],
+ pagesetName,
"--also-run-disabled-tests",
"--user-agent=" + decodedPageset.UserAgent,
"--urls-list=" + decodedPageset.UrlsList,

Powered by Google App Engine
This is Rietveld 408576698