Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3261396 authored by Patrice Arruda's avatar Patrice Arruda
Browse files

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
parent 54c481ed
Loading
Loading
Loading
Loading
+48 −2
Original line number Diff line number Diff line
@@ -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)