Skip to content

Commit ea4f11f

Browse files
committed
Only run workers on traces with matching packages.
It is not scalable to run report and replay on every historical trace every time a new package shows up. Eventually Golden Traces will be used to run report and replay no matter the package, but for now lock the workers to only use the same package for all actions. Also remove the tracePackage dimension.
1 parent 9ac1158 commit ea4f11f

File tree

5 files changed

+37
-24
lines changed

5 files changed

+37
-24
lines changed

test/robot/monitor/trace.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,17 @@ func (t *Traces) All() []*Trace {
3636
return t.entries
3737
}
3838

39+
// MatchPackage returns the set of Trace objects that were traced with a specific package.
40+
func (t *Traces) MatchPackage(p *Package) []*Trace {
41+
result := []*Trace{}
42+
for _, trace := range t.entries {
43+
if trace.Input.Package == p.Id {
44+
result = append(result, trace)
45+
}
46+
}
47+
return result
48+
}
49+
3950
func (o *DataOwner) updateTrace(ctx context.Context, action *trace.Action) error {
4051
o.Write(func(data *Data) {
4152
entry, _ := data.Traces.FindOrCreate(ctx, action)

test/robot/scheduler/replay.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (s schedule) doReplay(ctx context.Context, t *monitor.Trace, tools *build.T
3737
Gapir: tools.Host.Gapir,
3838
VirtualSwapChainLib: tools.Host.VirtualSwapChainLib,
3939
VirtualSwapChainJson: tools.Host.VirtualSwapChainJson,
40-
Package: s.pkg.Id,
40+
Package: s.pkg.Id,
4141
}
4242
action := &replay.Action{
4343
Input: input,

test/robot/scheduler/scheduler.go

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -49,27 +49,31 @@ func Tick(ctx context.Context, managers *monitor.Managers, data *monitor.Data) [
4949
s.pkg = pkg
5050
for _, w := range data.Workers.All() {
5151
s.worker = w
52-
if tools := s.getHostTools(ctx); tools != nil {
53-
for _, subj := range data.Subjects.All() {
54-
if android_tools := s.getAndroidTools(ctx, subj); android_tools != nil {
55-
if err := s.doTrace(ctx, subj, tools, android_tools); err != nil {
56-
errs = append(errs, err)
57-
}
58-
}
52+
tools := s.getHostTools(ctx)
53+
if tools == nil {
54+
continue
55+
}
56+
for _, subj := range data.Subjects.All() {
57+
androidTools := s.getAndroidTools(ctx, subj)
58+
if androidTools == nil {
59+
continue
60+
}
61+
if err := s.doTrace(ctx, subj, tools, androidTools); err != nil {
62+
errs = append(errs, err)
63+
}
64+
}
65+
for _, t := range data.Traces.MatchPackage(s.pkg) {
66+
if t.Status != job.Succeeded {
67+
continue
68+
}
69+
if t.Output == nil {
70+
continue
71+
}
72+
if err := s.doReport(ctx, t, tools); err != nil {
73+
errs = append(errs, err)
5974
}
60-
for _, t := range data.Traces.All() {
61-
if t.Status != job.Succeeded {
62-
continue
63-
}
64-
if t.Output == nil {
65-
continue
66-
}
67-
if err := s.doReport(ctx, t, tools); err != nil {
68-
errs = append(errs, err)
69-
}
70-
if err := s.doReplay(ctx, t, tools); err != nil {
71-
errs = append(errs, err)
72-
}
75+
if err := s.doReplay(ctx, t, tools); err != nil {
76+
errs = append(errs, err)
7377
}
7478
}
7579
}

test/robot/web/client/client.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626

2727
type traceInfo struct {
2828
target Item
29-
pkg Item
3029
subject Item
3130
}
3231

@@ -46,7 +45,6 @@ func (t *task) Representation() interface{} {
4645
tr := map[string]interface{}{}
4746
tr["trace target"] = t.trace.target.Underlying()
4847
tr["trace subject"] = t.trace.subject.Underlying()
49-
tr["trace package"] = t.trace.pkg.Underlying()
5048
tr["host"] = t.host.Underlying()
5149
tr["package"] = t.pkg.Underlying()
5250
return []interface{}{tr, t.underlying}

test/robot/web/client/data.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ func clearDimensionData() {
170170
func newTask(entry map[string]interface{}, kind Item) *task {
171171
t := &task{
172172
underlying: entry,
173-
trace: traceInfo{target: nilItem, pkg: nilItem, subject: nilItem},
173+
trace: traceInfo{target: nilItem, subject: nilItem},
174174
kind: kind,
175175
host: nilItem,
176176
pkg: nilItem,

0 commit comments

Comments
 (0)