Add a major incremental build scenario to cuj metrics.

The mentioned scenario in b/152046247 would help to detect if there
is an incremental build issue.

Bug: b/145688720
Test: * m cuj_tests
      * Ran the cuj_tests and verified that the Intent.java file was
         touched. Unmarshalled the cuj_metrics.pb file and check if
	 the added scenario existed.
Change-Id: Ic6c335f005568dd77c99e4e1762383ec76d57ecb
This commit is contained in:
Patrice Arruda 2020-03-23 08:18:36 -07:00
parent 54c481ed62
commit f326139678

View file

@ -35,6 +35,7 @@ import (
type Test struct {
name string
args []string
before func() error
results TestResults
}
@ -119,6 +120,15 @@ func (t *Test) Run(logsDir string) {
t.results.metrics = met
}
// Touch the Intent.java file to cause a rebuild of the frameworks to monitor the
// incremental build speed as mentioned b/152046247. Intent.java file was chosen
// as it is a key component of the framework and is often modified.
func touchIntentFile() error {
const intentFileName = "frameworks/base/core/java/android/content/Intent.java"
currentTime := time.Now().Local()
return os.Chtimes(intentFileName, currentTime, currentTime)
}
func main() {
outDir := os.Getenv("OUT_DIR")
if outDir == "" {
@ -170,6 +180,36 @@ func main() {
name: "framework_rebuild_twice",
args: []string{"framework"},
},
{
// Scenario major_inc_build (b/152046247): tracking build speed of major incremental build.
name: "major_inc_build_droid",
args: []string{"droid"},
},
{
name: "major_inc_build_framework_minus_apex_after_droid_build",
args: []string{"framework-minus-apex"},
before: touchIntentFile,
},
{
name: "major_inc_build_framework_after_droid_build",
args: []string{"framework"},
before: touchIntentFile,
},
{
name: "major_inc_build_sync_after_droid_build",
args: []string{"sync"},
before: touchIntentFile,
},
{
name: "major_inc_build_droid_rebuild",
args: []string{"droid"},
before: touchIntentFile,
},
{
name: "major_inc_build_update_api_after_droid_rebuild",
args: []string{"update-api"},
before: touchIntentFile,
},
}
cujMetrics := metrics.NewCriticalUserJourneysMetrics()
@ -178,6 +218,12 @@ func main() {
for i, t := range tests {
logsSubDir := fmt.Sprintf("%02d_%s", i, t.name)
logsDir := filepath.Join(cujDir, "logs", logsSubDir)
if t.before != nil {
if err := t.before(); err != nil {
fmt.Printf("error running before function on test %q: %v\n", t.name, err)
break
}
}
t.Run(logsDir)
if t.results.err != nil {
fmt.Printf("error running test %q: %s\n", t.name, t.results.err)