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:
50
cuj/cuj.go
50
cuj/cuj.go
@@ -33,8 +33,9 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Test struct {
|
type Test struct {
|
||||||
name string
|
name string
|
||||||
args []string
|
args []string
|
||||||
|
before func() error
|
||||||
|
|
||||||
results TestResults
|
results TestResults
|
||||||
}
|
}
|
||||||
@@ -119,6 +120,15 @@ func (t *Test) Run(logsDir string) {
|
|||||||
t.results.metrics = met
|
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() {
|
func main() {
|
||||||
outDir := os.Getenv("OUT_DIR")
|
outDir := os.Getenv("OUT_DIR")
|
||||||
if outDir == "" {
|
if outDir == "" {
|
||||||
@@ -170,6 +180,36 @@ func main() {
|
|||||||
name: "framework_rebuild_twice",
|
name: "framework_rebuild_twice",
|
||||||
args: []string{"framework"},
|
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()
|
cujMetrics := metrics.NewCriticalUserJourneysMetrics()
|
||||||
@@ -178,6 +218,12 @@ func main() {
|
|||||||
for i, t := range tests {
|
for i, t := range tests {
|
||||||
logsSubDir := fmt.Sprintf("%02d_%s", i, t.name)
|
logsSubDir := fmt.Sprintf("%02d_%s", i, t.name)
|
||||||
logsDir := filepath.Join(cujDir, "logs", logsSubDir)
|
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)
|
t.Run(logsDir)
|
||||||
if t.results.err != nil {
|
if t.results.err != nil {
|
||||||
fmt.Printf("error running test %q: %s\n", t.name, t.results.err)
|
fmt.Printf("error running test %q: %s\n", t.name, t.results.err)
|
||||||
|
Reference in New Issue
Block a user