blob: 3cf03b4758795e81f273e114778032982a819090 [file] [log] [blame]
// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package arc
import (
"testing"
"chromiumos/tast/common/genparams"
)
func TestPowerVideoEncodePerfParamsAreGenerated(t *testing.T) {
type valMember struct {
Key string
Value string
}
type paramData struct {
Name string
SoftwareDeps []string
HardwareDeps []string
Pre string
Val []valMember
Attr []string
}
var params []paramData
for _, batteryMode := range []struct {
name string
hwdep string
val []valMember
}{
{
hwdep: "hwdep.ForceDischarge()",
val: []valMember{{"BatteryDischargeMode", "setup.ForceBatteryDischarge"}},
},
{
name: "nobatterymetrics",
hwdep: "hwdep.NoForceDischarge()",
val: []valMember{{"BatteryDischargeMode", "setup.NoBatteryDischarge"}},
},
} {
const arcBooted = "arc.Booted()"
for _, arcType := range []struct {
name string
swdep string
pre string
attr []string
}{
{
swdep: "android_p",
pre: arcBooted,
attr: []string{"group:crosbolt", "crosbolt_nightly"},
},
{
name: "vm",
swdep: "android_vm",
pre: arcBooted,
},
} {
name := genTestName([]string{
"h264_1080p_i420",
arcType.name,
batteryMode.name,
})
p := paramData{
Name: string(name),
SoftwareDeps: []string{arcType.swdep},
HardwareDeps: []string{batteryMode.hwdep},
Pre: arcType.pre,
Val: append([]valMember{
{"Profile", "videotype.H264MainProf"},
{"Params", "video.Crowd1080P"},
{"PixelFormat", "videotype.I420"},
}, batteryMode.val...),
Attr: arcType.attr,
}
params = append(params, p)
}
}
code := genparams.Template(t, `{{ range . }}{
Name: {{ .Name | fmt }},
Val: video.EncodeTestOptions{
{{ range .Val }}{{ .Key }}: {{ .Value }},
{{ end }}
},
ExtraData: []string{video.Crowd1080P.Name},
{{ if .SoftwareDeps }}
ExtraSoftwareDeps: {{ .SoftwareDeps | fmt }},
{{ end }}
ExtraHardwareDeps: hwdep.D({{ range .HardwareDeps }}{{ . }},{{ end }}),
{{ if .Attr }}
ExtraAttr: {{ .Attr | fmt }},
{{ end }}
},
{{ end }}`, params)
genparams.Ensure(t, "power_video_encode_perf.go", code)
}